mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-12-10 00:30:02 -06:00
Merge branch 'next' into MA-speaker
This commit is contained in:
commit
831ddcdf59
5
.github/copilot-instructions.md
vendored
5
.github/copilot-instructions.md
vendored
@ -51,9 +51,8 @@ speakers.
|
|||||||
The writing needs to be inclusive, objective, and not gender biased, polarizing,
|
The writing needs to be inclusive, objective, and not gender biased, polarizing,
|
||||||
or discriminatory. We want to be welcoming to all users.
|
or discriminatory. We want to be welcoming to all users.
|
||||||
|
|
||||||
Write towards the reader directly, and not a group of users. Write from a second-person perspective, using "you" and "your" instead of "the user"
|
Write towards the reader directly, and not a group of users.
|
||||||
second-person perspective, using "you" and "your" instead of "the user"
|
Write from a second-person perspective, using "you" and "your" instead of "the user" or "users".
|
||||||
or "users".
|
|
||||||
|
|
||||||
Make the text feel personal and friendly, as if you are talking to a friend who
|
Make the text feel personal and friendly, as if you are talking to a friend who
|
||||||
really enjoys technology and enjoys this hobby of home automation. Write in
|
really enjoys technology and enjoys this hobby of home automation. Write in
|
||||||
|
|||||||
2
.github/workflows/lock.yml
vendored
2
.github/workflows/lock.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v5.0.1
|
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1
|
||||||
if: ${{ github.repository_owner == 'home-assistant' }}
|
if: ${{ github.repository_owner == 'home-assistant' }}
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
|
|||||||
2
.github/workflows/restrict-task-creation.yml
vendored
2
.github/workflows/restrict-task-creation.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
if: github.event.issue.type.name == 'Task'
|
if: github.event.issue.type.name == 'Task'
|
||||||
steps:
|
steps:
|
||||||
- name: Check if user is authorized
|
- name: Check if user is authorized
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const issueAuthor = context.payload.issue.user.login;
|
const issueAuthor = context.payload.issue.user.login;
|
||||||
|
|||||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9.1.0
|
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
|
||||||
if: ${{ github.repository_owner == 'home-assistant' }}
|
if: ${{ github.repository_owner == 'home-assistant' }}
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
8
.github/workflows/test.yml
vendored
8
.github/workflows/test.yml
vendored
@ -8,9 +8,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
- name: Setting up Node.js
|
- name: Setting up Node.js
|
||||||
uses: actions/setup-node@v4.4.0
|
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: "npm"
|
cache: "npm"
|
||||||
@ -35,9 +35,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
- name: Setting up Node.js
|
- name: Setting up Node.js
|
||||||
uses: actions/setup-node@v4.4.0
|
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: "npm"
|
cache: "npm"
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -9,7 +9,10 @@ source/_data/blueprint_exchange_data.json
|
|||||||
source/_data/version_data.json
|
source/_data/version_data.json
|
||||||
source/_data/alerts_data.json
|
source/_data/alerts_data.json
|
||||||
source/_data/language_scores.json
|
source/_data/language_scores.json
|
||||||
|
source/_data/codeowners.json
|
||||||
source/_stash
|
source/_stash
|
||||||
|
source/stylesheets/homeassistant/pages/connect/zwa-2/index.css
|
||||||
|
source/stylesheets/homeassistant/pages/community/index.css
|
||||||
source/stylesheets/screen.css
|
source/stylesheets/screen.css
|
||||||
source/.jekyll-cache/
|
source/.jekyll-cache/
|
||||||
vendor
|
vendor
|
||||||
|
|||||||
1
.vscode/cSpell.json
vendored
1
.vscode/cSpell.json
vendored
@ -11,6 +11,7 @@
|
|||||||
"autodiscovery",
|
"autodiscovery",
|
||||||
"autoheal",
|
"autoheal",
|
||||||
"automations",
|
"automations",
|
||||||
|
"Backblaze",
|
||||||
"balloob",
|
"balloob",
|
||||||
"bloomsky",
|
"bloomsky",
|
||||||
"Bluesound",
|
"Bluesound",
|
||||||
|
|||||||
85
CODEOWNERS
85
CODEOWNERS
@ -8,6 +8,11 @@
|
|||||||
# https://github.com/blog/2392-introducing-code-owners
|
# https://github.com/blog/2392-introducing-code-owners
|
||||||
|
|
||||||
# Pages
|
# Pages
|
||||||
|
|
||||||
|
# Non-integration pages (manually maintained)
|
||||||
|
source/privacy/index.markdown @frenck
|
||||||
|
|
||||||
|
# Integration pages (auto-synced from core)
|
||||||
source/_integrations/3_day_blinds.markdown @starkillerOG
|
source/_integrations/3_day_blinds.markdown @starkillerOG
|
||||||
source/_integrations/_integration_docs_template.markdown @home-assistant/core
|
source/_integrations/_integration_docs_template.markdown @home-assistant/core
|
||||||
source/_integrations/abode.markdown @shred86
|
source/_integrations/abode.markdown @shred86
|
||||||
@ -15,6 +20,7 @@ source/_integrations/acaia.markdown @zweckj
|
|||||||
source/_integrations/accuweather.markdown @bieniu
|
source/_integrations/accuweather.markdown @bieniu
|
||||||
source/_integrations/acmeda.markdown @atmurray
|
source/_integrations/acmeda.markdown @atmurray
|
||||||
source/_integrations/acomax.markdown @starkillerOG
|
source/_integrations/acomax.markdown @starkillerOG
|
||||||
|
source/_integrations/actron_air.markdown @kclif9 @JagadishDhanamjayam
|
||||||
source/_integrations/adax.markdown @danielhiversen @lazytarget
|
source/_integrations/adax.markdown @danielhiversen @lazytarget
|
||||||
source/_integrations/adguard.markdown @frenck
|
source/_integrations/adguard.markdown @frenck
|
||||||
source/_integrations/ads.markdown @mrpasztoradam
|
source/_integrations/ads.markdown @mrpasztoradam
|
||||||
@ -38,6 +44,7 @@ source/_integrations/airvisual.markdown @bachya
|
|||||||
source/_integrations/airvisual_pro.markdown @bachya
|
source/_integrations/airvisual_pro.markdown @bachya
|
||||||
source/_integrations/airzone.markdown @Noltari
|
source/_integrations/airzone.markdown @Noltari
|
||||||
source/_integrations/airzone_cloud.markdown @Noltari
|
source/_integrations/airzone_cloud.markdown @Noltari
|
||||||
|
source/_integrations/aladdin_connect.markdown @swcloudgenie
|
||||||
source/_integrations/alarm_control_panel.markdown @home-assistant/core
|
source/_integrations/alarm_control_panel.markdown @home-assistant/core
|
||||||
source/_integrations/alert.markdown @home-assistant/core @frenck
|
source/_integrations/alert.markdown @home-assistant/core @frenck
|
||||||
source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh
|
source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh
|
||||||
@ -50,7 +57,7 @@ source/_integrations/ambient_network.markdown @thomaskistler
|
|||||||
source/_integrations/ambient_station.markdown @bachya
|
source/_integrations/ambient_station.markdown @bachya
|
||||||
source/_integrations/amcrest.markdown @flacjacket
|
source/_integrations/amcrest.markdown @flacjacket
|
||||||
source/_integrations/amp_motorization.markdown @starkillerOG
|
source/_integrations/amp_motorization.markdown @starkillerOG
|
||||||
source/_integrations/analytics.markdown @home-assistant/core @ludeeus
|
source/_integrations/analytics.markdown @home-assistant/core
|
||||||
source/_integrations/analytics_insights.markdown @joostlek
|
source/_integrations/analytics_insights.markdown @joostlek
|
||||||
source/_integrations/android_ip_webcam.markdown @engrbm87
|
source/_integrations/android_ip_webcam.markdown @engrbm87
|
||||||
source/_integrations/androidtv.markdown @JeffLIrion @ollo69
|
source/_integrations/androidtv.markdown @JeffLIrion @ollo69
|
||||||
@ -77,8 +84,8 @@ source/_integrations/arcam_fmj.markdown @elupus
|
|||||||
source/_integrations/arris_tg2492lg.markdown @vanbalken
|
source/_integrations/arris_tg2492lg.markdown @vanbalken
|
||||||
source/_integrations/arve.markdown @ikalnyi
|
source/_integrations/arve.markdown @ikalnyi
|
||||||
source/_integrations/aseko_pool_live.markdown @milanmeu
|
source/_integrations/aseko_pool_live.markdown @milanmeu
|
||||||
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
|
source/_integrations/assist_pipeline.markdown @synesthesiam @arturpragacz
|
||||||
source/_integrations/assist_satellite.markdown @home-assistant/core @synesthesiam
|
source/_integrations/assist_satellite.markdown @home-assistant/core @synesthesiam @arturpragacz
|
||||||
source/_integrations/asuswrt.markdown @kennedyshead @ollo69 @Vaskivskyi
|
source/_integrations/asuswrt.markdown @kennedyshead @ollo69 @Vaskivskyi
|
||||||
source/_integrations/atag.markdown @MatsNL
|
source/_integrations/atag.markdown @MatsNL
|
||||||
source/_integrations/aten_pe.markdown @mtdcr
|
source/_integrations/aten_pe.markdown @mtdcr
|
||||||
@ -166,12 +173,13 @@ source/_integrations/comelit.markdown @chemelli74
|
|||||||
source/_integrations/comfoconnect.markdown @michaelarnauts
|
source/_integrations/comfoconnect.markdown @michaelarnauts
|
||||||
source/_integrations/command_line.markdown @gjohansson-ST
|
source/_integrations/command_line.markdown @gjohansson-ST
|
||||||
source/_integrations/compensation.markdown @Petro31
|
source/_integrations/compensation.markdown @Petro31
|
||||||
|
source/_integrations/compit.markdown @Przemko92
|
||||||
source/_integrations/coned.markdown @tronikos
|
source/_integrations/coned.markdown @tronikos
|
||||||
source/_integrations/config.markdown @home-assistant/core
|
source/_integrations/config.markdown @home-assistant/core
|
||||||
source/_integrations/configurator.markdown @home-assistant/core
|
source/_integrations/configurator.markdown @home-assistant/core
|
||||||
source/_integrations/constructa.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
source/_integrations/constructa.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
||||||
source/_integrations/control4.markdown @lawtancool
|
source/_integrations/control4.markdown @lawtancool
|
||||||
source/_integrations/conversation.markdown @home-assistant/core @synesthesiam
|
source/_integrations/conversation.markdown @home-assistant/core @synesthesiam @arturpragacz
|
||||||
source/_integrations/cookidoo.markdown @miaucl
|
source/_integrations/cookidoo.markdown @miaucl
|
||||||
source/_integrations/coolmaster.markdown @OnFreund
|
source/_integrations/coolmaster.markdown @OnFreund
|
||||||
source/_integrations/counter.markdown @fabaff
|
source/_integrations/counter.markdown @fabaff
|
||||||
@ -180,6 +188,7 @@ source/_integrations/cozytouch.markdown @imicknl
|
|||||||
source/_integrations/cpuspeed.markdown @fabaff
|
source/_integrations/cpuspeed.markdown @fabaff
|
||||||
source/_integrations/cribl.markdown @Bre77
|
source/_integrations/cribl.markdown @Bre77
|
||||||
source/_integrations/crownstone.markdown @Crownstone @RicArch97
|
source/_integrations/crownstone.markdown @Crownstone @RicArch97
|
||||||
|
source/_integrations/cync.markdown @Kinachi249
|
||||||
source/_integrations/dacia.markdown @epenet
|
source/_integrations/dacia.markdown @epenet
|
||||||
source/_integrations/daikin.markdown @fredrike
|
source/_integrations/daikin.markdown @fredrike
|
||||||
source/_integrations/date.markdown @home-assistant/core
|
source/_integrations/date.markdown @home-assistant/core
|
||||||
@ -237,6 +246,7 @@ source/_integrations/ecowitt.markdown @pvizeli
|
|||||||
source/_integrations/efergy.markdown @tkdrob
|
source/_integrations/efergy.markdown @tkdrob
|
||||||
source/_integrations/egardia.markdown @jeroenterheerdt
|
source/_integrations/egardia.markdown @jeroenterheerdt
|
||||||
source/_integrations/eheimdigital.markdown @autinerd
|
source/_integrations/eheimdigital.markdown @autinerd
|
||||||
|
source/_integrations/ekeybionyx.markdown @richardpolzer
|
||||||
source/_integrations/electrasmart.markdown @jafar-atili
|
source/_integrations/electrasmart.markdown @jafar-atili
|
||||||
source/_integrations/electric_kiwi.markdown @mikey0000
|
source/_integrations/electric_kiwi.markdown @mikey0000
|
||||||
source/_integrations/elevenlabs.markdown @sorgfresser
|
source/_integrations/elevenlabs.markdown @sorgfresser
|
||||||
@ -256,8 +266,6 @@ source/_integrations/energie_vanons.markdown @klaasnicolaas
|
|||||||
source/_integrations/energy.markdown @home-assistant/core
|
source/_integrations/energy.markdown @home-assistant/core
|
||||||
source/_integrations/energyzero.markdown @klaasnicolaas
|
source/_integrations/energyzero.markdown @klaasnicolaas
|
||||||
source/_integrations/enigma2.markdown @autinerd
|
source/_integrations/enigma2.markdown @autinerd
|
||||||
source/_integrations/enmax.markdown @tronikos
|
|
||||||
source/_integrations/enocean.markdown @bdurrer
|
|
||||||
source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @catsmanac
|
source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @catsmanac
|
||||||
source/_integrations/entur_public_transport.markdown @hfurubotten
|
source/_integrations/entur_public_transport.markdown @hfurubotten
|
||||||
source/_integrations/environment_canada.markdown @gwww @michaeldavie
|
source/_integrations/environment_canada.markdown @gwww @michaeldavie
|
||||||
@ -272,7 +280,6 @@ source/_integrations/esphome.markdown @jesserockz @kbx81 @bdraco
|
|||||||
source/_integrations/eufylife_ble.markdown @bdr99
|
source/_integrations/eufylife_ble.markdown @bdr99
|
||||||
source/_integrations/event.markdown @home-assistant/core
|
source/_integrations/event.markdown @home-assistant/core
|
||||||
source/_integrations/evergy.markdown @tronikos
|
source/_integrations/evergy.markdown @tronikos
|
||||||
source/_integrations/evil_genius_labs.markdown @balloob
|
|
||||||
source/_integrations/evohome.markdown @zxdavb
|
source/_integrations/evohome.markdown @zxdavb
|
||||||
source/_integrations/ezviz.markdown @RenierM26
|
source/_integrations/ezviz.markdown @RenierM26
|
||||||
source/_integrations/faa_delays.markdown @ntilley905
|
source/_integrations/faa_delays.markdown @ntilley905
|
||||||
@ -284,7 +291,9 @@ source/_integrations/file.markdown @fabaff
|
|||||||
source/_integrations/file_upload.markdown @home-assistant/core
|
source/_integrations/file_upload.markdown @home-assistant/core
|
||||||
source/_integrations/filesize.markdown @gjohansson-ST
|
source/_integrations/filesize.markdown @gjohansson-ST
|
||||||
source/_integrations/filter.markdown @dgomes
|
source/_integrations/filter.markdown @dgomes
|
||||||
|
source/_integrations/fing.markdown @Lorenzo-Gasparini
|
||||||
source/_integrations/fire_tv.markdown @JeffLIrion @ollo69
|
source/_integrations/fire_tv.markdown @JeffLIrion @ollo69
|
||||||
|
source/_integrations/firefly_iii.markdown @erwindouna
|
||||||
source/_integrations/fireservicerota.markdown @cyberjunky
|
source/_integrations/fireservicerota.markdown @cyberjunky
|
||||||
source/_integrations/firmata.markdown @DaAwesomeP
|
source/_integrations/firmata.markdown @DaAwesomeP
|
||||||
source/_integrations/fitbit.markdown @allenporter
|
source/_integrations/fitbit.markdown @allenporter
|
||||||
@ -292,7 +301,6 @@ source/_integrations/fivem.markdown @Sander0542
|
|||||||
source/_integrations/fjaraskupan.markdown @elupus
|
source/_integrations/fjaraskupan.markdown @elupus
|
||||||
source/_integrations/flexit_bacnet.markdown @lellky @piotrbulinski
|
source/_integrations/flexit_bacnet.markdown @lellky @piotrbulinski
|
||||||
source/_integrations/flexom.markdown @imicknl
|
source/_integrations/flexom.markdown @imicknl
|
||||||
source/_integrations/flick_electric.markdown @ZephireNZ
|
|
||||||
source/_integrations/flipr.markdown @cnico
|
source/_integrations/flipr.markdown @cnico
|
||||||
source/_integrations/flo.markdown @dmulcahey
|
source/_integrations/flo.markdown @dmulcahey
|
||||||
source/_integrations/flume.markdown @ChrisMandich @bdraco @jeeftor
|
source/_integrations/flume.markdown @ChrisMandich @bdraco @jeeftor
|
||||||
@ -300,8 +308,8 @@ source/_integrations/flux_led.markdown @icemanch
|
|||||||
source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck
|
source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck
|
||||||
source/_integrations/forked_daapd.markdown @uvjustin
|
source/_integrations/forked_daapd.markdown @uvjustin
|
||||||
source/_integrations/fortios.markdown @kimfrellsen
|
source/_integrations/fortios.markdown @kimfrellsen
|
||||||
source/_integrations/foscam.markdown @krmarien
|
source/_integrations/foscam.markdown @Foscam-wangzhengyu
|
||||||
source/_integrations/frankever.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
source/_integrations/frankever.markdown @bieniu @thecode @chemelli74 @bdraco
|
||||||
source/_integrations/freebox.markdown @hacf-fr @Quentame
|
source/_integrations/freebox.markdown @hacf-fr @Quentame
|
||||||
source/_integrations/freedompro.markdown @stefano055415
|
source/_integrations/freedompro.markdown @stefano055415
|
||||||
source/_integrations/fritz.markdown @AaronDavidSchneider @chemelli74 @mib1185
|
source/_integrations/fritz.markdown @AaronDavidSchneider @chemelli74 @mib1185
|
||||||
@ -340,7 +348,6 @@ source/_integrations/google_assistant.markdown @home-assistant/cloud
|
|||||||
source/_integrations/google_assistant_sdk.markdown @tronikos
|
source/_integrations/google_assistant_sdk.markdown @tronikos
|
||||||
source/_integrations/google_cloud.markdown @lufton @tronikos
|
source/_integrations/google_cloud.markdown @lufton @tronikos
|
||||||
source/_integrations/google_drive.markdown @tronikos
|
source/_integrations/google_drive.markdown @tronikos
|
||||||
source/_integrations/google_gemini.markdown @tronikos @ivanlh
|
|
||||||
source/_integrations/google_generative_ai_conversation.markdown @tronikos @ivanlh
|
source/_integrations/google_generative_ai_conversation.markdown @tronikos @ivanlh
|
||||||
source/_integrations/google_mail.markdown @tkdrob
|
source/_integrations/google_mail.markdown @tkdrob
|
||||||
source/_integrations/google_photos.markdown @allenporter
|
source/_integrations/google_photos.markdown @allenporter
|
||||||
@ -353,6 +360,7 @@ source/_integrations/gpsd.markdown @fabaff @jrieger
|
|||||||
source/_integrations/gree.markdown @cmroche
|
source/_integrations/gree.markdown @cmroche
|
||||||
source/_integrations/greeneye_monitor.markdown @jkeljo
|
source/_integrations/greeneye_monitor.markdown @jkeljo
|
||||||
source/_integrations/group.markdown @home-assistant/core
|
source/_integrations/group.markdown @home-assistant/core
|
||||||
|
source/_integrations/growatt_server.markdown @johanzander
|
||||||
source/_integrations/guardian.markdown @bachya
|
source/_integrations/guardian.markdown @bachya
|
||||||
source/_integrations/habitica.markdown @tr4nt0r
|
source/_integrations/habitica.markdown @tr4nt0r
|
||||||
source/_integrations/hardware.markdown @home-assistant/core
|
source/_integrations/hardware.markdown @home-assistant/core
|
||||||
@ -395,7 +403,7 @@ source/_integrations/honeywell.markdown @rdfurman @mkmer
|
|||||||
source/_integrations/html5.markdown @alexyao2015
|
source/_integrations/html5.markdown @alexyao2015
|
||||||
source/_integrations/http.markdown @home-assistant/core
|
source/_integrations/http.markdown @home-assistant/core
|
||||||
source/_integrations/huawei_lte.markdown @scop @fphammerle
|
source/_integrations/huawei_lte.markdown @scop @fphammerle
|
||||||
source/_integrations/hue.markdown @balloob @marcelveldt
|
source/_integrations/hue.markdown @marcelveldt
|
||||||
source/_integrations/huisbaasje.markdown @dennisschroer
|
source/_integrations/huisbaasje.markdown @dennisschroer
|
||||||
source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka
|
source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka
|
||||||
source/_integrations/hunterdouglas_powerview.markdown @bdraco @kingy444 @trullock
|
source/_integrations/hunterdouglas_powerview.markdown @bdraco @kingy444 @trullock
|
||||||
@ -423,6 +431,7 @@ source/_integrations/immich.markdown @mib1185
|
|||||||
source/_integrations/improv_ble.markdown @emontnemery
|
source/_integrations/improv_ble.markdown @emontnemery
|
||||||
source/_integrations/incomfort.markdown @jbouwh
|
source/_integrations/incomfort.markdown @jbouwh
|
||||||
source/_integrations/indianamichiganpower.markdown @tronikos
|
source/_integrations/indianamichiganpower.markdown @tronikos
|
||||||
|
source/_integrations/inels.markdown @epdevlab
|
||||||
source/_integrations/influxdb.markdown @mdegat01
|
source/_integrations/influxdb.markdown @mdegat01
|
||||||
source/_integrations/inkbird.markdown @bdraco
|
source/_integrations/inkbird.markdown @bdraco
|
||||||
source/_integrations/input_boolean.markdown @home-assistant/core
|
source/_integrations/input_boolean.markdown @home-assistant/core
|
||||||
@ -436,7 +445,7 @@ source/_integrations/insteon.markdown @teharris1
|
|||||||
source/_integrations/integration.markdown @dgomes
|
source/_integrations/integration.markdown @dgomes
|
||||||
source/_integrations/intellifire.markdown @jeeftor
|
source/_integrations/intellifire.markdown @jeeftor
|
||||||
source/_integrations/intesishome.markdown @jnimmo
|
source/_integrations/intesishome.markdown @jnimmo
|
||||||
source/_integrations/iometer.markdown @MaestroOnICe
|
source/_integrations/iometer.markdown @jukrebs
|
||||||
source/_integrations/ios.markdown @robbiet480
|
source/_integrations/ios.markdown @robbiet480
|
||||||
source/_integrations/iotawatt.markdown @gtdiehl @jyavenard
|
source/_integrations/iotawatt.markdown @gtdiehl @jyavenard
|
||||||
source/_integrations/iotty.markdown @shapournemati-iotty
|
source/_integrations/iotty.markdown @shapournemati-iotty
|
||||||
@ -445,6 +454,7 @@ source/_integrations/ipma.markdown @dgomes
|
|||||||
source/_integrations/ipp.markdown @ctalkington
|
source/_integrations/ipp.markdown @ctalkington
|
||||||
source/_integrations/iqvia.markdown @bachya
|
source/_integrations/iqvia.markdown @bachya
|
||||||
source/_integrations/irish_rail_transport.markdown @ttroy50
|
source/_integrations/irish_rail_transport.markdown @ttroy50
|
||||||
|
source/_integrations/irm_kmi.markdown @jdejaegh
|
||||||
source/_integrations/iron_os.markdown @tr4nt0r
|
source/_integrations/iron_os.markdown @tr4nt0r
|
||||||
source/_integrations/isal.markdown @bdraco
|
source/_integrations/isal.markdown @bdraco
|
||||||
source/_integrations/iskra.markdown @iskramis
|
source/_integrations/iskra.markdown @iskramis
|
||||||
@ -476,6 +486,7 @@ source/_integrations/knocki.markdown @joostlek @jgatto1 @JakeBosh
|
|||||||
source/_integrations/knx.markdown @Julius2342 @farmio @marvin-w
|
source/_integrations/knx.markdown @Julius2342 @farmio @marvin-w
|
||||||
source/_integrations/kodi.markdown @OnFreund
|
source/_integrations/kodi.markdown @OnFreund
|
||||||
source/_integrations/konnected.markdown @heythisisnate
|
source/_integrations/konnected.markdown @heythisisnate
|
||||||
|
source/_integrations/konnected_esphome.markdown @jesserockz @kbx81 @bdraco
|
||||||
source/_integrations/kostal_plenticore.markdown @stegm
|
source/_integrations/kostal_plenticore.markdown @stegm
|
||||||
source/_integrations/kraken.markdown @eifinger
|
source/_integrations/kraken.markdown @eifinger
|
||||||
source/_integrations/krispol.markdown @starkillerOG
|
source/_integrations/krispol.markdown @starkillerOG
|
||||||
@ -498,11 +509,12 @@ source/_integrations/letpot.markdown @jpelgrom
|
|||||||
source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
|
source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
|
||||||
source/_integrations/lg_netcast.markdown @Drafteed @splinter98
|
source/_integrations/lg_netcast.markdown @Drafteed @splinter98
|
||||||
source/_integrations/lg_thinq.markdown @LG-ThinQ-Integration
|
source/_integrations/lg_thinq.markdown @LG-ThinQ-Integration
|
||||||
|
source/_integrations/libre_hardware_monitor.markdown @Sab44
|
||||||
source/_integrations/lidarr.markdown @tkdrob
|
source/_integrations/lidarr.markdown @tkdrob
|
||||||
source/_integrations/lifx.markdown @Djelibeybi
|
source/_integrations/lifx.markdown @Djelibeybi
|
||||||
source/_integrations/light.markdown @home-assistant/core
|
source/_integrations/light.markdown @home-assistant/core
|
||||||
source/_integrations/linak.markdown @abmantis
|
source/_integrations/linak.markdown @abmantis
|
||||||
source/_integrations/linkedgo.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
source/_integrations/linkedgo.markdown @bieniu @thecode @chemelli74 @bdraco
|
||||||
source/_integrations/linkplay.markdown @Velleman
|
source/_integrations/linkplay.markdown @Velleman
|
||||||
source/_integrations/linux_battery.markdown @fabaff
|
source/_integrations/linux_battery.markdown @fabaff
|
||||||
source/_integrations/linx.markdown @starkillerOG
|
source/_integrations/linx.markdown @starkillerOG
|
||||||
@ -520,6 +532,7 @@ source/_integrations/lookin.markdown @ANMalko @bdraco
|
|||||||
source/_integrations/loqed.markdown @mikewoudenberg
|
source/_integrations/loqed.markdown @mikewoudenberg
|
||||||
source/_integrations/luci.markdown @mzdrale
|
source/_integrations/luci.markdown @mzdrale
|
||||||
source/_integrations/luftdaten.markdown @fabaff @frenck
|
source/_integrations/luftdaten.markdown @fabaff @frenck
|
||||||
|
source/_integrations/lunatone.markdown @MoonDevLT
|
||||||
source/_integrations/lupusec.markdown @majuss @suaveolent
|
source/_integrations/lupusec.markdown @majuss @suaveolent
|
||||||
source/_integrations/lutron.markdown @cdheiser @wilburCForce
|
source/_integrations/lutron.markdown @cdheiser @wilburCForce
|
||||||
source/_integrations/lutron_caseta.markdown @swails @danaues @eclair4151
|
source/_integrations/lutron_caseta.markdown @swails @danaues @eclair4151
|
||||||
@ -548,6 +561,7 @@ source/_integrations/melnor.markdown @vanstinator
|
|||||||
source/_integrations/met.markdown @danielhiversen
|
source/_integrations/met.markdown @danielhiversen
|
||||||
source/_integrations/met_eireann.markdown @DylanGore
|
source/_integrations/met_eireann.markdown @DylanGore
|
||||||
source/_integrations/meteo_france.markdown @hacf-fr @oncleben31 @Quentame
|
source/_integrations/meteo_france.markdown @hacf-fr @oncleben31 @Quentame
|
||||||
|
source/_integrations/meteo_lt.markdown @xE1H
|
||||||
source/_integrations/meteoalarm.markdown @rolfberkenbosch
|
source/_integrations/meteoalarm.markdown @rolfberkenbosch
|
||||||
source/_integrations/meteoclimatic.markdown @adrianmo
|
source/_integrations/meteoclimatic.markdown @adrianmo
|
||||||
source/_integrations/metoffice.markdown @MrHarcombe @avee87
|
source/_integrations/metoffice.markdown @MrHarcombe @avee87
|
||||||
@ -589,8 +603,9 @@ source/_integrations/nam.markdown @bieniu
|
|||||||
source/_integrations/nanoleaf.markdown @milanmeu @joostlek
|
source/_integrations/nanoleaf.markdown @milanmeu @joostlek
|
||||||
source/_integrations/nasweb.markdown @nasWebio
|
source/_integrations/nasweb.markdown @nasWebio
|
||||||
source/_integrations/national_grid_us.markdown @tronikos
|
source/_integrations/national_grid_us.markdown @tronikos
|
||||||
source/_integrations/nederlandse_spoorwegen.markdown @YarmoM
|
source/_integrations/nederlandse_spoorwegen.markdown @YarmoM @heindrichpaul
|
||||||
source/_integrations/neff.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
source/_integrations/neff.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
||||||
|
source/_integrations/neo.markdown @bieniu @thecode @chemelli74 @bdraco
|
||||||
source/_integrations/ness_alarm.markdown @nickw444
|
source/_integrations/ness_alarm.markdown @nickw444
|
||||||
source/_integrations/nest.markdown @allenporter
|
source/_integrations/nest.markdown @allenporter
|
||||||
source/_integrations/netatmo.markdown @cgtobi
|
source/_integrations/netatmo.markdown @cgtobi
|
||||||
@ -610,6 +625,7 @@ source/_integrations/nightscout.markdown @marciogranzotto
|
|||||||
source/_integrations/niko_home_control.markdown @VandeurenGlenn
|
source/_integrations/niko_home_control.markdown @VandeurenGlenn
|
||||||
source/_integrations/nilu.markdown @hfurubotten
|
source/_integrations/nilu.markdown @hfurubotten
|
||||||
source/_integrations/nina.markdown @DeerMaximum
|
source/_integrations/nina.markdown @DeerMaximum
|
||||||
|
source/_integrations/nintendo_parental_controls.markdown @pantherale0
|
||||||
source/_integrations/nissan_leaf.markdown @filcole
|
source/_integrations/nissan_leaf.markdown @filcole
|
||||||
source/_integrations/noaa_tides.markdown @jdelaney72
|
source/_integrations/noaa_tides.markdown @jdelaney72
|
||||||
source/_integrations/nobo_hub.markdown @echoromeo @oyvindwe
|
source/_integrations/nobo_hub.markdown @echoromeo @oyvindwe
|
||||||
@ -632,7 +648,7 @@ source/_integrations/nyt_games.markdown @joostlek
|
|||||||
source/_integrations/nzbget.markdown @chriscla
|
source/_integrations/nzbget.markdown @chriscla
|
||||||
source/_integrations/obihai.markdown @dshokouhi @ejpenney
|
source/_integrations/obihai.markdown @dshokouhi @ejpenney
|
||||||
source/_integrations/octoprint.markdown @rfleming71
|
source/_integrations/octoprint.markdown @rfleming71
|
||||||
source/_integrations/ogemray.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
source/_integrations/ogemray.markdown @bieniu @thecode @chemelli74 @bdraco
|
||||||
source/_integrations/ohmconnect.markdown @robbiet480
|
source/_integrations/ohmconnect.markdown @robbiet480
|
||||||
source/_integrations/ohme.markdown @dan-r
|
source/_integrations/ohme.markdown @dan-r
|
||||||
source/_integrations/ollama.markdown @synesthesiam
|
source/_integrations/ollama.markdown @synesthesiam
|
||||||
@ -645,11 +661,11 @@ source/_integrations/onkyo.markdown @arturpragacz @eclair4151
|
|||||||
source/_integrations/onvif.markdown @hunterjm @jterrace
|
source/_integrations/onvif.markdown @hunterjm @jterrace
|
||||||
source/_integrations/open_meteo.markdown @frenck
|
source/_integrations/open_meteo.markdown @frenck
|
||||||
source/_integrations/open_router.markdown @joostlek
|
source/_integrations/open_router.markdown @joostlek
|
||||||
source/_integrations/openai_conversation.markdown @balloob
|
|
||||||
source/_integrations/openerz.markdown @misialq
|
source/_integrations/openerz.markdown @misialq
|
||||||
source/_integrations/openexchangerates.markdown @MartinHjelmare
|
source/_integrations/openexchangerates.markdown @MartinHjelmare
|
||||||
source/_integrations/opengarage.markdown @danielhiversen
|
source/_integrations/opengarage.markdown @danielhiversen
|
||||||
source/_integrations/openhome.markdown @bazwilliams
|
source/_integrations/openhome.markdown @bazwilliams
|
||||||
|
source/_integrations/openrgb.markdown @felipecrs
|
||||||
source/_integrations/opensky.markdown @joostlek
|
source/_integrations/opensky.markdown @joostlek
|
||||||
source/_integrations/opentherm_gw.markdown @mvn23
|
source/_integrations/opentherm_gw.markdown @mvn23
|
||||||
source/_integrations/openuv.markdown @bachya
|
source/_integrations/openuv.markdown @bachya
|
||||||
@ -684,15 +700,16 @@ source/_integrations/pi_hole.markdown @shenxn
|
|||||||
source/_integrations/picnic.markdown @corneyl @codesalatdev
|
source/_integrations/picnic.markdown @corneyl @codesalatdev
|
||||||
source/_integrations/pinecil.markdown @tr4nt0r
|
source/_integrations/pinecil.markdown @tr4nt0r
|
||||||
source/_integrations/ping.markdown @jpbede
|
source/_integrations/ping.markdown @jpbede
|
||||||
source/_integrations/piper.markdown @balloob @synesthesiam
|
source/_integrations/piper.markdown @synesthesiam
|
||||||
source/_integrations/pitsos.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
source/_integrations/pitsos.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
||||||
source/_integrations/plaato.markdown @JohNan
|
source/_integrations/plaato.markdown @JohNan
|
||||||
source/_integrations/playstation_network.markdown @jackjpowell @tr4nt0r
|
source/_integrations/playstation_network.markdown @jackjpowell @tr4nt0r
|
||||||
source/_integrations/plex.markdown @jjlawren
|
source/_integrations/plex.markdown @jjlawren
|
||||||
source/_integrations/plugwise.markdown @CoMPaTech @bouwew
|
source/_integrations/plugwise.markdown @CoMPaTech @bouwew
|
||||||
source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa
|
|
||||||
source/_integrations/point.markdown @fredrike
|
source/_integrations/point.markdown @fredrike
|
||||||
|
source/_integrations/pooldose.markdown @lmaertin
|
||||||
source/_integrations/poolsense.markdown @haemishkyd
|
source/_integrations/poolsense.markdown @haemishkyd
|
||||||
|
source/_integrations/portainer.markdown @erwindouna
|
||||||
source/_integrations/portlandgeneral.markdown @tronikos
|
source/_integrations/portlandgeneral.markdown @tronikos
|
||||||
source/_integrations/powerfox.markdown @klaasnicolaas
|
source/_integrations/powerfox.markdown @klaasnicolaas
|
||||||
source/_integrations/powerwall.markdown @bdraco @jrester @daniel-simpson
|
source/_integrations/powerwall.markdown @bdraco @jrester @daniel-simpson
|
||||||
@ -705,7 +722,6 @@ source/_integrations/prometheus.markdown @knyar
|
|||||||
source/_integrations/prosegur.markdown @dgomes
|
source/_integrations/prosegur.markdown @dgomes
|
||||||
source/_integrations/proximity.markdown @mib1185
|
source/_integrations/proximity.markdown @mib1185
|
||||||
source/_integrations/proxmoxve.markdown @jhollowe @Corbeno
|
source/_integrations/proxmoxve.markdown @jhollowe @Corbeno
|
||||||
source/_integrations/prusalink.markdown @balloob
|
|
||||||
source/_integrations/ps4.markdown @ktnrg45
|
source/_integrations/ps4.markdown @ktnrg45
|
||||||
source/_integrations/pse.markdown @tronikos
|
source/_integrations/pse.markdown @tronikos
|
||||||
source/_integrations/psoklahoma.markdown @tronikos
|
source/_integrations/psoklahoma.markdown @tronikos
|
||||||
@ -758,7 +774,7 @@ source/_integrations/rest_command.markdown @jpbede
|
|||||||
source/_integrations/rexel.markdown @imicknl
|
source/_integrations/rexel.markdown @imicknl
|
||||||
source/_integrations/rflink.markdown @javicalle
|
source/_integrations/rflink.markdown @javicalle
|
||||||
source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221
|
source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221
|
||||||
source/_integrations/rhasspy.markdown @balloob @synesthesiam
|
source/_integrations/rhasspy.markdown @synesthesiam
|
||||||
source/_integrations/ridwell.markdown @bachya
|
source/_integrations/ridwell.markdown @bachya
|
||||||
source/_integrations/ring.markdown @sdb9696
|
source/_integrations/ring.markdown @sdb9696
|
||||||
source/_integrations/risco.markdown @OnFreund
|
source/_integrations/risco.markdown @OnFreund
|
||||||
@ -769,6 +785,7 @@ source/_integrations/roku.markdown @ctalkington
|
|||||||
source/_integrations/romy.markdown @xeniter
|
source/_integrations/romy.markdown @xeniter
|
||||||
source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Orhideous
|
source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Orhideous
|
||||||
source/_integrations/roon.markdown @pavoni
|
source/_integrations/roon.markdown @pavoni
|
||||||
|
source/_integrations/route_b_smart_meter.markdown @SeraphicRav
|
||||||
source/_integrations/rpi_power.markdown @shenxn @swetoast
|
source/_integrations/rpi_power.markdown @shenxn @swetoast
|
||||||
source/_integrations/rss_feed_template.markdown @home-assistant/core
|
source/_integrations/rss_feed_template.markdown @home-assistant/core
|
||||||
source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565
|
source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565
|
||||||
@ -782,6 +799,7 @@ source/_integrations/saj.markdown @fredericvl
|
|||||||
source/_integrations/samsam.markdown @klaasnicolaas
|
source/_integrations/samsam.markdown @klaasnicolaas
|
||||||
source/_integrations/samsungtv.markdown @chemelli74 @epenet
|
source/_integrations/samsungtv.markdown @chemelli74 @epenet
|
||||||
source/_integrations/sanix.markdown @tomaszsluszniak
|
source/_integrations/sanix.markdown @tomaszsluszniak
|
||||||
|
source/_integrations/satel_integra.markdown @Tommatheussen
|
||||||
source/_integrations/scene.markdown @home-assistant/core
|
source/_integrations/scene.markdown @home-assistant/core
|
||||||
source/_integrations/schedule.markdown @home-assistant/core
|
source/_integrations/schedule.markdown @home-assistant/core
|
||||||
source/_integrations/schlage.markdown @dknowles2
|
source/_integrations/schlage.markdown @dknowles2
|
||||||
@ -809,9 +827,10 @@ source/_integrations/serial.markdown @fabaff
|
|||||||
source/_integrations/seven_segments.markdown @fabaff
|
source/_integrations/seven_segments.markdown @fabaff
|
||||||
source/_integrations/seventeentrack.markdown @shaiu
|
source/_integrations/seventeentrack.markdown @shaiu
|
||||||
source/_integrations/sfr_box.markdown @epenet
|
source/_integrations/sfr_box.markdown @epenet
|
||||||
source/_integrations/sharkiq.markdown @JeffResc @funkybunch
|
source/_integrations/sftp_storage.markdown @maretodoric
|
||||||
|
source/_integrations/sharkiq.markdown @JeffResc @funkybunch @TheOneOgre
|
||||||
source/_integrations/shell_command.markdown @home-assistant/core
|
source/_integrations/shell_command.markdown @home-assistant/core
|
||||||
source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
source/_integrations/shelly.markdown @bieniu @thecode @chemelli74 @bdraco
|
||||||
source/_integrations/shodan.markdown @fabaff
|
source/_integrations/shodan.markdown @fabaff
|
||||||
source/_integrations/sia.markdown @eavanvalkenburg
|
source/_integrations/sia.markdown @eavanvalkenburg
|
||||||
source/_integrations/siemens.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
source/_integrations/siemens.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
||||||
@ -851,7 +870,7 @@ source/_integrations/snapcast.markdown @luar123
|
|||||||
source/_integrations/snmp.markdown @nmaggioni
|
source/_integrations/snmp.markdown @nmaggioni
|
||||||
source/_integrations/snoo.markdown @Lash-L
|
source/_integrations/snoo.markdown @Lash-L
|
||||||
source/_integrations/snooz.markdown @AustinBrunkhorst
|
source/_integrations/snooz.markdown @AustinBrunkhorst
|
||||||
source/_integrations/solaredge.markdown @frenck @bdraco
|
source/_integrations/solaredge.markdown @frenck @bdraco @tronikos
|
||||||
source/_integrations/solaredge_local.markdown @drobtravels @scheric
|
source/_integrations/solaredge_local.markdown @drobtravels @scheric
|
||||||
source/_integrations/solarlog.markdown @Ernst79 @dontinelli
|
source/_integrations/solarlog.markdown @Ernst79 @dontinelli
|
||||||
source/_integrations/solax.markdown @squishykid @Darsstar
|
source/_integrations/solax.markdown @squishykid @Darsstar
|
||||||
@ -880,6 +899,7 @@ source/_integrations/stt.markdown @home-assistant/core
|
|||||||
source/_integrations/subaru.markdown @G-Two
|
source/_integrations/subaru.markdown @G-Two
|
||||||
source/_integrations/suez_water.markdown @ooii @jb101010-2
|
source/_integrations/suez_water.markdown @ooii @jb101010-2
|
||||||
source/_integrations/sun.markdown @home-assistant/core
|
source/_integrations/sun.markdown @home-assistant/core
|
||||||
|
source/_integrations/sunricher_dali_center.markdown @niracler
|
||||||
source/_integrations/supla.markdown @mwegrzynek
|
source/_integrations/supla.markdown @mwegrzynek
|
||||||
source/_integrations/surepetcare.markdown @benleb @danielhiversen
|
source/_integrations/surepetcare.markdown @benleb @danielhiversen
|
||||||
source/_integrations/swepco.markdown @tronikos
|
source/_integrations/swepco.markdown @tronikos
|
||||||
@ -889,7 +909,7 @@ source/_integrations/switch.markdown @home-assistant/core
|
|||||||
source/_integrations/switch_as_x.markdown @home-assistant/core
|
source/_integrations/switch_as_x.markdown @home-assistant/core
|
||||||
source/_integrations/switchbee.markdown @jafar-atili
|
source/_integrations/switchbee.markdown @jafar-atili
|
||||||
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
|
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
|
||||||
source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur
|
source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur @XiaoLing-git
|
||||||
source/_integrations/switcher_kis.markdown @thecode @YogevBokobza
|
source/_integrations/switcher_kis.markdown @thecode @YogevBokobza
|
||||||
source/_integrations/switchmate.markdown @danielhiversen @qiz-li
|
source/_integrations/switchmate.markdown @danielhiversen @qiz-li
|
||||||
source/_integrations/symfonisk.markdown @jjlawren @peterager
|
source/_integrations/symfonisk.markdown @jjlawren @peterager
|
||||||
@ -900,7 +920,7 @@ source/_integrations/synology_srm.markdown @aerialls
|
|||||||
source/_integrations/system_bridge.markdown @timmo001
|
source/_integrations/system_bridge.markdown @timmo001
|
||||||
source/_integrations/systemmonitor.markdown @gjohansson-ST
|
source/_integrations/systemmonitor.markdown @gjohansson-ST
|
||||||
source/_integrations/tado.markdown @erwindouna
|
source/_integrations/tado.markdown @erwindouna
|
||||||
source/_integrations/tag.markdown @balloob @dmulcahey
|
source/_integrations/tag.markdown @home-assistant/core
|
||||||
source/_integrations/tailscale.markdown @frenck
|
source/_integrations/tailscale.markdown @frenck
|
||||||
source/_integrations/tailwind.markdown @frenck
|
source/_integrations/tailwind.markdown @frenck
|
||||||
source/_integrations/tami4.markdown @Guy293
|
source/_integrations/tami4.markdown @Guy293
|
||||||
@ -972,6 +992,7 @@ source/_integrations/uprise_smart_shades.markdown @starkillerOG
|
|||||||
source/_integrations/uptime.markdown @frenck
|
source/_integrations/uptime.markdown @frenck
|
||||||
source/_integrations/uptime_kuma.markdown @tr4nt0r
|
source/_integrations/uptime_kuma.markdown @tr4nt0r
|
||||||
source/_integrations/uptimerobot.markdown @ludeeus @chemelli74
|
source/_integrations/uptimerobot.markdown @ludeeus @chemelli74
|
||||||
|
source/_integrations/usage_prediction.markdown @home-assistant/core
|
||||||
source/_integrations/usb.markdown @bdraco
|
source/_integrations/usb.markdown @bdraco
|
||||||
source/_integrations/usgs_earthquakes_feed.markdown @exxamalte
|
source/_integrations/usgs_earthquakes_feed.markdown @exxamalte
|
||||||
source/_integrations/utility_meter.markdown @dgomes
|
source/_integrations/utility_meter.markdown @dgomes
|
||||||
@ -981,23 +1002,23 @@ source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru- @yozik04
|
|||||||
source/_integrations/valve.markdown @home-assistant/core
|
source/_integrations/valve.markdown @home-assistant/core
|
||||||
source/_integrations/vegehub.markdown @ghowevege
|
source/_integrations/vegehub.markdown @ghowevege
|
||||||
source/_integrations/velbus.markdown @Cereal2nd @brefra
|
source/_integrations/velbus.markdown @Cereal2nd @brefra
|
||||||
source/_integrations/velux.markdown @Julius2342 @DeerMaximum @pawlizio
|
source/_integrations/velux.markdown @Julius2342 @DeerMaximum @pawlizio @wollew
|
||||||
source/_integrations/venstar.markdown @garbled1 @jhollowe
|
source/_integrations/venstar.markdown @garbled1 @jhollowe
|
||||||
source/_integrations/vermont_castings.markdown @jeeftor
|
source/_integrations/vermont_castings.markdown @jeeftor
|
||||||
source/_integrations/versasense.markdown @imstevenxyz
|
source/_integrations/versasense.markdown @imstevenxyz
|
||||||
source/_integrations/version.markdown @ludeeus
|
source/_integrations/version.markdown @ludeeus
|
||||||
source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak
|
source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak @sapuseven
|
||||||
source/_integrations/vicare.markdown @CFenner
|
source/_integrations/vicare.markdown @CFenner
|
||||||
|
source/_integrations/victron_remote_monitoring.markdown @AndyTempel
|
||||||
source/_integrations/vilfo.markdown @ManneW
|
source/_integrations/vilfo.markdown @ManneW
|
||||||
source/_integrations/vivotek.markdown @HarlemSquirrel
|
source/_integrations/vivotek.markdown @HarlemSquirrel
|
||||||
source/_integrations/vizio.markdown @raman325
|
source/_integrations/vizio.markdown @raman325
|
||||||
source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare
|
source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare
|
||||||
source/_integrations/vodafone_station.markdown @paoloantinori @chemelli74
|
source/_integrations/vodafone_station.markdown @paoloantinori @chemelli74
|
||||||
source/_integrations/voice_assistant.markdown @balloob @synesthesiam
|
source/_integrations/voice_assistant.markdown @balloob @synesthesiam
|
||||||
source/_integrations/voip.markdown @balloob @synesthesiam @jaminh
|
source/_integrations/voip.markdown @synesthesiam @jaminh
|
||||||
source/_integrations/volumio.markdown @OnFreund
|
source/_integrations/volumio.markdown @OnFreund
|
||||||
source/_integrations/volvo.markdown @thomasddn
|
source/_integrations/volvo.markdown @thomasddn
|
||||||
source/_integrations/volvooncall.markdown @molobrakos
|
|
||||||
source/_integrations/wake_on_lan.markdown @ntilley905
|
source/_integrations/wake_on_lan.markdown @ntilley905
|
||||||
source/_integrations/wake_word.markdown @home-assistant/core @synesthesiam
|
source/_integrations/wake_word.markdown @home-assistant/core @synesthesiam
|
||||||
source/_integrations/wallbox.markdown @hesselonline
|
source/_integrations/wallbox.markdown @hesselonline
|
||||||
@ -1019,7 +1040,7 @@ source/_integrations/websocket_api.markdown @home-assistant/core
|
|||||||
source/_integrations/weheat.markdown @jesperraemaekers
|
source/_integrations/weheat.markdown @jesperraemaekers
|
||||||
source/_integrations/wemo.markdown @esev
|
source/_integrations/wemo.markdown @esev
|
||||||
source/_integrations/whirlpool.markdown @abmantis @mkmer
|
source/_integrations/whirlpool.markdown @abmantis @mkmer
|
||||||
source/_integrations/whisper.markdown @balloob @synesthesiam
|
source/_integrations/whisper.markdown @synesthesiam
|
||||||
source/_integrations/whois.markdown @frenck
|
source/_integrations/whois.markdown @frenck
|
||||||
source/_integrations/wiffi.markdown @mampfes
|
source/_integrations/wiffi.markdown @mampfes
|
||||||
source/_integrations/wilight.markdown @leofig-rj
|
source/_integrations/wilight.markdown @leofig-rj
|
||||||
@ -1032,7 +1053,7 @@ source/_integrations/wolflink.markdown @adamkrol93 @mtielen
|
|||||||
source/_integrations/workday.markdown @fabaff @gjohansson-ST
|
source/_integrations/workday.markdown @fabaff @gjohansson-ST
|
||||||
source/_integrations/worldclock.markdown @fabaff
|
source/_integrations/worldclock.markdown @fabaff
|
||||||
source/_integrations/ws66i.markdown @ssaenger
|
source/_integrations/ws66i.markdown @ssaenger
|
||||||
source/_integrations/wyoming.markdown @balloob @synesthesiam
|
source/_integrations/wyoming.markdown @synesthesiam
|
||||||
source/_integrations/xbox.markdown @hunterjm
|
source/_integrations/xbox.markdown @hunterjm
|
||||||
source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi
|
source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi
|
||||||
source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79
|
source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79
|
||||||
|
|||||||
12
Gemfile
12
Gemfile
@ -3,16 +3,16 @@ source 'https://rubygems.org'
|
|||||||
ruby '> 2.5.0'
|
ruby '> 2.5.0'
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'rake', '13.3.0'
|
gem 'rake', '13.3.1'
|
||||||
gem 'jekyll', '4.4.1'
|
gem 'jekyll', '4.4.1'
|
||||||
gem 'compass', '1.0.3'
|
gem 'compass', '1.0.3'
|
||||||
gem 'sass-globbing', '1.1.5'
|
gem 'sass-globbing', '1.1.5'
|
||||||
gem 'stringex', '2.8.6'
|
gem 'stringex', '2.8.6'
|
||||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||||
gem 'sassc', '2.1.0'
|
gem 'sassc', '2.1.0'
|
||||||
gem 'sass-embedded', '1.91.0'
|
gem 'sass-embedded', '1.93.2'
|
||||||
gem 'rubocop', '1.80.1'
|
gem 'rubocop', '1.81.7'
|
||||||
gem 'ruby-lsp', '0.26.1'
|
gem 'ruby-lsp', '0.26.2'
|
||||||
gem 'rackup', '2.2.1'
|
gem 'rackup', '2.2.1'
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -23,8 +23,8 @@ group :jekyll_plugins do
|
|||||||
gem 'jekyll-toc', '0.19.0'
|
gem 'jekyll-toc', '0.19.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
gem 'sinatra', '4.1.1'
|
gem 'sinatra', '4.2.1'
|
||||||
gem 'nokogiri', '1.18.9'
|
gem 'nokogiri', '1.18.10'
|
||||||
|
|
||||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
# and associated library
|
# and associated library
|
||||||
|
|||||||
60
Gemfile.lock
60
Gemfile.lock
@ -5,10 +5,10 @@ GEM
|
|||||||
public_suffix (>= 2.0.2, < 7.0)
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
ast (2.4.3)
|
ast (2.4.3)
|
||||||
base64 (0.3.0)
|
base64 (0.3.0)
|
||||||
bigdecimal (3.2.2)
|
bigdecimal (3.3.1)
|
||||||
chunky_png (1.4.0)
|
chunky_png (1.4.0)
|
||||||
colorator (1.1.0)
|
colorator (1.1.0)
|
||||||
commonmarker (0.23.11)
|
commonmarker (0.23.12)
|
||||||
compass (1.0.3)
|
compass (1.0.3)
|
||||||
chunky_png (~> 1.2)
|
chunky_png (~> 1.2)
|
||||||
compass-core (~> 1.0.2)
|
compass-core (~> 1.0.2)
|
||||||
@ -30,10 +30,10 @@ GEM
|
|||||||
ffi (1.17.2-arm64-darwin)
|
ffi (1.17.2-arm64-darwin)
|
||||||
ffi (1.17.2-x86_64-linux-gnu)
|
ffi (1.17.2-x86_64-linux-gnu)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
google-protobuf (4.32.0-arm64-darwin)
|
google-protobuf (4.33.0-arm64-darwin)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
rake (>= 13)
|
rake (>= 13)
|
||||||
google-protobuf (4.32.0-x86_64-linux-gnu)
|
google-protobuf (4.33.0-x86_64-linux-gnu)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
rake (>= 13)
|
rake (>= 13)
|
||||||
http_parser.rb (0.8.0)
|
http_parser.rb (0.8.0)
|
||||||
@ -70,7 +70,7 @@ GEM
|
|||||||
nokogiri (~> 1.12)
|
nokogiri (~> 1.12)
|
||||||
jekyll-watch (2.2.1)
|
jekyll-watch (2.2.1)
|
||||||
listen (~> 3.0)
|
listen (~> 3.0)
|
||||||
json (2.13.2)
|
json (2.15.2)
|
||||||
kramdown (2.5.1)
|
kramdown (2.5.1)
|
||||||
rexml (>= 3.3.9)
|
rexml (>= 3.3.9)
|
||||||
kramdown-parser-gfm (1.1.0)
|
kramdown-parser-gfm (1.1.0)
|
||||||
@ -86,21 +86,21 @@ GEM
|
|||||||
multi_json (1.17.0)
|
multi_json (1.17.0)
|
||||||
mustermann (3.0.4)
|
mustermann (3.0.4)
|
||||||
ruby2_keywords (~> 0.0.1)
|
ruby2_keywords (~> 0.0.1)
|
||||||
nokogiri (1.18.9-arm64-darwin)
|
nokogiri (1.18.10-arm64-darwin)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
nokogiri (1.18.9-x86_64-linux-gnu)
|
nokogiri (1.18.10-x86_64-linux-gnu)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
parallel (1.27.0)
|
parallel (1.27.0)
|
||||||
parser (3.3.9.0)
|
parser (3.3.10.0)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
racc
|
racc
|
||||||
pathutil (0.16.2)
|
pathutil (0.16.2)
|
||||||
forwardable-extended (~> 2.6)
|
forwardable-extended (~> 2.6)
|
||||||
prism (1.4.0)
|
prism (1.6.0)
|
||||||
public_suffix (6.0.2)
|
public_suffix (6.0.2)
|
||||||
racc (1.8.1)
|
racc (1.8.1)
|
||||||
rack (3.2.1)
|
rack (3.2.4)
|
||||||
rack-protection (4.1.1)
|
rack-protection (4.2.1)
|
||||||
base64 (>= 0.1.0)
|
base64 (>= 0.1.0)
|
||||||
logger (>= 1.6.0)
|
logger (>= 1.6.0)
|
||||||
rack (>= 3.0.0, < 4)
|
rack (>= 3.0.0, < 4)
|
||||||
@ -110,16 +110,16 @@ GEM
|
|||||||
rackup (2.2.1)
|
rackup (2.2.1)
|
||||||
rack (>= 3)
|
rack (>= 3)
|
||||||
rainbow (3.1.1)
|
rainbow (3.1.1)
|
||||||
rake (13.3.0)
|
rake (13.3.1)
|
||||||
rb-fsevent (0.11.2)
|
rb-fsevent (0.11.2)
|
||||||
rb-inotify (0.11.1)
|
rb-inotify (0.11.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rbs (3.9.4)
|
rbs (3.9.5)
|
||||||
logger
|
logger
|
||||||
regexp_parser (2.11.2)
|
regexp_parser (2.11.3)
|
||||||
rexml (3.4.2)
|
rexml (3.4.4)
|
||||||
rouge (4.6.0)
|
rouge (4.6.1)
|
||||||
rubocop (1.80.1)
|
rubocop (1.81.7)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (~> 3.17.0.2)
|
language_server-protocol (~> 3.17.0.2)
|
||||||
lint_roller (~> 1.1.0)
|
lint_roller (~> 1.1.0)
|
||||||
@ -127,13 +127,13 @@ GEM
|
|||||||
parser (>= 3.3.0.2)
|
parser (>= 3.3.0.2)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 2.9.3, < 3.0)
|
regexp_parser (>= 2.9.3, < 3.0)
|
||||||
rubocop-ast (>= 1.46.0, < 2.0)
|
rubocop-ast (>= 1.47.1, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 4.0)
|
unicode-display_width (>= 2.4.0, < 4.0)
|
||||||
rubocop-ast (1.46.0)
|
rubocop-ast (1.47.1)
|
||||||
parser (>= 3.3.7.2)
|
parser (>= 3.3.7.2)
|
||||||
prism (~> 1.4)
|
prism (~> 1.4)
|
||||||
ruby-lsp (0.26.1)
|
ruby-lsp (0.26.2)
|
||||||
language_server-protocol (~> 3.17.0)
|
language_server-protocol (~> 3.17.0)
|
||||||
prism (>= 1.2, < 2.0)
|
prism (>= 1.2, < 2.0)
|
||||||
rbs (>= 3, < 5)
|
rbs (>= 3, < 5)
|
||||||
@ -141,9 +141,9 @@ GEM
|
|||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sass (3.4.25)
|
sass (3.4.25)
|
||||||
sass-embedded (1.91.0-arm64-darwin)
|
sass-embedded (1.93.2-arm64-darwin)
|
||||||
google-protobuf (~> 4.31)
|
google-protobuf (~> 4.31)
|
||||||
sass-embedded (1.91.0-x86_64-linux-gnu)
|
sass-embedded (1.93.2-x86_64-linux-gnu)
|
||||||
google-protobuf (~> 4.31)
|
google-protobuf (~> 4.31)
|
||||||
sass-globbing (1.1.5)
|
sass-globbing (1.1.5)
|
||||||
sass (>= 3.1)
|
sass (>= 3.1)
|
||||||
@ -151,11 +151,11 @@ GEM
|
|||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
sassc (2.1.0-x86_64-linux)
|
sassc (2.1.0-x86_64-linux)
|
||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
sinatra (4.1.1)
|
sinatra (4.2.1)
|
||||||
logger (>= 1.6.0)
|
logger (>= 1.6.0)
|
||||||
mustermann (~> 3.0)
|
mustermann (~> 3.0)
|
||||||
rack (>= 3.0.0, < 4)
|
rack (>= 3.0.0, < 4)
|
||||||
rack-protection (= 4.1.1)
|
rack-protection (= 4.2.1)
|
||||||
rack-session (>= 2.0.0, < 3)
|
rack-session (>= 2.0.0, < 3)
|
||||||
tilt (~> 2.0)
|
tilt (~> 2.0)
|
||||||
stringex (2.8.6)
|
stringex (2.8.6)
|
||||||
@ -180,15 +180,15 @@ DEPENDENCIES
|
|||||||
jekyll-paginate (= 1.1.0)
|
jekyll-paginate (= 1.1.0)
|
||||||
jekyll-sitemap (= 1.4.0)
|
jekyll-sitemap (= 1.4.0)
|
||||||
jekyll-toc (= 0.19.0)
|
jekyll-toc (= 0.19.0)
|
||||||
nokogiri (= 1.18.9)
|
nokogiri (= 1.18.10)
|
||||||
rackup (= 2.2.1)
|
rackup (= 2.2.1)
|
||||||
rake (= 13.3.0)
|
rake (= 13.3.1)
|
||||||
rubocop (= 1.80.1)
|
rubocop (= 1.81.7)
|
||||||
ruby-lsp (= 0.26.1)
|
ruby-lsp (= 0.26.2)
|
||||||
sass-embedded (= 1.91.0)
|
sass-embedded (= 1.93.2)
|
||||||
sass-globbing (= 1.1.5)
|
sass-globbing (= 1.1.5)
|
||||||
sassc (= 2.1.0)
|
sassc (= 2.1.0)
|
||||||
sinatra (= 4.1.1)
|
sinatra (= 4.2.1)
|
||||||
stringex (= 2.8.6)
|
stringex (= 2.8.6)
|
||||||
tzinfo (~> 2.0)
|
tzinfo (~> 2.0)
|
||||||
tzinfo-data
|
tzinfo-data
|
||||||
|
|||||||
25
Rakefile
25
Rakefile
@ -32,6 +32,8 @@ task :generate do
|
|||||||
abort("Generating version data failed") unless success
|
abort("Generating version data failed") unless success
|
||||||
success = system "rake language_scores_data"
|
success = system "rake language_scores_data"
|
||||||
abort("Generating language scores data failed") unless success
|
abort("Generating language scores data failed") unless success
|
||||||
|
success = system "rake codeowners_data"
|
||||||
|
abort("Extracting codeowners") unless success
|
||||||
success = system "jekyll build"
|
success = system "jekyll build"
|
||||||
abort("Generating site failed") unless success
|
abort("Generating site failed") unless success
|
||||||
if ENV["CONTEXT"] != 'production'
|
if ENV["CONTEXT"] != 'production'
|
||||||
@ -71,6 +73,7 @@ task :preview, :listen do |t, args|
|
|||||||
system "rake analytics_data"
|
system "rake analytics_data"
|
||||||
system "rake version_data"
|
system "rake version_data"
|
||||||
system "rake language_scores_data"
|
system "rake language_scores_data"
|
||||||
|
system "rake codeowners_data"
|
||||||
system "rake alerts_data"
|
system "rake alerts_data"
|
||||||
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build -t --watch --incremental")
|
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build -t --watch --incremental")
|
||||||
compassPid = Process.spawn("compass watch")
|
compassPid = Process.spawn("compass watch")
|
||||||
@ -128,3 +131,25 @@ task :language_scores_data do
|
|||||||
file.write(JSON.generate(remote_data))
|
file.write(JSON.generate(remote_data))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc "Extract CODEOWNERS and output to _data/codeowners.json"
|
||||||
|
task :codeowners_data do
|
||||||
|
codeowners = []
|
||||||
|
File.readlines("CODEOWNERS").each do |line|
|
||||||
|
next if line.start_with?("#") || line.strip.empty?
|
||||||
|
parts = line.split
|
||||||
|
next if parts.length < 2
|
||||||
|
owners = parts[1..-1]
|
||||||
|
owners.each do |owner|
|
||||||
|
owner = owner.delete_prefix('@')
|
||||||
|
next if owner.include?('/')
|
||||||
|
codeowners << owner unless codeowners.include?(owner)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
codeowners.sort!
|
||||||
|
|
||||||
|
File.open("#{source_dir}/_data/codeowners.json", "w") do |file|
|
||||||
|
file.write(JSON.generate(codeowners))
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -107,9 +107,9 @@ social:
|
|||||||
|
|
||||||
# Home Assistant release details
|
# Home Assistant release details
|
||||||
current_major_version: 2025
|
current_major_version: 2025
|
||||||
current_minor_version: 9
|
current_minor_version: 11
|
||||||
current_patch_version: 0
|
current_patch_version: 0
|
||||||
date_released: 2025-09-03
|
date_released: 2025-11-05
|
||||||
|
|
||||||
# Either # or the anchor link to latest release notes in the blog post.
|
# Either # or the anchor link to latest release notes in the blog post.
|
||||||
# Must be prefixed with a # and have double quotes around it.
|
# Must be prefixed with a # and have double quotes around it.
|
||||||
|
|||||||
BIN
activity-panel.png
Normal file
BIN
activity-panel.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
355
package-lock.json
generated
355
package-lock.json
generated
@ -20,11 +20,11 @@
|
|||||||
"remark-lint-prohibited-strings": "^4.0.0",
|
"remark-lint-prohibited-strings": "^4.0.0",
|
||||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||||
"remark-stringify": "^11.0.0",
|
"remark-stringify": "^11.0.0",
|
||||||
"textlint": "^15.2.2",
|
"textlint": "^15.2.3",
|
||||||
"textlint-filter-rule-allowlist": "^4.0.0",
|
"textlint-filter-rule-allowlist": "^4.0.0",
|
||||||
"textlint-filter-rule-comments": "^1.2.2",
|
"textlint-filter-rule-comments": "^1.2.2",
|
||||||
"textlint-rule-common-misspellings": "^1.0.1",
|
"textlint-rule-common-misspellings": "^1.0.1",
|
||||||
"textlint-rule-terminology": "^5.2.15"
|
"textlint-rule-terminology": "^5.2.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@azu/format-text": {
|
"node_modules/@azu/format-text": {
|
||||||
@ -144,9 +144,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@modelcontextprotocol/sdk": {
|
"node_modules/@modelcontextprotocol/sdk": {
|
||||||
"version": "1.17.3",
|
"version": "1.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz",
|
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.0.tgz",
|
||||||
"integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==",
|
"integrity": "sha512-kOQ4+fHuT4KbR2iq2IjeV32HiihueuOf1vJkq18z08CLZ1UQrTc8BXJpVfxZkq45+inLLD+D4xx4nBjUelJa4Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -267,82 +267,68 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/ast-node-types": {
|
"node_modules/@textlint/ast-node-types": {
|
||||||
"version": "13.4.1",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.3.tgz",
|
||||||
"integrity": "sha512-qrZyhCh8Ekk6nwArx3BROybm9BnX6vF7VcZbijetV/OM3yfS4rTYhoMWISmhVEP2H2re0CtWEyMl/XF+WdvVLQ==",
|
"integrity": "sha512-GEhoxfmh6TF+xC8TJmAUwOzzh0J6sVDqjKhwTTwetf7YDdhHbIv1PuUb/dTadMVIWs1H0+JD4Y27n6LWMmqn9Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/ast-tester": {
|
"node_modules/@textlint/ast-tester": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-15.2.3.tgz",
|
||||||
"integrity": "sha512-puwnJSPOeqtPQslz6ehfEF1wqoTb/iTebHj+vy6zePpHhBZRJdZKOqPe7p83Atetc8O5SEYa1aJ8ur8sSm0wQw==",
|
"integrity": "sha512-eT0DBbQTa7Hm0JRRHT9vUv6VoIuY19eqI8UL2I7AzE820DSrrNkgGg/ZxB9I6BCDK/Yg96lJ45fMIeOFPvuJaQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2",
|
"@textlint/ast-node-types": "15.2.3",
|
||||||
"debug": "^4.4.1"
|
"debug": "^4.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/ast-traverse": {
|
"node_modules/@textlint/ast-traverse": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-15.2.3.tgz",
|
||||||
"integrity": "sha512-5uZCNp6fSYvDgQW3LGnJYC90ac1qWhUZJtjE1tI0fPk7U14Gr0Qu5FEOMuW0YUV5aoo3P1OpwrKPt2U6FFlrvg==",
|
"integrity": "sha512-XqlEVbQanAu40pGrtoRJzV3bWUxiCvqpu6FBmHotUgah1jjNWe6DQRkDsjcil9qXrVjXfQFAjG8ZuDk9/sUcGg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2"
|
"@textlint/ast-node-types": "15.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/config-loader": {
|
"node_modules/@textlint/config-loader": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-15.2.3.tgz",
|
||||||
"integrity": "sha512-uFlxTMhgS0jLzdn4xd3TDS/3QWlE8br2LQVnCjdNmvyU7qNpXHy/9+XUEfbvVMyBXrfBnDIFY4AQAXfhGdOo7g==",
|
"integrity": "sha512-dSedypITXGyh/Bz0t/tQU1NMyehfZeeYhEMtfqpdFY6a3ABLpfaZpOMOZd9EP4zwu2oi2OsooQBMbn/ZdXJ12w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/kernel": "15.2.2",
|
"@textlint/kernel": "15.2.3",
|
||||||
"@textlint/module-interop": "15.2.2",
|
"@textlint/module-interop": "15.2.3",
|
||||||
"@textlint/resolver": "15.2.2",
|
"@textlint/resolver": "15.2.3",
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"@textlint/utils": "15.2.2",
|
"@textlint/utils": "15.2.3",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"rc-config-loader": "^4.1.3"
|
"rc-config-loader": "^4.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/feature-flag": {
|
"node_modules/@textlint/feature-flag": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-15.2.3.tgz",
|
||||||
"integrity": "sha512-SX//fr056jGT3aRDbPTz4k0kEqyHRTvbHTr7HgC3yuksO89NKl605gmU9flrykBZC+i4GOMcR2BL4SweiNXbTg==",
|
"integrity": "sha512-XW2NVj3K7Pi8jlgwxKMUh7L1y+EMN+s47TtEC1rkagI581THgHnAyAe+/aHZsF/CJEwevZtGnaan2MY1rnbsYA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/fixer-formatter": {
|
"node_modules/@textlint/fixer-formatter": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-15.2.3.tgz",
|
||||||
"integrity": "sha512-wX52sevPrM/hWDAolBm5yJkSQ5QGmLYMja4C1Ao3o/HVO5eI/Q6PS8amtoGJOilOXKrVV0hBuEwGdrXuyGngXw==",
|
"integrity": "sha512-cdA3Pt2aaR2NKDBqv/rZiZ8VIuTsUZYX1uaq6v2T2HDFlHn46gv6A4TPg8w5ACpoHid1+kADqe67GRpCxPb9rQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/module-interop": "15.2.2",
|
"@textlint/module-interop": "15.2.3",
|
||||||
"@textlint/resolver": "15.2.2",
|
"@textlint/resolver": "15.2.3",
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"chalk": "^4.1.2",
|
"chalk": "^4.1.2",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"diff": "^5.2.0",
|
"diff": "^5.2.0",
|
||||||
"string-width": "^4.2.3",
|
"string-width": "^4.2.3",
|
||||||
"strip-ansi": "^6.0.1",
|
"strip-ansi": "^6.0.1",
|
||||||
@ -356,45 +342,38 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/kernel": {
|
"node_modules/@textlint/kernel": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-15.2.3.tgz",
|
||||||
"integrity": "sha512-xFtIx3thI3SC2wk4uApJ5lW0cks4pkSfoRejfYoAMwPd1VyvFhCsQQWNRTyXIlXfNIGT6qY82SoPyXvi3XF6Zg==",
|
"integrity": "sha512-A+YVhh5cFMDrNbnhA754/PT2WrVirQ/zCvGKJz/+yKR+ju97eQc6wZOcu/vYAEsS0+vDZRyR/opD+aOaI3GHZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2",
|
"@textlint/ast-node-types": "15.2.3",
|
||||||
"@textlint/ast-tester": "15.2.2",
|
"@textlint/ast-tester": "15.2.3",
|
||||||
"@textlint/ast-traverse": "15.2.2",
|
"@textlint/ast-traverse": "15.2.3",
|
||||||
"@textlint/feature-flag": "15.2.2",
|
"@textlint/feature-flag": "15.2.3",
|
||||||
"@textlint/source-code-fixer": "15.2.2",
|
"@textlint/source-code-fixer": "15.2.3",
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"@textlint/utils": "15.2.2",
|
"@textlint/utils": "15.2.3",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"fast-equals": "^4.0.3",
|
"fast-equals": "^4.0.3",
|
||||||
"structured-source": "^4.0.0"
|
"structured-source": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/linter-formatter": {
|
"node_modules/@textlint/linter-formatter": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.2.3.tgz",
|
||||||
"integrity": "sha512-oMVaMJ3exFvXhCj3AqmCbLaeYrTNLqaJnLJMIlmnRM3/kZdxvku4OYdaDzgtlI194cVxamOY5AbHBBVnY79kEg==",
|
"integrity": "sha512-gnFGl8MejAS4rRDPKV2OYvU0Tb0iJySOPDahf+RCK30b615UqY6CjqWxXw1FvXfT3pHPoRrefVu39j1AKm2ezg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azu/format-text": "^1.0.2",
|
"@azu/format-text": "^1.0.2",
|
||||||
"@azu/style-format": "^1.0.1",
|
"@azu/style-format": "^1.0.1",
|
||||||
"@textlint/module-interop": "15.2.2",
|
"@textlint/module-interop": "15.2.3",
|
||||||
"@textlint/resolver": "15.2.2",
|
"@textlint/resolver": "15.2.3",
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"chalk": "^4.1.2",
|
"chalk": "^4.1.2",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"js-yaml": "^3.14.1",
|
"js-yaml": "^3.14.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"pluralize": "^2.0.0",
|
"pluralize": "^2.0.0",
|
||||||
@ -405,14 +384,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/markdown-to-ast": {
|
"node_modules/@textlint/markdown-to-ast": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-15.2.3.tgz",
|
||||||
"integrity": "sha512-7LsDOCApuM5463e4mfJAORyOMDxzJGmfDfoT6RtwL5P1T1kKGxLl5yudzdfm8++WB8v4wJZZEUQqppejeDRs9Q==",
|
"integrity": "sha512-5kz75TBEOUQIpqCaV65l98YSIpfyOyTKSn4et9A//iSbjiwZHDK3HBo2jDWdkHmGX28+w1hBFDR7/eFMnbxAJQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2",
|
"@textlint/ast-node-types": "15.2.3",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||||
"neotraverse": "^0.6.18",
|
"neotraverse": "^0.6.18",
|
||||||
"remark-footnotes": "^3.0.0",
|
"remark-footnotes": "^3.0.0",
|
||||||
@ -423,13 +402,6 @@
|
|||||||
"unified": "^9.2.2"
|
"unified": "^9.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/markdown-to-ast/node_modules/bail": {
|
"node_modules/@textlint/markdown-to-ast/node_modules/bail": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
|
||||||
@ -673,9 +645,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/module-interop": {
|
"node_modules/@textlint/module-interop": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.2.3.tgz",
|
||||||
"integrity": "sha512-2rmNcWrcqhuR84Iio1WRzlc4tEoOMHd6T7urjtKNNefpTt1owrTJ9WuOe60yD3FrTW0J/R0ux5wxUbP/eaeFOA==",
|
"integrity": "sha512-dV6M3ptOFJjR5bgYUMeVqc8AqFrMtCEFaZEiLAfMufX29asYonI2K8arqivOA69S2Lh6esyij6V7qpQiXeK/cA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@ -703,83 +675,69 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/resolver": {
|
"node_modules/@textlint/resolver": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.2.3.tgz",
|
||||||
"integrity": "sha512-4hGWjmHt0y+5NAkoYZ8FvEkj8Mez9TqfbTm3BPjoV32cIfEixl2poTOgapn1rfm73905GSO3P1jiWjmgvii13Q==",
|
"integrity": "sha512-Qd3udqo2sWa3u0sYgDVd9M/iybBVBJLrWGaID6Yzl9GyhdGi0E6ngo3b9r+H6psbJDIaCKi54IxvC9q5didWfA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/source-code-fixer": {
|
"node_modules/@textlint/source-code-fixer": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-15.2.3.tgz",
|
||||||
"integrity": "sha512-Cstr9wjK7toLmY2hhlZ3YcIh8o/gr7E5dpCd9IalNiMBedvvLYuOfhktKgUa4E7oFcGtl0leDPgx5ENDY25JDw==",
|
"integrity": "sha512-DfKy15kGFG8ddEYDyeRKilVI3nTSdEp5/sw7ariyUXk2spAW8xdToRpgeMaluF4Cp5gcGa6bVOTDJapj/UfFvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"debug": "^4.4.1"
|
"debug": "^4.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/text-to-ast": {
|
"node_modules/@textlint/text-to-ast": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-15.2.3.tgz",
|
||||||
"integrity": "sha512-IphrojtJw3eW/1JMm/Hzc0dsDFALpEzjankABS6tIHMvB2O+2wejRDbDaqmgCgMCr+lGKoMNg5Xvlr5x9XRxww==",
|
"integrity": "sha512-xweE4sDTz56tLy90UXcjn/YEYZr2NH/Kh4Kr5FmQ8K4MtJXOVOubnwmN9503/Vmj4Mq9uNuEzR35D4H2LVHriQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2"
|
"@textlint/ast-node-types": "15.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-15.2.3.tgz",
|
||||||
"integrity": "sha512-JzmHAtC2C4LOpJ/JD2YsqBZt9ej4khFFDI0d9E6P9y9AO/HOEv4GeT7aAjGGPG6AVO977aGiJ92EK9kTwlVnIQ==",
|
"integrity": "sha512-fpHuWt1Tonl+UuObH5upByvPWQjd9swu+beMlrSagBWTFblEyNxGwgaQkTjaWC/SYqJn4TkTsT1c1IZJaHV5oQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/markdown-to-ast": "15.2.2",
|
"@textlint/markdown-to-ast": "15.2.3",
|
||||||
"@textlint/types": "15.2.2"
|
"@textlint/types": "15.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/textlint-plugin-text": {
|
"node_modules/@textlint/textlint-plugin-text": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-15.2.3.tgz",
|
||||||
"integrity": "sha512-bZYlxw8S9zsuJgx2EAR23RFyQ3JtyuIDUA3dbt5Sov2eo20LitNjDIqrQgDo85widbOD/6rG7VioNesV1/6HFw==",
|
"integrity": "sha512-d5a1dXCYqx3cz8Q8dg5JFqWGbZHbfnYIKsue5DndEY6YtZ99JnaAvReo6GuJK5Pg+6pgOys2OvyZRxFA4D59fQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/text-to-ast": "15.2.2",
|
"@textlint/text-to-ast": "15.2.3",
|
||||||
"@textlint/types": "15.2.2"
|
"@textlint/types": "15.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/types": {
|
"node_modules/@textlint/types": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.2.3.tgz",
|
||||||
"integrity": "sha512-X2BHGAR3yXJsCAjwYEDBIk9qUDWcH4pW61ISfmtejau+tVqKtnbbvEZnMTb6mWgKU1BvTmftd5DmB1XVDUtY3g==",
|
"integrity": "sha512-i8XVmDHJwykMXcGgkSxZLjdbeqnl+voYAcIr94KIe0STwgkHIhwHJgb/tEVFawGClHo+gPczF12l1C5+TAZEzQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "15.2.2"
|
"@textlint/ast-node-types": "15.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@textlint/types/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@textlint/utils": {
|
"node_modules/@textlint/utils": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-15.2.3.tgz",
|
||||||
"integrity": "sha512-uPCfBl2NF4tiXGjAE5DAwah0Bn/EFsgtXhDEIJV4hsSfBQBD8Guqnh8MvJj25fvZaQS+MTNGiEC6bFXtIMHuAg==",
|
"integrity": "sha512-B5OHi1P6JA0Hy04MmmTeNXFTsSfvgbbqQAWj9iUHg+GhPtd8GyFzb0uxLDIp1oqAGN8eM2hR/n8vwz4WsfPqMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@ -1380,9 +1338,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
"version": "4.4.1",
|
"version": "4.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
||||||
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
|
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -1616,13 +1574,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eventsource-parser": {
|
"node_modules/eventsource-parser": {
|
||||||
"version": "3.0.5",
|
"version": "3.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
|
||||||
"integrity": "sha512-bSRG85ZrMdmWtm7qkF9He9TNRzc/Bm99gEJMaQoHJ9E6Kv9QBbsldh2oMj7iXmYNEAVvNgvv5vPorG6W+XtBhQ==",
|
"integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.0.0"
|
"node": ">=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/execall": {
|
"node_modules/execall": {
|
||||||
@ -1744,9 +1702,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/fast-uri": {
|
"node_modules/fast-uri": {
|
||||||
"version": "3.0.6",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
|
||||||
"integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
|
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -2480,7 +2438,8 @@
|
|||||||
"version": "4.17.21",
|
"version": "4.17.21",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/lodash.sortby": {
|
"node_modules/lodash.sortby": {
|
||||||
"version": "4.7.0",
|
"version": "4.7.0",
|
||||||
@ -4488,13 +4447,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/path-to-regexp": {
|
"node_modules/path-to-regexp": {
|
||||||
"version": "8.2.0",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
|
||||||
"integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
|
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"funding": {
|
||||||
"node": ">=16"
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
@ -4613,19 +4573,36 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/raw-body": {
|
"node_modules/raw-body": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
|
||||||
"integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
|
"integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bytes": "3.1.2",
|
"bytes": "3.1.2",
|
||||||
"http-errors": "2.0.0",
|
"http-errors": "2.0.0",
|
||||||
"iconv-lite": "0.6.3",
|
"iconv-lite": "0.7.0",
|
||||||
"unpipe": "1.0.0"
|
"unpipe": "1.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/raw-body/node_modules/iconv-lite": {
|
||||||
|
"version": "0.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
|
||||||
|
"integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rc-config-loader": {
|
"node_modules/rc-config-loader": {
|
||||||
@ -6715,9 +6692,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strip-json-comments": {
|
"node_modules/strip-json-comments": {
|
||||||
"version": "5.0.2",
|
"version": "5.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz",
|
||||||
"integrity": "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==",
|
"integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -6797,28 +6774,28 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/textlint": {
|
"node_modules/textlint": {
|
||||||
"version": "15.2.2",
|
"version": "15.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-15.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/textlint/-/textlint-15.2.3.tgz",
|
||||||
"integrity": "sha512-0V02Lvs7GJfXPNJgBVhayysW+9qe0bZVmyD8FrYzkW70xZcSoVK4Hdl6825wpQqn8KgdB171WNYlWq5FPEAPgg==",
|
"integrity": "sha512-TV6STsR0iDSuBtQTtgtAlQVT65OubHcpxOIGxWgRCBfRqlEwdkD6v3tx6ydE16nk0VdpPJP3/PuIMLKQSQk/ZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "^1.17.2",
|
"@modelcontextprotocol/sdk": "^1.19.1",
|
||||||
"@textlint/ast-node-types": "15.2.2",
|
"@textlint/ast-node-types": "15.2.3",
|
||||||
"@textlint/ast-traverse": "15.2.2",
|
"@textlint/ast-traverse": "15.2.3",
|
||||||
"@textlint/config-loader": "15.2.2",
|
"@textlint/config-loader": "15.2.3",
|
||||||
"@textlint/feature-flag": "15.2.2",
|
"@textlint/feature-flag": "15.2.3",
|
||||||
"@textlint/fixer-formatter": "15.2.2",
|
"@textlint/fixer-formatter": "15.2.3",
|
||||||
"@textlint/kernel": "15.2.2",
|
"@textlint/kernel": "15.2.3",
|
||||||
"@textlint/linter-formatter": "15.2.2",
|
"@textlint/linter-formatter": "15.2.3",
|
||||||
"@textlint/module-interop": "15.2.2",
|
"@textlint/module-interop": "15.2.3",
|
||||||
"@textlint/resolver": "15.2.2",
|
"@textlint/resolver": "15.2.3",
|
||||||
"@textlint/textlint-plugin-markdown": "15.2.2",
|
"@textlint/textlint-plugin-markdown": "15.2.3",
|
||||||
"@textlint/textlint-plugin-text": "15.2.2",
|
"@textlint/textlint-plugin-text": "15.2.3",
|
||||||
"@textlint/types": "15.2.2",
|
"@textlint/types": "15.2.3",
|
||||||
"@textlint/utils": "15.2.2",
|
"@textlint/utils": "15.2.3",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.3",
|
||||||
"file-entry-cache": "^10.1.3",
|
"file-entry-cache": "^10.1.4",
|
||||||
"glob": "^10.4.5",
|
"glob": "^10.4.5",
|
||||||
"md5": "^2.3.0",
|
"md5": "^2.3.0",
|
||||||
"optionator": "^0.9.4",
|
"optionator": "^0.9.4",
|
||||||
@ -6927,39 +6904,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/textlint-rule-terminology": {
|
"node_modules/textlint-rule-terminology": {
|
||||||
"version": "5.2.15",
|
"version": "5.2.16",
|
||||||
"resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.2.15.tgz",
|
"resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.2.16.tgz",
|
||||||
"integrity": "sha512-Gmh4au9iB14aNEFNi8fCF3gYYdL5tHw4Ihw1DMGpEADiK4j75PYGFOElzjqmyqRNnhLPWxY/b5OrP77EYmPasA==",
|
"integrity": "sha512-1HQotOLJb6kGAgmRYEA9KiIU+fQupZcOVpZEEhFwmRempvpNnhKowa7Zfpss2v6sbp8Ya+iXRs9xKGw+xheCbQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lodash": "^4.17.21",
|
"strip-json-comments": "^5.0.3",
|
||||||
"strip-json-comments": "^5.0.1",
|
"textlint-rule-helper": "^2.5.0"
|
||||||
"textlint-rule-helper": "^2.3.1"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/textlint-rule-terminology/node_modules/textlint-rule-helper": {
|
"node_modules/textlint-rule-terminology/node_modules/textlint-rule-helper": {
|
||||||
"version": "2.3.1",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.5.0.tgz",
|
||||||
"integrity": "sha512-b1bijvyiUmKinfFE5hkQMSXs3Ky8jyZ3Y6SOoTRJKV9HLL2LWUVFAUezO7z4FpAkVvYruDYWCwA5qWV8GmvyUw==",
|
"integrity": "sha512-QIbFPtyqLy0g5BJn8mryk9iHzGYicNaFIpLFPiEnb4RXxrEGeQ2W2aARQ9yEXLIAqo+OwK4ndWBAWkbgJEPzTQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@textlint/ast-node-types": "^13.4.1",
|
"@textlint/ast-node-types": "^15.2.1",
|
||||||
"structured-source": "^4.0.0",
|
"structured-source": "^4.0.0",
|
||||||
"unist-util-visit": "^2.0.3"
|
"unist-util-visit": "^2.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/textlint/node_modules/@textlint/ast-node-types": {
|
|
||||||
"version": "15.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz",
|
|
||||||
"integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/textlint/node_modules/brace-expansion": {
|
"node_modules/textlint/node_modules/brace-expansion": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||||
|
|||||||
@ -15,11 +15,11 @@
|
|||||||
"remark-lint-prohibited-strings": "^4.0.0",
|
"remark-lint-prohibited-strings": "^4.0.0",
|
||||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||||
"remark-stringify": "^11.0.0",
|
"remark-stringify": "^11.0.0",
|
||||||
"textlint": "^15.2.2",
|
"textlint": "^15.2.3",
|
||||||
"textlint-filter-rule-allowlist": "^4.0.0",
|
"textlint-filter-rule-allowlist": "^4.0.0",
|
||||||
"textlint-filter-rule-comments": "^1.2.2",
|
"textlint-filter-rule-comments": "^1.2.2",
|
||||||
"textlint-rule-common-misspellings": "^1.0.1",
|
"textlint-rule-common-misspellings": "^1.0.1",
|
||||||
"textlint-rule-terminology": "^5.2.15"
|
"textlint-rule-terminology": "^5.2.16"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"minimist": ">=1.2.5"
|
"minimist": ">=1.2.5"
|
||||||
|
|||||||
@ -328,6 +328,7 @@ dd {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
|
||||||
@media only screen and (max-width: $menu-collapse) {
|
@media only screen and (max-width: $menu-collapse) {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
@ -612,11 +613,11 @@ a.material-card:hover {
|
|||||||
.links ul {
|
.links ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.links li {
|
.links li {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.installation-survey {
|
.installation-survey {
|
||||||
@ -894,10 +895,19 @@ a.material-card:hover {
|
|||||||
// make it blink every 1.5 seconds, no smoothing
|
// make it blink every 1.5 seconds, no smoothing
|
||||||
animation: blink 1.5s infinite;
|
animation: blink 1.5s infinite;
|
||||||
animation-timing-function: steps(1);
|
animation-timing-function: steps(1);
|
||||||
|
|
||||||
@keyframes blink {
|
@keyframes blink {
|
||||||
0% { opacity: 1; }
|
0% {
|
||||||
50% { opacity: 0.2; }
|
opacity: 1;
|
||||||
100% { opacity: 1; }
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1228,12 +1238,48 @@ article.listing {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: rgba(0, 0, 0, 0.5) 0 0 1px;
|
box-shadow: rgba(0, 0, 0, 0.5) 0 0 1px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
img,
|
||||||
|
table,
|
||||||
|
div.contain {
|
||||||
&+p {
|
&+p {
|
||||||
margin-top: 1.5rem;
|
margin-top: 1.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.contain {
|
||||||
|
display: grid;
|
||||||
|
font-size: .9rem;
|
||||||
|
font-style: italic;
|
||||||
|
gap: 16px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
background-color: unset;
|
||||||
|
border-radius: 20px;
|
||||||
|
border: unset;
|
||||||
|
box-shadow: unset;
|
||||||
|
display: block;
|
||||||
|
filter: drop-shadow(0 6px 16px rgba(0, 0, 0, 0.1));
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 620px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.fw{
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.nb {
|
||||||
|
img {
|
||||||
|
border-radius: unset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
img.no-shadow {
|
img.no-shadow {
|
||||||
border: 0;
|
border: 0;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
@ -1275,11 +1321,20 @@ article.listing {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border-width: 8px;
|
border-width: 8px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
box-shadow: rgba(0, 0, 0, 0.5) 0 0 1px;
|
box-shadow: rgba(0, 0, 0, 0.5) 0 0 1px;
|
||||||
|
font-style: italic;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
||||||
|
lite-youtube{
|
||||||
|
border-bottom-left-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 auto 8px;
|
||||||
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
display: block;
|
display: block;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
@ -1308,10 +1363,10 @@ article.listing {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
&[rel*="external"]{
|
&[rel*="external"] {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&:after{
|
&:after {
|
||||||
content: "\00a0\00a0\00a0\00a0\00a0";
|
content: "\00a0\00a0\00a0\00a0\00a0";
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
#getting_started {
|
#getting_started {
|
||||||
|
|
||||||
.installations {
|
.installations {
|
||||||
|
&.second {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
background: #e8e6f0;
|
background: #e8e6f0;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@ -143,7 +147,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
iconify-icon.external-link {
|
iconify-icon.external-link {
|
||||||
padding-top: 4px;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
@ -285,4 +289,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
132
sass/homeassistant/pages/community/_base.scss
Normal file
132
sass/homeassistant/pages/community/_base.scss
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: calc(var(--container-max-width) + (var(--container-gutters) * 2));
|
||||||
|
padding: 12px calc(var(--container-gutters) / 2);
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
padding: 12px var(--container-gutters);
|
||||||
|
}
|
||||||
|
|
||||||
|
&-full {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 calc(var(--container-gutters) / 2);
|
||||||
|
max-width: calc(var(--container-full-max-width) + (var(--container-gutters) * 2));
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
padding: 0 var(--container-gutters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
footer{
|
||||||
|
isolation: isolate;
|
||||||
|
position: relative;
|
||||||
|
&:before{
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
height: 500px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 100%;
|
||||||
|
background: linear-gradient(180deg, #F5F6FA 0%, #FFFFFF 100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html{
|
||||||
|
scroll-padding-top: 92px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#landingpage {
|
||||||
|
background-color: #F5F6FA;
|
||||||
|
color: #002332;
|
||||||
|
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
.page-content {
|
||||||
|
overflow-x: clip;
|
||||||
|
padding-top: 68px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
max-width: unset;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
box-shadow: unset;
|
||||||
|
vertical-align: unset;
|
||||||
|
border: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding: var(--section-spacing-y) 0;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
main#page-community {
|
||||||
|
h1,
|
||||||
|
.h1 {
|
||||||
|
@include h1;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2,
|
||||||
|
.h2 {
|
||||||
|
@include h2;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3,
|
||||||
|
.h3 {
|
||||||
|
@include h3;
|
||||||
|
text-transform: unset;
|
||||||
|
letter-spacing: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4,
|
||||||
|
.h4 {
|
||||||
|
@include h4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5,
|
||||||
|
.h5 {
|
||||||
|
@include h5;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6,
|
||||||
|
.h6 {
|
||||||
|
@include h6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small {
|
||||||
|
@include small;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big {
|
||||||
|
@include big;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: var(--typography-paragraph-color);
|
||||||
|
font-size: var(--typography-paragraph-font-size);
|
||||||
|
font-weight: var(--typography-paragraph-font-weight);
|
||||||
|
line-height: var(--typography-paragraph-line-height);
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
107
sass/homeassistant/pages/community/_buttons.scss
Normal file
107
sass/homeassistant/pages/community/_buttons.scss
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
.button {
|
||||||
|
// Reset - remove after global button refactor
|
||||||
|
border: unset;
|
||||||
|
color: initial;
|
||||||
|
height: unset;
|
||||||
|
line-height: initial;
|
||||||
|
margin: unset;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
align-items: center;
|
||||||
|
background-color: #99DFFC;
|
||||||
|
border-radius: 40px;
|
||||||
|
display: inline-flex;
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 10px 24px;
|
||||||
|
transition: color 0.2s ease, background-color 0.2s ease;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: unset;
|
||||||
|
background-color: var(--color-primary);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.icon) {
|
||||||
|
gap: 4px;
|
||||||
|
padding: 4px 14px 4px 4px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
gap: 10px;
|
||||||
|
padding: 8px 24px 8px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.secondary {
|
||||||
|
background-color: var(--color-secondary);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--color-primary);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hollow-dark {
|
||||||
|
background-color: unset;
|
||||||
|
box-shadow: inset 0 0 0 1px #fff;
|
||||||
|
color: #ffffff;
|
||||||
|
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #002332;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 12px;
|
||||||
|
|
||||||
|
// If DSAP is enabled
|
||||||
|
&[data-dsap] {
|
||||||
|
|
||||||
|
// Only apply if scrolling down into view
|
||||||
|
&:not([data-dsap-is="in"]):not([data-dsap-is="above"]) {
|
||||||
|
// Only if scrolling down into the element
|
||||||
|
|
||||||
|
.button {
|
||||||
|
transition-duration: 0s;
|
||||||
|
transition-delay: 0s;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(50px);
|
||||||
|
scale: 0.85;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
transform: translateY(0);
|
||||||
|
|
||||||
|
@for $i from 1 through 10 {
|
||||||
|
&:nth-child(#{$i}) {
|
||||||
|
transition-property: transform, opacity, scale;
|
||||||
|
transition-duration: .5s;
|
||||||
|
transition-delay: #{0.1 + ($i * 0.05)}s;
|
||||||
|
transition-timing-function: cubic-bezier(0.2, 1, 0.5, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
gap: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
21
sass/homeassistant/pages/community/_event-card.scss
Normal file
21
sass/homeassistant/pages/community/_event-card.scss
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
.event-card{
|
||||||
|
background-color: rgba(255,255,255,0.4);
|
||||||
|
padding: 12px;
|
||||||
|
border-radius: 12px;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
|
||||||
|
.button{
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-title{
|
||||||
|
@include h4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-meta{
|
||||||
|
@include p;
|
||||||
|
color: #4F606E;
|
||||||
|
margin-top: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
25
sass/homeassistant/pages/community/_icon.scss
Normal file
25
sass/homeassistant/pages/community/_icon.scss
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
.icon{
|
||||||
|
aspect-ratio: 1/1;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 50%;
|
||||||
|
color: #002332;
|
||||||
|
height: 100%;
|
||||||
|
padding: 4px;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
height: 24px;
|
||||||
|
width: 24px;
|
||||||
|
|
||||||
|
&:has(use[href="#facebook"]){
|
||||||
|
padding: 0;
|
||||||
|
svg{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svg{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
84
sass/homeassistant/pages/community/_mixins.scss
Normal file
84
sass/homeassistant/pages/community/_mixins.scss
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
@mixin bp($breakpoint) {
|
||||||
|
@if $breakpoint ==large-mobile {
|
||||||
|
@media (min-width: 500px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@else if $breakpoint ==tablet {
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@else if $breakpoint ==desktop {
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@else if $breakpoint ==large-desktop {
|
||||||
|
@media (min-width: 1280px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// else if the breakpoint is a pixel value, use it as is
|
||||||
|
@else {
|
||||||
|
@media (min-width: $breakpoint) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin h1 {
|
||||||
|
font-size: var(--typography-h1-font-size);
|
||||||
|
font-weight: var(--typography-h1-font-weight);
|
||||||
|
line-height: var(--typography-h1-line-height);
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
@mixin h2 {
|
||||||
|
font-size: var(--typography-h2-font-size);
|
||||||
|
font-weight: var(--typography-h2-font-weight);
|
||||||
|
line-height: var(--typography-h2-line-height);
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
@mixin h3 {
|
||||||
|
font-size: var(--typography-h3-font-size);
|
||||||
|
font-weight: var(--typography-h3-font-weight);
|
||||||
|
line-height: var(--typography-h3-line-height);
|
||||||
|
}
|
||||||
|
@mixin h4 {
|
||||||
|
font-size: var(--typography-h4-font-size);
|
||||||
|
font-weight: var(--typography-h4-font-weight);
|
||||||
|
line-height: var(--typography-h4-line-height);
|
||||||
|
}
|
||||||
|
@mixin h5 {
|
||||||
|
font-size: var(--typography-h5-font-size);
|
||||||
|
font-weight: var(--typography-h5-font-weight);
|
||||||
|
line-height: var(--typography-h5-line-height);
|
||||||
|
}
|
||||||
|
@mixin h6 {
|
||||||
|
font-size: var(--typography-h6-font-size);
|
||||||
|
font-weight: var(--typography-h6-font-weight);
|
||||||
|
line-height: var(--typography-h6-line-height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin p {
|
||||||
|
font-size: var(--typography-paragraph-font-size);
|
||||||
|
font-weight: var(--typography-paragraph-font-weight);
|
||||||
|
line-height: var(--typography-paragraph-line-height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin small{
|
||||||
|
font-size: var(--typography-small-paragraph-font-size, var(--typography-paragraph-font-size));
|
||||||
|
font-weight: var(--typography-small-paragraph-font-weight, var(--typography-paragraph-font-weight));
|
||||||
|
line-height: var(--typography-small-paragraph-line-height, var(--typography-paragraph-line-height));
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin big {
|
||||||
|
font-size: var(--typography-big-font-size);
|
||||||
|
font-weight: var(--typography-big-font-weight);
|
||||||
|
line-height: var(--typography-big-line-height);
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
92
sass/homeassistant/pages/community/_photos.scss
Normal file
92
sass/homeassistant/pages/community/_photos.scss
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
.photos {
|
||||||
|
display: grid;
|
||||||
|
isolation: isolate;
|
||||||
|
place-items: center;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&[data-dsap]:not([data-dsap-is="in"]):not([data-dsap-is="above"]) { // Only if scrolling down into the element
|
||||||
|
.photo {
|
||||||
|
opacity: 0;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
transform: rotate(0) scale(0.8);
|
||||||
|
transition-duration: 0s;
|
||||||
|
transition-delay: 0s;
|
||||||
|
|
||||||
|
&.large {
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo {
|
||||||
|
background-color: #ffffff;
|
||||||
|
grid-area: 1/1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
transition-property: transform, opacity, top, left, right;
|
||||||
|
transition-duration: .8s;
|
||||||
|
transition-delay: .25s;
|
||||||
|
transition-timing-function: cubic-bezier(0.2, 1, 0.5, 1);
|
||||||
|
|
||||||
|
@for $i from 1 through 3 {
|
||||||
|
&:nth-child(#{$i}) {
|
||||||
|
transition-delay: #{0.25 + ($i * 0.05)}s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
aspect-ratio: 1/1;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.small {
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 6px;
|
||||||
|
position: absolute;
|
||||||
|
right: -15%;
|
||||||
|
top: -10%;
|
||||||
|
width: 50%;
|
||||||
|
z-index: 1;
|
||||||
|
transform: rotate(9deg);
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.medium {
|
||||||
|
border-radius: 12px;
|
||||||
|
left: -10%;
|
||||||
|
padding: 8px;
|
||||||
|
position: absolute;
|
||||||
|
top: -15%;
|
||||||
|
width: 70%;
|
||||||
|
z-index: 2;
|
||||||
|
transform: rotate(-15deg);
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.large {
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 12px;
|
||||||
|
z-index: 3;
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
26
sass/homeassistant/pages/community/_stats.scss
Normal file
26
sass/homeassistant/pages/community/_stats.scss
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.stats {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 24px 40px;
|
||||||
|
|
||||||
|
.stat {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-width: 100px;
|
||||||
|
|
||||||
|
.stat-value {
|
||||||
|
@include h3;
|
||||||
|
|
||||||
|
color: var(--color-secondary);
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-label {
|
||||||
|
@include small;
|
||||||
|
|
||||||
|
max-width: 140px;
|
||||||
|
text-wrap: balance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
57
sass/homeassistant/pages/community/_variables.scss
Normal file
57
sass/homeassistant/pages/community/_variables.scss
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
:root {
|
||||||
|
--color-primary: #00AEF8;
|
||||||
|
--color-secondary: #16F3BE;
|
||||||
|
|
||||||
|
// Containers and widths
|
||||||
|
--container-max-width: 1100px;
|
||||||
|
--container-full-max-width: 1400px;
|
||||||
|
--container-gutters: 24px;
|
||||||
|
|
||||||
|
--section-spacing-y: 52px;
|
||||||
|
|
||||||
|
// Typography
|
||||||
|
--typography-base-font: "Figtree", serif;
|
||||||
|
--typography-heading-line-height: 1.25;
|
||||||
|
|
||||||
|
--typography-h1-font-size: 36px;
|
||||||
|
--typography-h1-font-weight: 600;
|
||||||
|
--typography-h1-line-height: 1;
|
||||||
|
|
||||||
|
--typography-h2-font-size: 30px;
|
||||||
|
--typography-h2-font-weight: 600;
|
||||||
|
--typography-h2-line-height: 1.1;
|
||||||
|
|
||||||
|
--typography-h3-font-size: 24px;
|
||||||
|
--typography-h3-font-weight: 700;
|
||||||
|
--typography-h3-line-height: var(--typography-heading-line-height);
|
||||||
|
|
||||||
|
--typography-h4-font-size: 14px;
|
||||||
|
--typography-h4-font-weight: 700;
|
||||||
|
--typography-h4-line-height: 1.25;
|
||||||
|
|
||||||
|
--typography-paragraph-color: #4F606E;
|
||||||
|
--typography-paragraph-font-size: 16px;
|
||||||
|
--typography-paragraph-font-weight: 400;
|
||||||
|
--typography-paragraph-line-height: 1.25;
|
||||||
|
|
||||||
|
--typography-small-paragraph-font-size: 12px;
|
||||||
|
--typography-small-paragraph-line-height: 1.3;
|
||||||
|
|
||||||
|
--typography-big-font-size: 46px;
|
||||||
|
--typography-big-font-weight: 700;
|
||||||
|
--typography-big-line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
:root {
|
||||||
|
--section-spacing-y: 80px;
|
||||||
|
|
||||||
|
--typography-h1-font-size: 66px;
|
||||||
|
--typography-h2-font-size: 48px;
|
||||||
|
--typography-h3-font-size: 32px;
|
||||||
|
--typography-h4-font-size: 20px;
|
||||||
|
--typography-paragraph-font-size: 24px;
|
||||||
|
--typography-small-paragraph-font-size: 16px;
|
||||||
|
--typography-big-font-size: 128px;
|
||||||
|
}
|
||||||
|
}
|
||||||
260
sass/homeassistant/pages/community/components/_faq.scss
Normal file
260
sass/homeassistant/pages/community/components/_faq.scss
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
section#faq {
|
||||||
|
|
||||||
|
.container{
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
h2{
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
@include bp(desktop){
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion {
|
||||||
|
|
||||||
|
.accordion-items {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-item {
|
||||||
|
--open: 0;
|
||||||
|
border-bottom: 1px solid #72787E;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
// Checkbox-driven open state
|
||||||
|
input[type="checkbox"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading {
|
||||||
|
// Optionally style the heading when open
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-content-animation-wrapper {
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
transition: grid-template-rows 0.4s ease 0s;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-item-content-transform-wrapper {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
transition: transform 0.4s ease, visibility 0s 0.4s ease, margin-top 0.4s ease, opacity 0.3s ease 0.425s;
|
||||||
|
visibility: visible;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more {
|
||||||
|
background-color: var(--color-primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more:before,
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more:after {
|
||||||
|
transform: translate(-50%, -50%) scale(calc(64/28));
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more:hover:before,
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more:hover:after {
|
||||||
|
transform: translate(-50%, -50%) scale(calc(56/28));
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more .plus {
|
||||||
|
transform: translate(-50%, -50%) rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more .plus:before {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
input[type="checkbox"]:checked ~ .accordion-item-heading .button-more .plus:after {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-heading {
|
||||||
|
cursor: pointer;
|
||||||
|
margin-bottom: -1px;
|
||||||
|
transition: background-color 0.3s, color 0.3s;
|
||||||
|
user-select: none;
|
||||||
|
isolation: isolate;
|
||||||
|
|
||||||
|
label{
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20px 0;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
@include bp(desktop){
|
||||||
|
padding: 40px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #002332;
|
||||||
|
@include bp(desktop){
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-icon {
|
||||||
|
display: grid;
|
||||||
|
flex-shrink: 0;
|
||||||
|
height: 32px;
|
||||||
|
place-items: center;
|
||||||
|
position: relative;
|
||||||
|
width: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-more {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 24px;
|
||||||
|
position: relative;
|
||||||
|
transition: background-color 0.25s ease-out, box-shadow 0.25s ease-out;
|
||||||
|
width: 24px;
|
||||||
|
|
||||||
|
.plus {
|
||||||
|
height: 8px;
|
||||||
|
left: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%) rotate(0deg);
|
||||||
|
transition: transform .25s ease-out;
|
||||||
|
width: 8px;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.plus:before,
|
||||||
|
.plus:after {
|
||||||
|
background-color: var(--color-primary);
|
||||||
|
content: '';
|
||||||
|
left: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
transition: opacity .25s ease-out, background-color .25s ease-out;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.plus:before {
|
||||||
|
height: 2px;
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plus:after {
|
||||||
|
height: 8px;
|
||||||
|
width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
-webkit-backdrop-filter: blur(2px);
|
||||||
|
backdrop-filter: blur(2px);
|
||||||
|
background-color: rgba(255, 255, 255, .25);
|
||||||
|
border-radius: 50%;
|
||||||
|
content: '';
|
||||||
|
height: 28px;
|
||||||
|
left: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
transition: transform .25s ease-out;
|
||||||
|
width: 28px;
|
||||||
|
z-index: -1;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
border-radius: 50%;
|
||||||
|
content: '';
|
||||||
|
height: 28px;
|
||||||
|
left: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 28px;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover:before,
|
||||||
|
&:hover:after {
|
||||||
|
transform: translate(-50%, -50%) scale(calc(34/28));
|
||||||
|
}
|
||||||
|
|
||||||
|
// .active state now handled by input:checked selectors above
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
gap: 20px;
|
||||||
|
grid-template-rows: 0fr;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0 0 20px 0;
|
||||||
|
transition: grid-template-rows 0.3s, transform, visibility 0.3s;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&,
|
||||||
|
p {
|
||||||
|
color: #4F606E;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:not(:last-child) {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-animation {
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-animation-wrapper {
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: 0fr;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: grid-template-rows 0.4s ease;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-transform-wrapper {
|
||||||
|
margin-top: 0;
|
||||||
|
opacity: 0.875;
|
||||||
|
transform: translateY(-100%);
|
||||||
|
transition: transform 0.4s ease, margin-top 0.4s ease, opacity 0.3s ease;
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
sass/homeassistant/pages/community/components/_global.scss
Normal file
54
sass/homeassistant/pages/community/components/_global.scss
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
section#global {
|
||||||
|
padding-bottom: 0;
|
||||||
|
|
||||||
|
.container {
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0 40px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
display: flex;
|
||||||
|
flex-basis: 0;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
|
gap: 24px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
gap: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-inner {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 6px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos-wrapper {
|
||||||
|
max-width: 424px;
|
||||||
|
padding: 100px 0 0;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
margin-left: 75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos {
|
||||||
|
flex-basis: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
44
sass/homeassistant/pages/community/components/_hero.scss
Normal file
44
sass/homeassistant/pages/community/components/_hero.scss
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
section#hero {
|
||||||
|
--section-spacing-y: 0;
|
||||||
|
|
||||||
|
background-image: url('/images/community/hero-m.svg');
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
border-radius: 12px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-end;
|
||||||
|
min-height: 600px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
background-image: url('/images/community/hero.svg');
|
||||||
|
background-position: center;
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 24px 12px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
padding: 164px 12px 66px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
align-items: flex-start;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
max-width: 670px;
|
||||||
|
|
||||||
|
.event-card, .button {
|
||||||
|
margin-top: 24px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
106
sass/homeassistant/pages/community/components/_join.scss
Normal file
106
sass/homeassistant/pages/community/components/_join.scss
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
section#join {
|
||||||
|
isolation: isolate;
|
||||||
|
|
||||||
|
.container {
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-transform: unset;
|
||||||
|
|
||||||
|
span:not(:first-child) {
|
||||||
|
margin-top: 8px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
//background-color: rgba(245, 246, 250, 0.6);
|
||||||
|
//backdrop-filter: blur(2px);
|
||||||
|
max-width: 650px;
|
||||||
|
text-align: center;
|
||||||
|
text-wrap: balance;
|
||||||
|
padding-top: 16px;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
padding-top: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
margin-top: 52px;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatars {
|
||||||
|
display: grid;
|
||||||
|
// 12 cols
|
||||||
|
grid-template-columns: repeat(6, 1fr);
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
|
||||||
|
&[data-dsap]:not([data-dsap-is="in"]):not([data-dsap-is="above"]) { // Reset after scroll up
|
||||||
|
.avatar{
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
grid-template-columns: repeat(12, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
justify-self: center;
|
||||||
|
transition: opacity 0.25s ease-out;
|
||||||
|
|
||||||
|
&.hide{
|
||||||
|
img{
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: 48px;
|
||||||
|
width: 48px;
|
||||||
|
border-radius: 50%;
|
||||||
|
transition: opacity 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// hide every even avatar on desktop
|
||||||
|
|
||||||
|
&:nth-child(odd) {
|
||||||
|
display: none;
|
||||||
|
@include bp(tablet) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$list: 21,31,76,0,35,70,100,95,50,6,30,26;
|
||||||
|
@for $i from 1 through 12 {
|
||||||
|
&:nth-child(#{$i}) {
|
||||||
|
$offset: nth($list, $i);
|
||||||
|
transform: translateY(calc(#{$offset} * 1%));
|
||||||
|
opacity: 1;
|
||||||
|
transition-delay: #{0.2 + ($i * 0.05)}s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
126
sass/homeassistant/pages/community/components/_meetups.scss
Normal file
126
sass/homeassistant/pages/community/components/_meetups.scss
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
section#meetups {
|
||||||
|
|
||||||
|
background-color: #CCEFFE;
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: 24px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
gap: 60px;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svg:has(use[href="#community"]) {
|
||||||
|
height: 40px;
|
||||||
|
width: 40px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
height: 80px;
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-card, .button {
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide {
|
||||||
|
background-color: rgba(246, 248, 251, 0.2);
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 40px 24px;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
text-wrap: balance;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #002332;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.steps {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
margin: 40px 0;
|
||||||
|
|
||||||
|
.step {
|
||||||
|
@include small;
|
||||||
|
padding-left: 32px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #4F606E;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
box-shadow: inset 0 0 0 5px var(--color-primary);
|
||||||
|
left: 0;
|
||||||
|
top: 4px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
padding-bottom: 28px;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
width: 1px;
|
||||||
|
background-color: #4F606E;
|
||||||
|
left: 7px;
|
||||||
|
bottom: -4px;
|
||||||
|
top: 26px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content,
|
||||||
|
.guide {
|
||||||
|
@include bp(desktop) {
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-basis: 50%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
sass/homeassistant/pages/community/components/_nav.scss
Normal file
36
sass/homeassistant/pages/community/components/_nav.scss
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
section#nav {
|
||||||
|
--section-spacing-y: 20px;
|
||||||
|
@include bp(tablet) {
|
||||||
|
--section-spacing-y: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-pills{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
gap: 12px;
|
||||||
|
|
||||||
|
.nav-pill{
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 32px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.25s ease, color 0.25s ease;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 6px 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #002332;
|
||||||
|
|
||||||
|
&:hover{
|
||||||
|
background-color: var(--color-primary);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
157
sass/homeassistant/pages/community/components/_newsletter.scss
Normal file
157
sass/homeassistant/pages/community/components/_newsletter.scss
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
section#newsletter {
|
||||||
|
--section-spacing-y: 0;
|
||||||
|
background-color: #002332;
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.container {
|
||||||
|
gap: 0px 60px;
|
||||||
|
align-items: flex-end;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(desktop) {
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
text-wrap: balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
&,
|
||||||
|
p {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
padding: 52px 0;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
padding: 100px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
justify-content: flex-start;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.editions {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-shrink: 0;
|
||||||
|
max-width: 570px;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: -40px;
|
||||||
|
width: 100%;
|
||||||
|
order: 1;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
order: -1;
|
||||||
|
flex-basis: 50%;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
@include bp(desktop) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@include bp(large-desktop) {
|
||||||
|
flex-basis: 570px;
|
||||||
|
align-self: flex-end;
|
||||||
|
margin-bottom: -64px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-dsap]:not([data-dsap-is="in"]):not([data-dsap-is="above"]) {
|
||||||
|
|
||||||
|
// Only if scrolling down into the element
|
||||||
|
.edition {
|
||||||
|
transition-duration: 0s;
|
||||||
|
transition-delay: 0s;
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
transform: translateY(120px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
transform: translateY(40px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.edition {
|
||||||
|
aspect-ratio: 571/300;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
position: relative;
|
||||||
|
border-radius: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: transform 0.8s cubic-bezier(0.3, 1, 0.5, 1);
|
||||||
|
transition-delay: .25s;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 0;
|
||||||
|
inset: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
max-width: 80%;
|
||||||
|
height: 45px;
|
||||||
|
transition-delay: .3s;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
height: 70px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
max-width: 90%;
|
||||||
|
justify-self: center;
|
||||||
|
height: 50px;
|
||||||
|
transform: translateY(-20px);
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
|
@include bp(tablet) {
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
max-width: 100%;
|
||||||
|
justify-self: center;
|
||||||
|
z-index: 3;
|
||||||
|
transform: translateY(-40px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
sass/homeassistant/pages/community/index.scss
Normal file
20
sass/homeassistant/pages/community/index.scss
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Setup
|
||||||
|
@import "homeassistant/pages/community/mixins.scss";
|
||||||
|
@import "homeassistant/pages/community/variables.scss";
|
||||||
|
|
||||||
|
// Base
|
||||||
|
@import "homeassistant/pages/community/base.scss";
|
||||||
|
@import "homeassistant/pages/community/icon.scss";
|
||||||
|
@import "homeassistant/pages/community/buttons.scss";
|
||||||
|
@import "homeassistant/pages/community/event-card.scss";
|
||||||
|
@import "homeassistant/pages/community/photos.scss";
|
||||||
|
@import "homeassistant/pages/community/stats.scss";
|
||||||
|
|
||||||
|
// Components
|
||||||
|
@import "homeassistant/pages/community/components/nav.scss";
|
||||||
|
@import "homeassistant/pages/community/components/hero.scss";
|
||||||
|
@import "homeassistant/pages/community/components/global.scss";
|
||||||
|
@import "homeassistant/pages/community/components/join.scss";
|
||||||
|
@import "homeassistant/pages/community/components/newsletter.scss";
|
||||||
|
@import "homeassistant/pages/community/components/meetups.scss";
|
||||||
|
@import "homeassistant/pages/community/components/faq.scss";
|
||||||
@ -24,3 +24,20 @@ section {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nc-collaboration{
|
||||||
|
position: absolute;
|
||||||
|
&.mobile{
|
||||||
|
display: block;
|
||||||
|
@include bp(desktop){
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.desktop{
|
||||||
|
display: none;
|
||||||
|
@include bp(desktop){
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -55,6 +55,7 @@ section#buy {
|
|||||||
|
|
||||||
@include bp(desktop) {
|
@include bp(desktop) {
|
||||||
z-index: unset;
|
z-index: unset;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -108,24 +109,32 @@ section#buy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.terms {
|
.terms {
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
max-width: 520px;
|
max-width: 520px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 20px;
|
bottom: 50px;
|
||||||
max-width: 22rem;
|
max-width: 22rem;
|
||||||
margin-top: 5rem;
|
margin-top: 5rem;
|
||||||
|
|
||||||
@include bp(desktop) {
|
@include bp(desktop) {
|
||||||
bottom: 80px;
|
bottom: 130px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin-top: unset;
|
margin-top: unset;
|
||||||
max-width: 26rem;
|
max-width: 26rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include bp(1750px) {
|
@include bp(1750px) {
|
||||||
max-width: 33rem;
|
max-width: 33rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nc-collaboration{
|
||||||
|
bottom: 20px;
|
||||||
|
max-width: calc(100% - 20px);
|
||||||
|
@include bp(desktop){
|
||||||
|
bottom: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -229,6 +229,19 @@ section#faq {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
img{
|
||||||
|
border-radius: 8px;
|
||||||
|
display: block;
|
||||||
|
max-width: 800px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
img,p {
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&-animation {
|
&-animation {
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@ body_id: not_found
|
|||||||
<div id="search404"></div>
|
<div id="search404"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@docsearch/js@3/dist/umd/index.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3/dist/umd/index.min.js" integrity="sha384-f/IEhh8fvOc2ALU79emLlUqAYXyqlA/zYhM+g5GlWMk15QBjTXy05TtmfT1TbtV6" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
docsearch({
|
docsearch({
|
||||||
container: '#search404',
|
container: '#search404',
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) {% term integrations %}.
|
The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) {% term integrations %}.
|
||||||
@ -36,8 +38,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Current state of the alarm entity.
|
default: Current state of the alarm entity.
|
||||||
states:
|
states:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -104,7 +104,7 @@ type: area
|
|||||||
area: bedroom
|
area: bedroom
|
||||||
display_type: picture
|
display_type: picture
|
||||||
navigation_path: my_bedroom
|
navigation_path: my_bedroom
|
||||||
sensor_classes:
|
sensor_classes:
|
||||||
- temperature
|
- temperature
|
||||||
- humidity
|
- humidity
|
||||||
alert_classes:
|
alert_classes:
|
||||||
@ -116,4 +116,4 @@ features:
|
|||||||
|
|
||||||
## Available colors
|
## Available colors
|
||||||
|
|
||||||
You want to colorize the area card? Choose one of the following colors: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black`, and `white`.
|
The following colors are available to colorize the area card: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black`, `white`, or any hex color code (for example, `#93c47d`).
|
||||||
|
|||||||
@ -12,6 +12,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The button card allows you to add buttons to perform tasks.
|
The button card allows you to add buttons to perform tasks.
|
||||||
@ -34,14 +36,18 @@ Name:
|
|||||||
description: The button name that is displayed on the card. If this field is left blank and the card interacts with an entity, the button name defaults to the entity name. Otherwise, no name is displayed.
|
description: The button name that is displayed on the card. If this field is left blank and the card interacts with an entity, the button name defaults to the entity name. Otherwise, no name is displayed.
|
||||||
Icon:
|
Icon:
|
||||||
description: The icon that is displayed on the card. If this field is left blank and the card interacts with an entity, the icon defaults to the entity domain icon. Otherwise, no icon is displayed.
|
description: The icon that is displayed on the card. If this field is left blank and the card interacts with an entity, the icon defaults to the entity domain icon. Otherwise, no icon is displayed.
|
||||||
Show Name:
|
|
||||||
description: A toggle to show or hide the button name.
|
|
||||||
Show Icon:
|
|
||||||
description: A toggle to show or hide the icon.
|
|
||||||
Icon Height:
|
Icon Height:
|
||||||
description: The height of the icon, in pixels.
|
description: The height of the icon, in pixels.
|
||||||
|
Color:
|
||||||
|
description: The color of the icon.
|
||||||
Theme:
|
Theme:
|
||||||
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
||||||
|
Show Name:
|
||||||
|
description: A toggle to show or hide the button name.
|
||||||
|
Show State:
|
||||||
|
description: A toggle to show or hide the state of the entity.
|
||||||
|
Show Icon:
|
||||||
|
description: A toggle to show or hide the icon.
|
||||||
Tap Action:
|
Tap Action:
|
||||||
description: The action taken on card tap. For more information, see the [action documentation](/dashboards/actions/#tap-action).
|
description: The action taken on card tap. For more information, see the [action documentation](/dashboards/actions/#tap-action).
|
||||||
Hold Action:
|
Hold Action:
|
||||||
@ -63,8 +69,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: The button name that is displayed on the card. It defaults to the entity name only if the card interacts with an entity. Otherwise, if not configured, no name is displayed.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/). It defaults to the entity name only if the card interacts with an entity. Otherwise, if not configured, no name is displayed.
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
@ -91,11 +97,11 @@ icon_height:
|
|||||||
description: The height of the icon. Any CSS value may be used.
|
description: The height of the icon. Any CSS value may be used.
|
||||||
type: string
|
type: string
|
||||||
default: auto
|
default: auto
|
||||||
state_color:
|
color:
|
||||||
required: false
|
required: false
|
||||||
description: If false, the icon does not change color when the entity is active.
|
description: Set the color for the icon. By default, the color is based on `state`, `domain`, and `device_class` of your entity. It accepts [color token](/dashboards/button/#available-colors) or hex color code.
|
||||||
type: boolean
|
type: string
|
||||||
default: true
|
default: state
|
||||||
tap_action:
|
tap_action:
|
||||||
required: false
|
required: false
|
||||||
description: The action taken on card tap. For more information, see the [action documentation](/dashboards/actions/#tap-action).
|
description: The action taken on card tap. For more information, see the [action documentation](/dashboards/actions/#tap-action).
|
||||||
@ -203,3 +209,7 @@ cards:
|
|||||||
show_name: true
|
show_name: true
|
||||||
show_icon: true
|
show_icon: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Available colors
|
||||||
|
|
||||||
|
The following colors are available to colorize the button card: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black`, `white`, or any hex color code (for example, `#93c47d`).
|
||||||
|
|||||||
@ -220,6 +220,43 @@ locations:
|
|||||||
type: list
|
type: list
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
|
### Time
|
||||||
|
|
||||||
|
Specify the visibility of the card based on the current time and day of the week.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
condition: time
|
||||||
|
after: "08:00"
|
||||||
|
before: "17:00"
|
||||||
|
weekdays:
|
||||||
|
- mon
|
||||||
|
- tue
|
||||||
|
- wed
|
||||||
|
- thu
|
||||||
|
- fri
|
||||||
|
```
|
||||||
|
|
||||||
|
{% configuration %}
|
||||||
|
condition:
|
||||||
|
required: true
|
||||||
|
description: "`time`"
|
||||||
|
type: string
|
||||||
|
after:
|
||||||
|
required: false
|
||||||
|
description: Time in 24-hour format (HH:MM) after which the card should be visible.*
|
||||||
|
type: string
|
||||||
|
before:
|
||||||
|
required: false
|
||||||
|
description: Time in 24-hour format (HH:MM) before which the card should be visible.*
|
||||||
|
type: string
|
||||||
|
weekdays:
|
||||||
|
required: false
|
||||||
|
description: List of weekdays on which the card should be visible. Valid values are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
|
||||||
|
type: list
|
||||||
|
{% endconfiguration %}
|
||||||
|
|
||||||
|
At least one of `after` or `before` must be used for this condition to be valid. Both can be used together to define a time range as in the example above.
|
||||||
|
|
||||||
### And
|
### And
|
||||||
|
|
||||||
Specify that all conditions must be met.
|
Specify that all conditions must be met.
|
||||||
|
|||||||
@ -121,10 +121,28 @@ link_dashboard: true
|
|||||||
The energy sources table card shows all your energy sources, and the corresponding amount of energy.
|
The energy sources table card shows all your energy sources, and the corresponding amount of energy.
|
||||||
If setup, it will also show the costs and compensation per source and the total.
|
If setup, it will also show the costs and compensation per source and the total.
|
||||||
|
|
||||||
|
### YAML configuration
|
||||||
|
|
||||||
|
The following YAML options are available
|
||||||
|
|
||||||
|
{% configuration %}
|
||||||
|
type:
|
||||||
|
required: true
|
||||||
|
description: "`energy-sources-table`"
|
||||||
|
type: string
|
||||||
|
types:
|
||||||
|
required: false
|
||||||
|
description: "If defined, table displays listed types of consumption only. Valid values are: `grid`, `solar`, `battery`, `gas`, and `water`."
|
||||||
|
type: list
|
||||||
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
type: energy-sources-table
|
type: energy-sources-table
|
||||||
|
types:
|
||||||
|
- gas
|
||||||
|
- water
|
||||||
```
|
```
|
||||||
|
|
||||||
## Grid neutrality gauge
|
## Grid neutrality gauge
|
||||||
@ -196,7 +214,29 @@ type: energy-self-sufficiency-gauge
|
|||||||
|
|
||||||
The devices energy graph show the energy usage per device, it is sorted by usage.
|
The devices energy graph show the energy usage per device, it is sorted by usage.
|
||||||
|
|
||||||
By default, this card will show all your devices. Optionally, the number of devices can be limited by adding the `max_devices` option and specifying the maximum number of devices to show. If there are more devices available than shown, the devices with the highest energy usage are shown.
|
### YAML configuration
|
||||||
|
|
||||||
|
The following YAML options are available
|
||||||
|
|
||||||
|
{% configuration %}
|
||||||
|
type:
|
||||||
|
required: true
|
||||||
|
description: "`energy-devices-graph`"
|
||||||
|
type: string
|
||||||
|
title:
|
||||||
|
required: false
|
||||||
|
description: The title of the card.
|
||||||
|
type: string
|
||||||
|
max_devices:
|
||||||
|
required: false
|
||||||
|
description: By default, this card will show all your devices. Optionally, the number of devices can be limited by adding the `max_devices` option and specifying the maximum number of devices to show. If there are more devices available than shown, the devices with the highest energy usage are shown.
|
||||||
|
type: integer
|
||||||
|
hide_compound_stats:
|
||||||
|
required: false
|
||||||
|
description: Hide higher level devices like breakers. These are devices that are set as `included_in_stat` of another device.
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
@ -287,13 +327,73 @@ type: energy-sankey
|
|||||||
layout: vertical
|
layout: vertical
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using Multiple Collections
|
## Power Sankey graph to visualize power flow
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='/images/dashboards/energy/sankey.png' alt='Screenshot of the Sankey graph card to visualize power'>
|
||||||
|
Screenshot of the power Sankey graph card.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
The power Sankey graph shows the real-time flow of power in your home. Unlike the energy Sankey card, which shows historical energy data based on the selected date range, this card displays current power values and is not affected by the date picker selection.
|
||||||
|
|
||||||
|
It visualizes the instantaneous power flow from sources (like the grid, solar panels, and battery) to consumers in your home. Devices are grouped into floors and areas if these are configured.
|
||||||
|
|
||||||
|
### YAML configuration
|
||||||
|
|
||||||
|
The following YAML options are available
|
||||||
|
|
||||||
|
{% configuration %}
|
||||||
|
type:
|
||||||
|
required: true
|
||||||
|
description: "`power-sankey`"
|
||||||
|
type: string
|
||||||
|
collection_key:
|
||||||
|
required: false
|
||||||
|
description: "Collection key to use for the card. This links the card to a specific energy dashboard collection. Defaults to `energy_dashboard`."
|
||||||
|
type: string
|
||||||
|
default: energy_dashboard
|
||||||
|
title:
|
||||||
|
required: false
|
||||||
|
description: The title of the card.
|
||||||
|
type: string
|
||||||
|
layout:
|
||||||
|
required: false
|
||||||
|
description: "`vertical`, `horizontal` or `auto`. Determines the orientation (flow direction) of the card. `auto` changes it based on the screen size."
|
||||||
|
type: string
|
||||||
|
default: auto
|
||||||
|
group_by_area:
|
||||||
|
required: false
|
||||||
|
description: Whether to group the devices by area
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
group_by_floor:
|
||||||
|
required: false
|
||||||
|
description: Whether to group the devices by floor
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
{% endconfiguration %}
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
type: power-sankey
|
||||||
|
```
|
||||||
|
|
||||||
|
The following example orients the flow from left to right:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
type: power-sankey
|
||||||
|
layout: horizontal
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using multiple collections
|
||||||
|
|
||||||
By default, all energy cards are linked to any `energy-date-selection` card on the view, and all `energy-date-selection` cards are linked to the same period. To enable multiple different date selections on the same view, it is necessary to link them to different collections. This is done by adding the variable `collection_key` to the card YAML, and giving this a value of any custom string that begins with `energy_`. (strings that do not start with `energy_` will generate an error).
|
By default, all energy cards are linked to any `energy-date-selection` card on the view, and all `energy-date-selection` cards are linked to the same period. To enable multiple different date selections on the same view, it is necessary to link them to different collections. This is done by adding the variable `collection_key` to the card YAML, and giving this a value of any custom string that begins with `energy_`. (strings that do not start with `energy_` will generate an error).
|
||||||
|
|
||||||
All energy cards support use of `collection_key` option.
|
All energy cards support use of `collection_key` option.
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
Example view with multiple collections:
|
Example view with multiple collections:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@ -10,6 +10,8 @@ related:
|
|||||||
title: Card header and footer
|
title: Card header and footer
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The entities card is the most common type of card. It groups items together into lists. It can be used to display an entity's state or attribute, but also contain buttons, web links, etc.
|
The entities card is the most common type of card. It groups items together into lists. It can be used to display an entity's state or attribute, but also contain buttons, web links, etc.
|
||||||
@ -76,8 +78,8 @@ type:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites icon or entity picture.
|
description: Overwrites icon or entity picture.
|
||||||
@ -150,8 +152,8 @@ suffix:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly entity name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
description: Icon to use. Defaults to icon of entity.
|
description: Icon to use. Defaults to icon of entity.
|
||||||
@ -231,8 +233,8 @@ entities:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Override the friendly entity name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
show_name:
|
show_name:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -10,6 +10,8 @@ related:
|
|||||||
title: Card header and footer
|
title: Card header and footer
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The entity card gives you a quick overview of your entity's state.
|
The entity card gives you a quick overview of your entity's state.
|
||||||
@ -38,8 +40,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Name of entity.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name.
|
default: Entity name.
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The gauge card is a basic card that allows visually seeing sensor data.
|
The gauge card is a basic card that allows visually seeing sensor data.
|
||||||
@ -45,8 +47,8 @@ attribute:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Name of gauge entity.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
unit:
|
unit:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -10,6 +10,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The glance card is useful to group multiple sensors in a compact overview. Keep in mind that this can be used together with [entity-filter](/dashboards/entity-filter/) cards to create dynamic cards.
|
The glance card is useful to group multiple sensors in a compact overview. Keep in mind that this can be used together with [entity-filter](/dashboards/entity-filter/) cards to create dynamic cards.
|
||||||
@ -81,8 +83,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites icon.
|
description: Overwrites icon.
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The history graph card allows you to display a graph for each of up to eight entities.
|
The history graph card allows you to display a graph for each of up to eight entities.
|
||||||
@ -89,8 +91,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Long term statistics
|
### Long term statistics
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The humidifier card lets you control and monitor humidifiers, dehumidifiers, and hygrostat devices.
|
The humidifier card lets you control and monitor humidifiers, dehumidifiers, and hygrostat devices.
|
||||||
@ -36,8 +38,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Name of entity.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
theme:
|
theme:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -52,6 +52,11 @@ allow_open_top_navigation:
|
|||||||
description: 'Allow the user to open iframe content links by opening the default browser in the Home Assistant mobile app. It is false by default because it adds allow-top-navigation-by-user-activation on the iframe sandbox attribute which is less secure. So set it to true if you need it and are confident with the iframe content.'
|
description: 'Allow the user to open iframe content links by opening the default browser in the Home Assistant mobile app. It is false by default because it adds allow-top-navigation-by-user-activation on the iframe sandbox attribute which is less secure. So set it to true if you need it and are confident with the iframe content.'
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
hide_background:
|
||||||
|
required: false
|
||||||
|
description: 'Hide the card background, making it transparent. This removes the background color, box-shadow, and border. Useful for pages which allow transparent backgrounds so the iframe can blend into the dashboard view.'
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
title:
|
title:
|
||||||
required: false
|
required: false
|
||||||
description: The card title.
|
description: The card title.
|
||||||
|
|||||||
@ -10,6 +10,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The light card allows you to change the brightness of a light.
|
The light card allows you to change the brightness of a light.
|
||||||
@ -38,8 +40,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Name of entity
|
default: Name of entity
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
type: card
|
type: card
|
||||||
title: "Logbook card"
|
title: "Activity card"
|
||||||
sidebar_label: Logbook
|
sidebar_label: Activity
|
||||||
description: "The logbook card displays entries from the logbook for specific entities, devices, areas, and/or labels."
|
description: "The activity card displays the activity of specific entities, devices, areas, and/or labels."
|
||||||
related:
|
related:
|
||||||
- docs: /integrations/frontend/
|
- docs: /integrations/frontend/
|
||||||
title: Themes
|
title: Themes
|
||||||
@ -10,11 +10,11 @@ related:
|
|||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
---
|
---
|
||||||
|
|
||||||
The logbook card displays entries from the logbook for specific entities, devices, areas, and/or labels.
|
The activity card displays entries from the activity for specific entities, devices, areas, and/or labels.
|
||||||
|
|
||||||
<p class='img'>
|
<p class='img'>
|
||||||
<img src='/images/dashboards/logbook.png' alt='Screenshot of the logbook card'>
|
<img src='/images/dashboards/activity-card.png' alt='Screenshot of the activity card'>
|
||||||
Screenshot of the logbook card.
|
Screenshot of the activity card.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% include dashboard/edit_dashboard.md %}
|
{% include dashboard/edit_dashboard.md %}
|
||||||
@ -23,18 +23,20 @@ The logbook card displays entries from the logbook for specific entities, device
|
|||||||
|
|
||||||
{% configuration_basic %}
|
{% configuration_basic %}
|
||||||
Target:
|
Target:
|
||||||
description: The entities, devices, areas and labels whose logbook entries will show in the card. See [target selector](/docs/blueprint/selectors/#target-selector) for more information.
|
description: The entities, devices, areas and labels whose activity entries will show in the card. See [target selector](/docs/blueprint/selectors/#target-selector) for more information.
|
||||||
Title:
|
Title:
|
||||||
description: The title that shows on the top of the card.
|
description: The title that shows on the top of the card.
|
||||||
Hours to show:
|
Hours to show:
|
||||||
description: The number of hours in the past that will be tracked in the card.
|
description: The number of hours in the past that will be tracked in the card.
|
||||||
Theme:
|
Theme:
|
||||||
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
||||||
|
State filter:
|
||||||
|
description: Limit the displayed logbook entries to only the specified states.
|
||||||
{% endconfiguration_basic %}
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
## YAML configuration
|
## YAML configuration
|
||||||
|
|
||||||
The following YAML options are available when you use YAML mode or just prefer to use YAML in the code editor in the UI.
|
The following YAML options are available when you use YAML mode or just prefer to use YAML in the code editor in the UI. Activity used to be called "logbook" in the past, and is still called logbook in YAML.
|
||||||
|
|
||||||
{% configuration %}
|
{% configuration %}
|
||||||
type:
|
type:
|
||||||
@ -58,6 +60,10 @@ theme:
|
|||||||
required: false
|
required: false
|
||||||
description: Override the used theme for this card with any loaded theme. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
description: Override the used theme for this card with any loaded theme. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
||||||
type: string
|
type: string
|
||||||
|
state_filter:
|
||||||
|
required: false
|
||||||
|
description: Limit the displayed logbook entries to only the selected states. For example a list of `['on']` will display entries when targeted entities turn on, but not when they turn off.
|
||||||
|
type: list
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|||||||
@ -136,7 +136,7 @@ content: |
|
|||||||
|
|
||||||
## ha-alert
|
## ha-alert
|
||||||
|
|
||||||
You can also use our [\`ha-alert\`](https://design.home-assistant.io/#components/ha-alert) component in the Markdown card.
|
You can also use our [`ha-alert`](https://design.home-assistant.io/#components/ha-alert) component in the Markdown card.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The media control card is used to display [media player](/integrations/#media-player) entities on an interface with easy to use controls.
|
The media control card is used to display [media player](/integrations/#media-player) entities on an interface with easy to use controls.
|
||||||
@ -34,8 +36,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Name of entity
|
default: Name of entity
|
||||||
theme:
|
theme:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -34,7 +34,7 @@ type:
|
|||||||
type: string
|
type: string
|
||||||
image:
|
image:
|
||||||
required: true
|
required: true
|
||||||
description: The URL of an image.<br/>To use a locally hosted image, see [Hosting](/integrations/http#hosting-files).
|
description: The URL of an image.<br/>To use a locally hosted image, see [Hosting](/integrations/http#hosting-files), or use a `media-source://` URL for Media content.
|
||||||
type: string
|
type: string
|
||||||
image_entity:
|
image_entity:
|
||||||
required: false
|
required: false
|
||||||
@ -67,7 +67,7 @@ theme:
|
|||||||
type: string
|
type: string
|
||||||
dark_mode_image:
|
dark_mode_image:
|
||||||
required: false
|
required: false
|
||||||
description: "This image is used when the dark mode is activated and no state image is set."
|
description: This image is used when the dark mode is activated and no state image is set.<br/>To use a locally hosted image, see [Hosting](/integrations/http#hosting-files), or use a `media-source://` URL for Media content.
|
||||||
type: string
|
type: string
|
||||||
dark_mode_filter:
|
dark_mode_filter:
|
||||||
required: false
|
required: false
|
||||||
@ -322,7 +322,7 @@ double_tap_action:
|
|||||||
type: map
|
type: map
|
||||||
image:
|
image:
|
||||||
required: false
|
required: false
|
||||||
description: The image to display.
|
description: The image to display.<br/>To use a locally hosted image, see [Hosting](/integrations/http#hosting-files), or use a `media-source://` URL for Media content.
|
||||||
type: string
|
type: string
|
||||||
camera_image:
|
camera_image:
|
||||||
required: false
|
required: false
|
||||||
@ -423,12 +423,13 @@ style:
|
|||||||
|
|
||||||
### How to use state_image
|
### How to use state_image
|
||||||
|
|
||||||
Specify a different image to display based on the state of the entity.
|
Specify a different image to display based on the state of the entity (supports local, web, or `media-source://` URLs):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
state_image:
|
state_image:
|
||||||
"on": /local/living_room_on.jpg
|
"on": /local/bed_light_on.png
|
||||||
"off": /local/living_room_off.jpg
|
"off": https://demo.home-assistant.io/stub_config/bedroom.png
|
||||||
|
"unavailable": media-source://image_upload/123456789
|
||||||
```
|
```
|
||||||
|
|
||||||
### How to use state_filter
|
### How to use state_filter
|
||||||
|
|||||||
@ -10,6 +10,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The picture entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of `camera` entities.
|
The picture entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of `camera` entities.
|
||||||
@ -45,7 +47,7 @@ camera_view:
|
|||||||
type: string
|
type: string
|
||||||
image:
|
image:
|
||||||
required: false
|
required: false
|
||||||
description: URL of an image. To use a locally hosted image, see [Hosting](/integrations/http#hosting-files).
|
description: URL of an image. To use a locally hosted image, see [Hosting](/integrations/http#hosting-files), or use a `media-source://` URL for Media content.
|
||||||
type: string
|
type: string
|
||||||
state_image:
|
state_image:
|
||||||
required: false
|
required: false
|
||||||
@ -66,8 +68,8 @@ fit_mode:
|
|||||||
default: cover
|
default: cover
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrite entity name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
show_name:
|
show_name:
|
||||||
required: false
|
required: false
|
||||||
description: Shows name in footer.
|
description: Shows name in footer.
|
||||||
@ -116,14 +118,15 @@ entity: light.bed_light
|
|||||||
image: /local/bed_light.png
|
image: /local/bed_light.png
|
||||||
```
|
```
|
||||||
|
|
||||||
Different images for each state:
|
Different images for each state (supports local, web, or `media-source://` URLs):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
type: picture-entity
|
type: picture-entity
|
||||||
entity: light.bed_light
|
entity: light.bed_light
|
||||||
state_image:
|
state_image:
|
||||||
"on": /local/bed_light_on.png
|
"on": /local/bed_light_on.png
|
||||||
"off": /local/bed_light_off.png
|
"off": https://demo.home-assistant.io/stub_config/bedroom.png
|
||||||
|
"unavailable": media-source://image_upload/123456789
|
||||||
```
|
```
|
||||||
|
|
||||||
Displaying a live feed from an FFmpeg camera:
|
Displaying a live feed from an FFmpeg camera:
|
||||||
|
|||||||
@ -40,7 +40,7 @@ title:
|
|||||||
type: string
|
type: string
|
||||||
image:
|
image:
|
||||||
required: false
|
required: false
|
||||||
description: Background image URL.
|
description: Background image URL (local, web, or `media-source://`)
|
||||||
type: string
|
type: string
|
||||||
image_entity:
|
image_entity:
|
||||||
required: false
|
required: false
|
||||||
@ -261,7 +261,7 @@ entities: []
|
|||||||
camera_image: camera.front_garden_camera
|
camera_image: camera.front_garden_camera
|
||||||
```
|
```
|
||||||
|
|
||||||
Use different images based on entity state:
|
Use different images based on entity state (supports local, web, or `media-source://` URLs):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
type: picture-glance
|
type: picture-glance
|
||||||
@ -271,6 +271,7 @@ entities:
|
|||||||
- light.ceiling_lights
|
- light.ceiling_lights
|
||||||
state_image:
|
state_image:
|
||||||
"on": /local/living_room_on.png
|
"on": /local/living_room_on.png
|
||||||
"off": /local/living_room_off.png
|
"off": https://demo.home-assistant.io/stub_config/living_room.png
|
||||||
|
"unavailable": media-source://image_upload/123456789
|
||||||
entity: group.living.room
|
entity: group.living.room
|
||||||
```
|
```
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The plant status card is for all the lovely botanists out there.
|
The plant status card is for all the lovely botanists out there.
|
||||||
@ -32,12 +34,12 @@ type:
|
|||||||
type: string
|
type: string
|
||||||
entity:
|
entity:
|
||||||
required: true
|
required: true
|
||||||
description: Entity ID of `plant` domain.
|
description: Entity ID of `plant` domain. For more information, see the [`plant` integration](/integrations/plant).
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
theme:
|
theme:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The sensor card gives you a quick overview of a sensor's state with an optional graph to visualize change over time.
|
The sensor card gives you a quick overview of a sensor's state with an optional graph to visualize change over time.
|
||||||
@ -40,8 +42,8 @@ icon:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: The card name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
graph:
|
graph:
|
||||||
required: false
|
required: false
|
||||||
description: Type of graph (`none` or `line`).
|
description: Type of graph (`none` or `line`).
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The statistic card allows you to display a statistical value for an entity.
|
The statistic card allows you to display a statistical value for an entity.
|
||||||
@ -40,8 +42,8 @@ stat_type:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Name of entity.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name.
|
default: Entity name.
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The statistics graph card allows you to display a graph of statistics data for each of the entities listed.
|
The statistics graph card allows you to display a graph of statistics data for each of the entities listed.
|
||||||
@ -114,8 +116,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|||||||
@ -2,15 +2,17 @@
|
|||||||
type: card
|
type: card
|
||||||
title: "Thermostat card"
|
title: "Thermostat card"
|
||||||
sidebar_label: Thermostat
|
sidebar_label: Thermostat
|
||||||
description: "The thermostat card gives control of your climate entity, allowing you to change the temperature and mode of the entity."
|
description: "The thermostat card gives control of your climate or water heater entity, allowing you to change the temperature and mode of the entity."
|
||||||
related:
|
related:
|
||||||
- docs: /integrations/frontend/
|
- docs: /integrations/frontend/
|
||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The thermostat card gives control of your [climate](/integrations/#climate) {% term entity %}, allowing you to change the temperature and mode of the {% term entity %}.
|
The thermostat card gives control of your [climate](/integrations/#climate) {% term entity %} or [water heater](/integrations/#water_heater) {% term entity %}, allowing you to change the temperature and mode of the {% term entity %}.
|
||||||
|
|
||||||
<p class='img'>
|
<p class='img'>
|
||||||
<img src='/images/dashboards/thermostat_card.png' alt='Screenshot of the thermostat card'>
|
<img src='/images/dashboards/thermostat_card.png' alt='Screenshot of the thermostat card'>
|
||||||
@ -32,12 +34,12 @@ type:
|
|||||||
type: string
|
type: string
|
||||||
entity:
|
entity:
|
||||||
required: true
|
required: true
|
||||||
description: Entity ID of `climate` domain.
|
description: Entity ID of `climate` or `water_heater` domain.
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Name of entity.
|
default: Name of entity.
|
||||||
theme:
|
theme:
|
||||||
required: false
|
required: false
|
||||||
@ -50,7 +52,7 @@ show_current_as_primary:
|
|||||||
default: false
|
default: false
|
||||||
features:
|
features:
|
||||||
required: false
|
required: false
|
||||||
description: Additional widgets to control your entity. See [available features](/dashboards/features). Only climate related features are supported.
|
description: Additional widgets to control your entity. See [available features](/dashboards/features). Only climate or water heater related features are supported.
|
||||||
type: list
|
type: list
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,8 @@ description: "The tile card gives you a quick overview of an entity. The card al
|
|||||||
related:
|
related:
|
||||||
- docs: /dashboards/actions/
|
- docs: /dashboards/actions/
|
||||||
title: Card actions
|
title: Card actions
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
- docs: /dashboards/features/
|
- docs: /dashboards/features/
|
||||||
title: Card features
|
title: Card features
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
@ -33,8 +35,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites the entity name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
icon:
|
icon:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites the entity icon.
|
description: Overwrites the entity icon.
|
||||||
@ -132,7 +134,7 @@ hide_state: true
|
|||||||
```yaml
|
```yaml
|
||||||
type: tile
|
type: tile
|
||||||
entity: light.living_room
|
entity: light.living_room
|
||||||
state_content:
|
state_content:
|
||||||
- state
|
- state
|
||||||
- brightness
|
- brightness
|
||||||
- last-changed
|
- last-changed
|
||||||
@ -150,6 +152,6 @@ features:
|
|||||||
|
|
||||||
## Available colors
|
## Available colors
|
||||||
|
|
||||||
You want to colorize the tile card? Choose one of the following colors: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black` and `white`.
|
The following colors are available to colorize the tile card: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black`, `white`, or any hex color code (for example, `#93c47d`).
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -71,6 +71,11 @@ hide_create:
|
|||||||
description: Hide the textbox for creating new tasks at the top of the card.
|
description: Hide the textbox for creating new tasks at the top of the card.
|
||||||
type: boolean
|
type: boolean
|
||||||
default: "false"
|
default: "false"
|
||||||
|
hide_section_headers:
|
||||||
|
required: false
|
||||||
|
description: Hide the 'Active' and 'Completed' sections with the overflow menus.
|
||||||
|
type: boolean
|
||||||
|
default: "false"
|
||||||
display_order:
|
display_order:
|
||||||
required: false
|
required: false
|
||||||
description: "Optionally sorts the items in the to-do list for display. Options are: `none`: Show the list in its original order. `alpha_asc`: Sort the list in alphabetical order. `alpha_desc`: Sort the list in reverse alphabetical order. `duedate_asc`: Sort the list by due date (soonest first). `duedate_desc`: Sort the list by reverse due date (soonest last)."
|
description: "Optionally sorts the items in the to-do list for display. Options are: `none`: Show the list in its original order. `alpha_asc`: Sort the list in alphabetical order. `alpha_desc`: Sort the list in reverse alphabetical order. `duedate_asc`: Sort the list by due date (soonest first). `duedate_desc`: Sort the list by reverse due date (soonest last)."
|
||||||
|
|||||||
@ -8,6 +8,8 @@ related:
|
|||||||
title: Themes
|
title: Themes
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
|
- docs: /dashboards/naming/
|
||||||
|
title: Card naming
|
||||||
---
|
---
|
||||||
|
|
||||||
The weather forecast card displays the weather. This card is particularly useful on wall-mounted displays.
|
The weather forecast card displays the weather. This card is particularly useful on wall-mounted displays.
|
||||||
@ -58,8 +60,8 @@ entity:
|
|||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
required: false
|
required: false
|
||||||
description: Overwrites the friendly name.
|
description: Overwrites friendly name. Can be a string, or a name configuration object. See [naming documentation](/dashboards/naming/).
|
||||||
type: string
|
type: [string, map, list]
|
||||||
default: Entity name
|
default: Entity name
|
||||||
show_current:
|
show_current:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
11
source/_data/community-faq.yml
Normal file
11
source/_data/community-faq.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
items:
|
||||||
|
- question: Where do I find support?
|
||||||
|
answer: Support for Home Assistant software (and other Open Home Foundation projects) is done by community members who volunteer their time to help out fellow hobbyists. The most active communities for providing support are our <a href="https://community.home-assistant.io/">community forums</a> and the <a href="https://discord.com/invite/home-assistant">Discord server</a>. Just make sure to follow the rules about where and how to post your support query. It is also possible to ask for support in the <a href="https://www.facebook.com/groups/HomeAssistant/">Facebook group</a> and on <a href="https://www.reddit.com/r/homeassistant/">Reddit</a>.
|
||||||
|
- question: How can I contribute to the project?
|
||||||
|
answer: <p>No matter your experience, there are plenty of ways to get involved and contribute to Home Assistant! If you’ve got the dev skills (whether you're a beginner or expert), <a href="https://developers.home-assistant.io/docs/review-process#before-creating-your-pr">start here</a>, which shows you how to craft a PR, and then check out our extensive <a href="https://developers.home-assistant.io/docs/development_index/">Core documentation</a> to help familiarize yourself with our architecture. There you will find instructions on how to join the Developers category in our Discord server, which allows you to chat directly with other developers.</p><p>If you're knowledgeable about how to use Home Assistant, don't be afraid to hop onto one (or more) of our community platforms to share this knowledge. This is a great way to contribute if you’re not a developer. Additionally, suppose you're a designer and are passionate about Home Assistant. In that case, we'd love for you to check out our <a href="https://developers.home-assistant.io/docs/development_index/">Developers category in Discord</a> (Follow the steps to join the development server, and choose I want to contribute design skills!).</p><p>If you’re not able to give your time, you can also financially support the foundation, which pays passionate people to work on Home Assistant full-time. Subscribing to <a href="https://www.home-assistant.io/cloud/">Home Assistant Cloud</a> or purchasing our officially licensed Home Assistant hardware supports the development of this project and <a href="https://www.openhomefoundation.org/projects/">many others</a>. In the near future, we hope to relaunch our merch store where community members can purchase swag to support the foundation.</p>
|
||||||
|
- question: Where can I find regional communities?
|
||||||
|
answer: <p>This is not an exhaustive list of regional communities, but the ones that we are aware of. Is yours missing? Let us know!</p><ul><li><a href="https://forum.hacf.fr/">Home Assistant Communauté Francophone</a></li><li><a href="https://discord.com/invite/6PWva4TYXz">Community Smart Home</a> (German-speaking Discord Server) and <a href="https://community-smarthome.com/">their forums</a></li><li><a href="https://www.facebook.com/groups/HomeAssistantNL/">Home Assistant [DUTCH]</a> (Private FB group)</li><li><a href="https://www.facebook.com/groups/594073248777064">Home Assistant Enthusiasts - South Africa</a> (Private FB group)</li><li><a href="https://www.facebook.com/groups/homeassistantau">Home Assistant AU & NZ</a> (Australia & New Zealand - Public FB group)</li><li><a href="https://www.facebook.com/groups/homeassistant.island/">Home Assistant Ísland</a> (Iceland - Private FB group)</li></ul>
|
||||||
|
- question: Can community hosts be reimbursed for fees related to their meetups?
|
||||||
|
answer: Yes! Community is the foundation of Home Assistant, and we want to help make sure that meeting with other smart home enthusiasts is a stress-free experience. The Open Home Foundation will reimburse hosts for certain fees related to hosting a meetup. Check out our Expense Guidelines for Hosts for more information.
|
||||||
|
- question: I have a suggestion for this page!
|
||||||
|
answer: Excellent! Let Missy know by emailing <a href="mailto:community@openhomefoundation.org">community@openhomefoundation.org</a>, and we'll put it under consideration.
|
||||||
@ -79,7 +79,7 @@
|
|||||||
Home Assistant has built-in functionality to create files containing a copy
|
Home Assistant has built-in functionality to create files containing a copy
|
||||||
of your configuration. This can be used to restore your Home Assistant as
|
of your configuration. This can be used to restore your Home Assistant as
|
||||||
well as migrate to a new system. The backup feature is available for all
|
well as migrate to a new system. The backup feature is available for all
|
||||||
[installation types](/installation/#about-installation-methods).
|
[installation types](/installation/#about-installation-types).
|
||||||
link: /common-tasks/general/#backups
|
link: /common-tasks/general/#backups
|
||||||
aliases:
|
aliases:
|
||||||
- backups
|
- backups
|
||||||
@ -307,23 +307,36 @@
|
|||||||
Home Assistant Container is a standalone container-based installation of
|
Home Assistant Container is a standalone container-based installation of
|
||||||
Home Assistant Core. Any [OCI](https://opencontainers.org/) compatible
|
Home Assistant Core. Any [OCI](https://opencontainers.org/) compatible
|
||||||
runtime can be used, but the documentation focus is on Docker.
|
runtime can be used, but the documentation focus is on Docker.
|
||||||
link: /installation/#about-installation-methods
|
link: /installation/#about-installation-types
|
||||||
- term: Home Assistant Core
|
- term: Home Assistant Core
|
||||||
definition: >-
|
definition: >-
|
||||||
Home Assistant Core is the Python program at the heart of Home Assistant. It
|
Home Assistant Core is the Python program at the heart of Home Assistant. It
|
||||||
is part of all installation types. It can be installed standalone (without Home Assistant
|
is part of all installation types. It can be installed standalone (without Home Assistant
|
||||||
Supervisor) as a container using Docker (this is typically referred to as the Home Assistant
|
Supervisor) as a container using Docker (this is typically referred to as the Home Assistant
|
||||||
Container installation method). For development, Core can also be run using a Virtual
|
Container installation type). For development, Core can also be run using a Virtual
|
||||||
Environment (previously referred as the Home Assistant Core installation method.
|
Environment (previously referred as the Home Assistant Core installation type.
|
||||||
For production setup, the [Home Assistant Core installation method is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/).
|
For production setup, the [Home Assistant Core installation type is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/).
|
||||||
|
excerpt: >-
|
||||||
|
Home Assistant Core is the Python program at the heart of Home Assistant. It
|
||||||
|
is part of all installation types. It can be installed standalone (without Home Assistant
|
||||||
|
Supervisor) as a container using Docker (this is typically referred to as the Home Assistant
|
||||||
|
Container installation type). For development, Core can also be run using a Virtual
|
||||||
|
Environment (previously referred as the Home Assistant Core installation type).
|
||||||
|
For production setup, the Home Assistant Core installation type is deprecated.
|
||||||
- term: Home Assistant Supervised
|
- term: Home Assistant Supervised
|
||||||
definition: >-
|
definition: >-
|
||||||
The Home Assistant Supervised installation method is a full UI managed home automation ecosystem
|
The Home Assistant Supervised installation type is a full UI managed home automation ecosystem
|
||||||
that runs the Home Assistant Core program, the Home Assistant Supervisor and
|
that runs the Home Assistant Core program, the Home Assistant Supervisor and
|
||||||
add-ons. It comes pre-installed on Home Assistant OS, but can be installed
|
add-ons. It comes pre-installed on Home Assistant OS, but can be installed
|
||||||
standalone on Debian Linux systems. It leverages Docker, which is managed by
|
standalone on Debian Linux systems. It leverages Docker, which is managed by
|
||||||
the Home Assistant Supervisor. The
|
the Home Assistant Supervisor. The
|
||||||
[Home Assistant Supervised installation method is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/).
|
[Home Assistant Supervised installation type is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/).
|
||||||
|
excerpt: >-
|
||||||
|
The Home Assistant Supervised installation type is a full UI managed home automation ecosystem
|
||||||
|
that runs the Home Assistant Core program, the Home Assistant Supervisor and
|
||||||
|
add-ons. It comes pre-installed on Home Assistant OS, but can be installed
|
||||||
|
standalone on Debian Linux systems. It leverages Docker, which is managed by
|
||||||
|
the Home Assistant Supervisor. The Home Assistant Supervised installation type is deprecated.
|
||||||
- term: Home Assistant Supervisor
|
- term: Home Assistant Supervisor
|
||||||
definition: >-
|
definition: >-
|
||||||
The Home Assistant Supervisor is a program that manages a Home Assistant
|
The Home Assistant Supervisor is a program that manages a Home Assistant
|
||||||
@ -337,7 +350,7 @@
|
|||||||
includes Home Assistant Core, the Home Assistant Supervisor, and supports
|
includes Home Assistant Core, the Home Assistant Supervisor, and supports
|
||||||
add-ons. Home Assistant Supervisor keeps it up to date, removing the need
|
add-ons. Home Assistant Supervisor keeps it up to date, removing the need
|
||||||
for you to manage an operating system. Home Assistant Operating System is
|
for you to manage an operating system. Home Assistant Operating System is
|
||||||
the recommended installation method for most users.
|
the recommended installation type for most users.
|
||||||
- term: Host
|
- term: Host
|
||||||
definition: >-
|
definition: >-
|
||||||
A device that can communicate with other devices on a network. During setup
|
A device that can communicate with other devices on a network. During setup
|
||||||
|
|||||||
@ -101,3 +101,11 @@ Miranda Bishop:
|
|||||||
Timothy Nibeaudeau:
|
Timothy Nibeaudeau:
|
||||||
name: Timothy Nibeaudeau
|
name: Timothy Nibeaudeau
|
||||||
github: timoPtr
|
github: timoPtr
|
||||||
|
|
||||||
|
Keith Burzinski:
|
||||||
|
name: Keith Burzinski
|
||||||
|
github: kbx81
|
||||||
|
|
||||||
|
Carl Albertsson:
|
||||||
|
name: Carl Albertsson
|
||||||
|
github: mellowism
|
||||||
@ -21,5 +21,9 @@ items:
|
|||||||
answer: 'For the best performance, place Connect ZWA-2 upright, away from any radio-blocking obstructions. Avoid placing Connect ZWA-2 on its side or mounting it sideways on a wall. There is even an accelerometer inside it to ensure people position it correctly, with the top status light blinking quickly if placed at a suboptimal angle.'
|
answer: 'For the best performance, place Connect ZWA-2 upright, away from any radio-blocking obstructions. Avoid placing Connect ZWA-2 on its side or mounting it sideways on a wall. There is even an accelerometer inside it to ensure people position it correctly, with the top status light blinking quickly if placed at a suboptimal angle.'
|
||||||
- question: Does the Connect ZWA-2 run on ESPHome?
|
- question: Does the Connect ZWA-2 run on ESPHome?
|
||||||
answer: 'No, while the Connect ZWA-2 does contain an ESP32 chip, it does not run an ESPHome-based firmware. Though it includes a Wi-Fi/Bluetooth antenna, it is inactive. It uses the ESP32 chip as a USB controller. The firmware for the ESP32 in the Connect ZWA-2 is open source and can be <a href="https://github.com/NabuCasa/zwave-esp-bridge">found here</a>, and the firmware for the Z-Wave chip can be <a href="https://github.com/NabuCasa/zwave-firmware">found here</a>.'
|
answer: 'No, while the Connect ZWA-2 does contain an ESP32 chip, it does not run an ESPHome-based firmware. Though it includes a Wi-Fi/Bluetooth antenna, it is inactive. It uses the ESP32 chip as a USB controller. The firmware for the ESP32 in the Connect ZWA-2 is open source and can be <a href="https://github.com/NabuCasa/zwave-esp-bridge">found here</a>, and the firmware for the Z-Wave chip can be <a href="https://github.com/NabuCasa/zwave-firmware">found here</a>.'
|
||||||
|
- question: Why does a direct USB connection improve your Z-Wave network?
|
||||||
|
answer: '<p>During the development of Connect ZWA-2, we tested several ways of connecting Z-Wave adapters to Home Assistant. We found that, currently, the most reliable method is a direct USB connection, and this is all to do with latency.</p><img src="/images/connect/zwa-2/latency.webp"><p>For Z-Wave devices to work with Home Assistant, three parts need to communicate: Home Assistant, the Z-Wave JS add-on, and the adapter (e.g., Connect ZWA-2). The connection between the add-on and the adapter is latency-sensitive, so USB is the best option. Network connections can introduce latency, which can cause issues. In contrast, communication between the add-on and Home Assistant is less sensitive and works fine locally or over the network.</p><p>If you need to place Connect ZWA-2 far away from your Home Assistant system, you can run Z-Wave JS on another machine, plug your Connect ZWA-2 into it via USB, and then connect that machine to Home Assistant over the network. <a href="https://support.nabucasa.com/hc/en-us/articles/29751691427741" target="_blank" rel="noopener">More on that process here</a>.</p>'
|
||||||
|
- question: Where is the best place in my home for Connect ZWA-2?
|
||||||
|
answer: '<p>Thanks to its optimized antenna design and Z-Wave’s use of the sub-GHz frequency, Connect ZWA-2 works great in most places around the house, even if your Home Assistant system is in a basement, a far corner room, or an attic. Every home is different, but our testing shows it should cover an average-sized home, regardless of location.</p><p>If placement in your home becomes an issue, and you need to place Connect ZWA-2 far away from your Home Assistant system, there is a solution. It is possible to run Z-Wave JS on another system, and plug Connect ZWA-2 into that system via USB. Then you can connect that system over the network to Home Assistant. <a href="https://support.nabucasa.com/hc/en-us/articles/29751691427741" target="_blank" rel="noopener">More on that process here</a>.</p>'
|
||||||
- question: Who manufactures the Connect ZWA-2?
|
- question: Who manufactures the Connect ZWA-2?
|
||||||
answer: 'Nabu Casa, a commercial partner of the Open Home Foundation, is the manufacturer of the Connect ZWA-2. A significant part of Nabu Casa’s revenue on Home Assistant-branded products is paid to the Open Home Foundation as a partnership fee. Purchasing products from commercial partners supports the Open Home Foundation and the development of all its projects, such as Home Assistant, Z-Wave JS, ESPHome, and Music Assistant.'
|
answer: 'Nabu Casa, a commercial partner of the Open Home Foundation, is the manufacturer of the Connect ZWA-2. A significant part of Nabu Casa’s revenue on Home Assistant-branded products is paid to the Open Home Foundation as a partnership fee. Purchasing products from commercial partners supports the Open Home Foundation and the development of all its projects, such as Home Assistant, Z-Wave JS, ESPHome, and Music Assistant.'
|
||||||
|
|||||||
@ -174,17 +174,6 @@ yellow:
|
|||||||
ship_to: America
|
ship_to: America
|
||||||
url: https://cloudfree.shop/product/home-assistant-yellow/
|
url: https://cloudfree.shop/product/home-assistant-yellow/
|
||||||
logo: /images/distributors/cloudfree.webp
|
logo: /images/distributors/cloudfree.webp
|
||||||
- name: Seeed Studio
|
|
||||||
ship_from: US
|
|
||||||
ship_to: America
|
|
||||||
url: https://www.seeedstudio.com/Home-Assistant-Yellow-Kit-with-selectable-CM4.html
|
|
||||||
logo: /images/distributors/seeed-studio.webp
|
|
||||||
# Asia
|
|
||||||
- name: Seeed Studio
|
|
||||||
ship_from: China
|
|
||||||
ship_to: Asia
|
|
||||||
url: https://www.seeedstudio.com/Home-Assistant-Yellow-Kit-with-selectable-CM4.html
|
|
||||||
logo: /images/distributors/seeed-studio.webp
|
|
||||||
# Australia
|
# Australia
|
||||||
- name: Smart Guys
|
- name: Smart Guys
|
||||||
ship_from: Australia
|
ship_from: Australia
|
||||||
@ -192,16 +181,6 @@ yellow:
|
|||||||
url: https://smartguys.com.au/product/home-assistant-yellow-smart-hub/
|
url: https://smartguys.com.au/product/home-assistant-yellow-smart-hub/
|
||||||
logo: /images/distributors/smart-guys.webp
|
logo: /images/distributors/smart-guys.webp
|
||||||
# Europe
|
# Europe
|
||||||
- name: Botland
|
|
||||||
ship_from: Poland
|
|
||||||
ship_to: Europe
|
|
||||||
url: https://botland.com.pl/centralki-i-bramki-sieciowe/24698-home-assistant-yellow-standard-kit-inteligenta-centralka-zigbee-thread-nabu-casa-yellow-kit-std-794677011741.html
|
|
||||||
logo: /images/distributors/botland.webp
|
|
||||||
- name: Mauser
|
|
||||||
ship_from: Portugal
|
|
||||||
ship_to: Europe
|
|
||||||
url: https://mauser.pt/catalog/product_info.php?products_id=095-3150
|
|
||||||
logo: /images/distributors/mauser.png
|
|
||||||
- name: Pi-Shop.ch
|
- name: Pi-Shop.ch
|
||||||
ship_from: Switzerland
|
ship_from: Switzerland
|
||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
@ -212,21 +191,6 @@ yellow:
|
|||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
url: https://raspberrypi.dk/en/product/home-assistant-yellow/
|
url: https://raspberrypi.dk/en/product/home-assistant-yellow/
|
||||||
logo: /images/distributors/RaspberryPi-dk.webp
|
logo: /images/distributors/RaspberryPi-dk.webp
|
||||||
- name: Seeed Studio
|
|
||||||
ship_from: Germany
|
|
||||||
ship_to: Europe
|
|
||||||
url: https://www.seeedstudio.com/Home-Assistant-Yellow-Kit-with-selectable-CM4.html
|
|
||||||
logo: /images/distributors/seeed-studio.webp
|
|
||||||
- name: The Pi Hut
|
|
||||||
ship_from: UK
|
|
||||||
ship_to: Europe
|
|
||||||
url: https://thepihut.com/products/home-assistant-yellow
|
|
||||||
logo: /images/distributors/pi-hut.webp
|
|
||||||
- name: Domadoo
|
|
||||||
ship_from: France
|
|
||||||
ship_to: Europe
|
|
||||||
url: https://www.domadoo.fr/en/smart-home-hub/7113-nabu-casa-home-assistant-yellow-kit-with-power-supply.html
|
|
||||||
logo: /images/distributors/domadoo.jpg
|
|
||||||
zbt-1:
|
zbt-1:
|
||||||
name: "<strong>Home Assistant Connect ZBT-1</strong>"
|
name: "<strong>Home Assistant Connect ZBT-1</strong>"
|
||||||
distributors:
|
distributors:
|
||||||
@ -606,7 +570,7 @@ zwa-2:
|
|||||||
- name: mediarath
|
- name: mediarath
|
||||||
ship_from: Germany
|
ship_from: Germany
|
||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
url: https://mediarath.de/products/home-assistant-connect-zwa-2-antenne-z-wave-800-long-range-plus-plus-v2
|
url: https://mediarath.de/products/home-assistant-connect-zwa-2-adapter-z-wave-800-long-range-plus-plus-v2
|
||||||
logo: /images/distributors/mediarath.de.webp
|
logo: /images/distributors/mediarath.de.webp
|
||||||
- name: SmarterHOME
|
- name: SmarterHOME
|
||||||
ship_from: Czech Republic
|
ship_from: Czech Republic
|
||||||
|
|||||||
@ -50,6 +50,8 @@ automation 2:
|
|||||||
|
|
||||||
Conditions can also be part of an action. You can combine multiple actions and conditions in a single action, and they will be processed in the order you put them in. If the result of a condition is false, the action will stop there so any action after that condition will not be executed.
|
Conditions can also be part of an action. You can combine multiple actions and conditions in a single action, and they will be processed in the order you put them in. If the result of a condition is false, the action will stop there so any action after that condition will not be executed.
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
automation:
|
automation:
|
||||||
- alias: "Office at evening"
|
- alias: "Office at evening"
|
||||||
@ -73,4 +75,11 @@ automation:
|
|||||||
- action: scene.turn_on
|
- action: scene.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: scene.office_at_evening
|
entity_id: scene.office_at_evening
|
||||||
|
- action: light.turn_on
|
||||||
|
target: "{{ {'entity_id': ['light.office', 'light.office_2']} }}"
|
||||||
|
- action: switch.turn_on
|
||||||
|
target:
|
||||||
|
label_id: "{{ ['office_evening', 'office_after_15'] }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|||||||
@ -7,10 +7,10 @@ Automations support the advanced features of [templating](/docs/configuration/te
|
|||||||
|
|
||||||
Example of variables used in templates:
|
Example of variables used in templates:
|
||||||
|
|
||||||
```jinja
|
{% raw %}
|
||||||
{{ this.name }} is the name of the automation executing from this trigger
|
- `{{ this.name }}` is the name of the automation executing from this trigger
|
||||||
{{ trigger.platform }} is the type of trigger object, like `calendar`
|
- `{{ trigger.platform }}` is the type of trigger object, like `calendar`
|
||||||
```
|
{% endraw %}
|
||||||
|
|
||||||
## Available state data
|
## Available state data
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ These are the properties available for a [Calendar trigger](/docs/automation/tri
|
|||||||
|
|
||||||
These are the properties available for a [Device trigger](/docs/automation/trigger/#device-triggers).
|
These are the properties available for a [Device trigger](/docs/automation/trigger/#device-triggers).
|
||||||
|
|
||||||
Inherites template variables from [event](#event) or [state](#state) template based on the type of trigger selected for the device.
|
Inherits template variables from [event](#event) or [state](#state) template based on the type of trigger selected for the device.
|
||||||
|
|
||||||
| Template variable | Data |
|
| Template variable | Data |
|
||||||
| ---- | ---- |
|
| ---- | ---- |
|
||||||
@ -135,6 +135,7 @@ These are the properties available for a [Sentence trigger](/docs/automation/tri
|
|||||||
| `trigger.slots` | Object with matched slot values.
|
| `trigger.slots` | Object with matched slot values.
|
||||||
| `trigger.details` | Object with matched slot details by name, such as [wildcards](/docs/automation/trigger/#sentence-wildcards). Each detail contains: <ul><li>`name` - name of the slot</li><li>`text` - matched text</li><li>`value` - output value (see [lists](/docs/voice/intent-recognition/template-sentence-syntax/#lists))</li></ul>.
|
| `trigger.details` | Object with matched slot details by name, such as [wildcards](/docs/automation/trigger/#sentence-wildcards). Each detail contains: <ul><li>`name` - name of the slot</li><li>`text` - matched text</li><li>`value` - output value (see [lists](/docs/voice/intent-recognition/template-sentence-syntax/#lists))</li></ul>.
|
||||||
| `trigger.device_id` | The device ID that captured the command, if any.
|
| `trigger.device_id` | The device ID that captured the command, if any.
|
||||||
|
| `trigger.satellite_id` | The entity ID of the satellite that captured the command, if any.
|
||||||
|
|
||||||
### State
|
### State
|
||||||
|
|
||||||
|
|||||||
@ -922,7 +922,7 @@ automation:
|
|||||||
|
|
||||||
## Time pattern trigger
|
## Time pattern trigger
|
||||||
|
|
||||||
With the time pattern trigger, you can match if the hour, minute or second of the current time matches a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You can specify `*` to match any value (when using the web interface this is required, the fields cannot be left empty).
|
With the time pattern trigger, you can match if the hour, minute or second of the current time matches a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You can specify `*` to match any value.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
automation:
|
automation:
|
||||||
@ -970,7 +970,7 @@ See the [Persistent Notification](/integrations/persistent_notification/) integr
|
|||||||
Webhook trigger fires when a web request is made to the webhook endpoint: `/api/webhook/<webhook_id>`. The webhook endpoint is created automatically when you set it as the `webhook_id` in an automation trigger. The `webhook_id` can either be a static value or computed using [limited templates](/docs/configuration/templating/#limited-templates).
|
Webhook trigger fires when a web request is made to the webhook endpoint: `/api/webhook/<webhook_id>`. The webhook endpoint is created automatically when you set it as the `webhook_id` in an automation trigger. The `webhook_id` can either be a static value or computed using [limited templates](/docs/configuration/templating/#limited-templates).
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
The `webhook_id` template is only evaluated when setting up the trigger, they will not be re-evaluated for incomming webhook triggers.
|
The `webhook_id` template is only evaluated when setting up the trigger, they will not be re-evaluated for incoming webhook triggers.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@ -33,7 +33,7 @@ If you are writing automations in YAML, it is also useful to go to {% my server_
|
|||||||
|
|
||||||
When an {% term automation %} is run, all steps are recorded and a trace is made. From the UI, open **Settings**, which is located in the sidebar, then select **Automations & Scenes** to go to the automation editor or click this button directly: {% my automations badge %}
|
When an {% term automation %} is run, all steps are recorded and a trace is made. From the UI, open **Settings**, which is located in the sidebar, then select **Automations & Scenes** to go to the automation editor or click this button directly: {% my automations badge %}
|
||||||
|
|
||||||
From the automation editor UI, or in the automations list in the three dots menu, select **Traces**. Alternatively, select an automation entry shown in the Logbook.
|
From the automation editor UI, or in the automations list in the three dots menu, select **Traces**. Alternatively, select an automation entry shown under **Activity**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -44,7 +44,7 @@ The right side of the trace screen has tabs with more information:
|
|||||||
- **Step Details** shows data and results of the step that is currently highlighted.
|
- **Step Details** shows data and results of the step that is currently highlighted.
|
||||||
- **Automation Config** shows the full YAML configuration at the time the automation was run.
|
- **Automation Config** shows the full YAML configuration at the time the automation was run.
|
||||||
- **Trace Timeline**, shown in the screenshot above, lists the steps that were executed and their timing.
|
- **Trace Timeline**, shown in the screenshot above, lists the steps that were executed and their timing.
|
||||||
- **Related logbook entries**, shows a logbook for all the entries related to the specific trace.
|
- **Related activity**, shows the activity for all the entries related to the specific trace.
|
||||||
- **Blueprint Config** will only be shown if the automation was created from a {% term blueprint %}.
|
- **Blueprint Config** will only be shown if the automation was created from a {% term blueprint %}.
|
||||||
|
|
||||||
The top bar shows the date and time the automation was triggered. Use the left and right arrows to view previous runs of the automation.
|
The top bar shows the date and time the automation was triggered. Use the left and right arrows to view previous runs of the automation.
|
||||||
|
|||||||
@ -86,7 +86,7 @@ If you do not want to [re-import the blueprint](/docs/automation/using_blueprint
|
|||||||
its {% term YAML %} content to keep it up to date:
|
its {% term YAML %} content to keep it up to date:
|
||||||
|
|
||||||
1. Navigate to the blueprints directory (`blueprints/automation/`).
|
1. Navigate to the blueprints directory (`blueprints/automation/`).
|
||||||
The location of this directory depends on the installation method. It's
|
The location of this directory depends on the installation type. It's
|
||||||
similar to how you find [`configuration.yaml`](/docs/configuration/#editing-configurationyaml).
|
similar to how you find [`configuration.yaml`](/docs/configuration/#editing-configurationyaml).
|
||||||
2. Next, you must find the blueprint to update. The path name of a blueprint consists of:
|
2. Next, you must find the blueprint to update. The path name of a blueprint consists of:
|
||||||
- The username of the user that created it. The name depends on the source of the blueprint:
|
- The username of the user that created it. The name depends on the source of the blueprint:
|
||||||
|
|||||||
@ -1189,7 +1189,7 @@ number:
|
|||||||
|
|
||||||
The object selector can be used to input arbitrary data in YAML form. This is useful for e.g. lists and dictionaries containing data for actions. The value of the input will contain the provided data.
|
The object selector can be used to input arbitrary data in YAML form. This is useful for e.g. lists and dictionaries containing data for actions. The value of the input will contain the provided data.
|
||||||
|
|
||||||
When used without options, the selector will accept a free form object.
|
When used without options, the selector will accept any valid YAML content, such as objects, arrays, strings, or other YAML types. The input box is displayed as an editor with syntax highlighting.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -1197,7 +1197,7 @@ When used without options, the selector will accept a free form object.
|
|||||||
object:
|
object:
|
||||||
```
|
```
|
||||||
|
|
||||||
When used with a `schema`, the selector will force the object to be in this format by displaying a form.
|
When used with `fields` specified, the selector will force the object to be in this format by displaying a form.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -1220,7 +1220,7 @@ object:
|
|||||||
|
|
||||||
The output of this selector is a YAML object.
|
The output of this selector is a YAML object.
|
||||||
|
|
||||||
{% configuration qr_code %}
|
{% configuration object %}
|
||||||
fields:
|
fields:
|
||||||
description: >
|
description: >
|
||||||
List of fields of the object.
|
List of fields of the object.
|
||||||
@ -1231,6 +1231,11 @@ fields:
|
|||||||
description: The label of the field
|
description: The label of the field
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
required:
|
||||||
|
description: If set to true, the field must be present.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
selector:
|
selector:
|
||||||
description: The selector to use for this field. It can be any available selector.
|
description: The selector to use for this field. It can be any available selector.
|
||||||
required: true
|
required: true
|
||||||
@ -1256,7 +1261,7 @@ translation_key:
|
|||||||
required: false
|
required: false
|
||||||
multiple:
|
multiple:
|
||||||
description: >
|
description: >
|
||||||
Allows selecting multiple options. If set to `true`, the resulting value of this selector will be a list instead of a single string value. This option is only used if `fields` option set.
|
Allows adding multiple objects. If set to `true`, the resulting value of this selector will be a list instead of a single YAML object. This option is only used if `fields` option set.
|
||||||
type: boolean
|
type: boolean
|
||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
@ -1481,34 +1486,6 @@ target:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{% configuration target %}
|
{% configuration target %}
|
||||||
device:
|
|
||||||
description: >
|
|
||||||
When device options are provided, the targets are limited by devices
|
|
||||||
that at least match the given conditions. Can be either a object or a list
|
|
||||||
of object.
|
|
||||||
type: list
|
|
||||||
keys:
|
|
||||||
integration:
|
|
||||||
description: >
|
|
||||||
Can be set to an integration domain. Limits the device targets that
|
|
||||||
are provided devices by the set integration domain, for example,
|
|
||||||
[`zha`](/integrations/zha).
|
|
||||||
type: string
|
|
||||||
required: false
|
|
||||||
manufacturer:
|
|
||||||
description: >
|
|
||||||
When set, it limits the targets to devices provided by the set
|
|
||||||
manufacturer name.
|
|
||||||
type: string
|
|
||||||
required: false
|
|
||||||
model:
|
|
||||||
description: When set, it limits the targets to devices by the set model.
|
|
||||||
type: string
|
|
||||||
required: false
|
|
||||||
model_id:
|
|
||||||
description: When set, the targets are limited to devices that have the set model ID.
|
|
||||||
type: string
|
|
||||||
required: false
|
|
||||||
entity:
|
entity:
|
||||||
description: >
|
description: >
|
||||||
When entity options are provided, the targets are limited by entities
|
When entity options are provided, the targets are limited by entities
|
||||||
@ -1567,18 +1544,6 @@ target:
|
|||||||
domain: light
|
domain: light
|
||||||
```
|
```
|
||||||
|
|
||||||
Another example using the target selector, which only shows targets that
|
|
||||||
provide one or more remote controls, provided by the
|
|
||||||
[deCONZ](/integrations/deconz) integration.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
target:
|
|
||||||
device:
|
|
||||||
- integration: deconz
|
|
||||||
manufacturer: IKEA of Sweden
|
|
||||||
model: TRADFRI remote control
|
|
||||||
```
|
|
||||||
|
|
||||||
## Template selector
|
## Template selector
|
||||||
|
|
||||||
The template selector can be used to input a Jinja2 template. This is useful
|
The template selector can be used to input a Jinja2 template. This is useful
|
||||||
|
|||||||
@ -27,7 +27,7 @@ Example of a configuration.yaml file, accessed using the File editor add-on on a
|
|||||||
|
|
||||||
## Editing `configuration.yaml`
|
## Editing `configuration.yaml`
|
||||||
|
|
||||||
How you edit your `configuration.yaml` file depends on your editor preferences and the [installation method](/installation/#about-installation-methods) you used to set up Home Assistant. Follow these steps:
|
How you edit your `configuration.yaml` file depends on your editor preferences and the [installation type](/installation/#about-installation-types) you used to set up Home Assistant. Follow these steps:
|
||||||
|
|
||||||
1. [Set up file access](#to-set-up-access-to-the-files-and-prepare-an-editor).
|
1. [Set up file access](#to-set-up-access-to-the-files-and-prepare-an-editor).
|
||||||
2. [Locate the config directory](#to-find-the-configuration-directory).
|
2. [Locate the config directory](#to-find-the-configuration-directory).
|
||||||
@ -37,7 +37,7 @@ How you edit your `configuration.yaml` file depends on your editor preferences a
|
|||||||
### To set up access to the files and prepare an editor
|
### To set up access to the files and prepare an editor
|
||||||
|
|
||||||
Before you can edit a file, you need to know how to access files in Home Assistant and setup an editor.
|
Before you can edit a file, you need to know how to access files in Home Assistant and setup an editor.
|
||||||
File access depends on your [installation method](/installation/#about-installation-methods). If you use {% term "Home Assistant Operating System" %}, you can use editor add-ons, for example. If you use {% term "Home Assistant Container" %}, add-ons are not available.
|
File access depends on your [installation type](/installation/#about-installation-types). If you use {% term "Home Assistant Operating System" %}, you can use editor add-ons, for example. If you use {% term "Home Assistant Container" %}, add-ons are not available.
|
||||||
|
|
||||||
To set up file access on the Home Assistant Operating System, follow these steps:
|
To set up file access on the Home Assistant Operating System, follow these steps:
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ If you have watched any videos about setting up Home Assistant using `configurat
|
|||||||
|
|
||||||
After changing configuration or automation files, you can check if the configuration is valid. A configuration check is also applied automatically when you reload the configuration or when you restart Home Assistant.
|
After changing configuration or automation files, you can check if the configuration is valid. A configuration check is also applied automatically when you reload the configuration or when you restart Home Assistant.
|
||||||
|
|
||||||
The method for running a configuration check depends on your [installation type](/installation/#about-installation-methods). Check the common tasks for your installation type:
|
The method for running a configuration check depends on your [installation type](/installation/#about-installation-types). Check the common tasks for your installation type:
|
||||||
|
|
||||||
- [Configuration check on Operating System](/common-tasks/os/#configuration-check)
|
- [Configuration check on Operating System](/common-tasks/os/#configuration-check)
|
||||||
- [Configuration check on Container](/common-tasks/container/#configuration-check)
|
- [Configuration check on Container](/common-tasks/container/#configuration-check)
|
||||||
|
|||||||
@ -221,7 +221,7 @@ learn more about packages, see the [Packages](/docs/configuration/packages) page
|
|||||||
|
|
||||||
That about wraps it up.
|
That about wraps it up.
|
||||||
|
|
||||||
If you have issues, checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away.
|
If you have issues, check the file indentations and check [the Home Assistant logs](/integrations/logger/#viewing-logs). If all else fails, head over to our [Discord chat server][discord] and ask away.
|
||||||
|
|
||||||
## Debugging configuration files
|
## Debugging configuration files
|
||||||
|
|
||||||
|
|||||||
@ -11,11 +11,11 @@ It can happen that you run into trouble while configuring Home Assistant. Perhap
|
|||||||
|
|
||||||
Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up.
|
Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up.
|
||||||
|
|
||||||
Whenever an integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant.
|
Whenever an integration or configuration option results in a warning, it will be stored in [the logs](/integrations/logger/#viewing-logs).
|
||||||
|
|
||||||
## My integration does not show up
|
## My integration does not show up
|
||||||
|
|
||||||
When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up.
|
When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the [the logs](/integrations/logger/#viewing-logs) and see if there are any errors related to your integration you are trying to set up.
|
||||||
|
|
||||||
If you have incorrect entries in your configuration files you can use the configuration check command (below) to assist in identifying them.
|
If you have incorrect entries in your configuration files you can use the configuration check command (below) to assist in identifying them.
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ sensor:
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
Another common problem is that a required configuration setting is missing. If this is the case, the integration will report this to `home-assistant.log`. You can have a look at [the various integration pages](/integrations/) for instructions on how to setup the integrations.
|
Another common problem is that a required configuration setting is missing. If this is the case, the integration will report this in [the logs](/integrations/logger/#viewing-logs). You can have a look at [the various integration pages](/integrations/) for instructions on how to setup the integrations.
|
||||||
|
|
||||||
See the [logger](/integrations/logger/) integration for instructions on how to define the level of logging you require for specific modules.
|
See the [logger](/integrations/logger/) integration for instructions on how to define the level of logging you require for specific modules.
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ If you find any errors or want to expand the documentation, please [let us know]
|
|||||||
|
|
||||||
#### Problems with dependencies
|
#### Problems with dependencies
|
||||||
|
|
||||||
Almost all integrations have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in `home-assistant.log`.
|
Almost all integrations have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in [the logs](/integrations/logger/#viewing-logs).
|
||||||
|
|
||||||
The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/core/issues) so we can investigate what is going on.
|
The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/core/issues) so we can investigate what is going on.
|
||||||
|
|
||||||
@ -142,4 +142,4 @@ homeassistant:
|
|||||||
debug: true
|
debug: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Once debug is enabled, periodically check [Home Assistant System Logs](https://my.home-assistant.io/redirect/logs) for new messages.
|
Once debug is enabled, periodically check [Home Assistant System Logs](https://my.home-assistant.io/redirect/logs) for new messages.
|
||||||
|
|||||||
@ -20,4 +20,6 @@ Home Assistant is an open platform and so home energy management is not restrict
|
|||||||
|
|
||||||
If you have a sensor that returns instantaneous power readings (W or kW), then to add a sensor that returns energy usage or generation (kWh), refer to the [Riemann sum integral integration](/integrations/integration/#energy).
|
If you have a sensor that returns instantaneous power readings (W or kW), then to add a sensor that returns energy usage or generation (kWh), refer to the [Riemann sum integral integration](/integrations/integration/#energy).
|
||||||
|
|
||||||
|
You can also configure power sensors alongside energy sensors in the Energy dashboard. Power inputs accept sensors with `state_class: measurement` and appropriate units (for example `W` or `kW`).
|
||||||
|
|
||||||
<img src='/images/docs/energy/energy-overview.png' alt='Visual representation of how all different energy forms relate.' style='border: 0;box-shadow: none;'>
|
<img src='/images/docs/energy/energy-overview.png' alt='Visual representation of how all different energy forms relate.' style='border: 0;box-shadow: none;'>
|
||||||
|
|||||||
@ -75,7 +75,7 @@ If you manually integrate your sensors, for example, using the [MQTT](/integrati
|
|||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
If you are unable to select your energy sensor in the grid consumption drop-down, make sure that its value is being recorded in the Recorder settings.
|
If you are unable to select your energy or power sensor in the grid consumption drop-down, make sure that its value is being recorded in the Recorder settings.
|
||||||
|
|
||||||
[Energy integrations](/integrations/#energy)
|
[Energy integrations](/integrations/#energy)
|
||||||
|
|
||||||
|
|||||||
@ -42,12 +42,13 @@ You are trying to add a sensor to the energy dashboard, but it does not appear i
|
|||||||
### Resolution
|
### Resolution
|
||||||
|
|
||||||
To find out why the sensor is not showing, check the following points:
|
To find out why the sensor is not showing, check the following points:
|
||||||
|
|
||||||
- The sensor must have the appropriate attributes. Check your entity attributes in {% my developer_states title="**Developer Tools** > **States**" %} to confirm the following:
|
- The sensor must have the appropriate attributes. Check your entity attributes in {% my developer_states title="**Developer Tools** > **States**" %} to confirm the following:
|
||||||
- `device_class` must be `energy` for electricity grid, solar, or battery categories. It must be `gas` for gas, or `water` for water.
|
- `device_class` must be `energy` or `power` for electricity grid, solar, or battery categories. It must be `gas` for gas, or `water` for water.
|
||||||
- `state_class` must be `total` or `total_increasing`.
|
- `state_class` must be `measurement` for power sensors and `total` or `total_increasing` for all others.
|
||||||
- The sensor must have an appropriate `unit_of_measurement`. See the help text for each category to see which units are accepted. Units containing an exponent must match superscript characters exactly as defined, e.g. `m³` is accepted, `m3` is not.
|
- The sensor must have an appropriate `unit_of_measurement`. See the help text for each category to see which units are accepted. Units containing an exponent must match superscript characters exactly as defined, e.g. `m³` is accepted, `m3` is not.
|
||||||
|
|
||||||
If any of the attributes are not correct, please open an issue against the integration that provides your sensor, or if you are developing custom template sensors, make sure the templates have the correct settings.
|
If any of the attributes are not correct, please open an issue against the integration that provides your sensor, or if you are developing custom template sensors, make sure the templates have the correct settings.
|
||||||
|
|
||||||
- The entity must be a `sensor`. If you are trying to add something from another domain (for example an `input_number`), then you must first create a template sensor from it.
|
- The entity must be a `sensor`. If you are trying to add something from another domain (for example an `input_number`), then you must first create a template sensor from it.
|
||||||
- The entity must not have any statistics errors. Go to {% my developer_statistics title="**Developer Tools** > **Statistics**" %} to check your specific entity. If your unit has a listed issue here, you must fix the issue before it can be added to the dashboard.
|
- The entity must not have any statistics errors. Go to {% my developer_statistics title="**Developer Tools** > **Statistics**" %} to check your specific entity. If your unit has a listed issue here, you must fix the issue before it can be added to the dashboard.
|
||||||
|
|||||||
@ -19,7 +19,7 @@ Smart relays sit behind your "normal" switches and make them smart. It allows yo
|
|||||||
|
|
||||||
## Devices with power (W) sensors
|
## Devices with power (W) sensors
|
||||||
|
|
||||||
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices. For information on setting up an entity for use in the **Energy** dashboard, refer to the [energy FAQ](/docs/energy/faq/#troubleshooting-missing-entities).
|
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices. You can add the power sensor directly if it has the appropriate attributes. For information on setting up an entity for use in the **Energy** dashboard, refer to the [energy FAQ](/docs/energy/faq/#troubleshooting-missing-entities).
|
||||||
|
|
||||||
<img src='/images/docs/energy/devices.png' alt='Graphic showing energy flowing from the home to individual devices.' style='border: 0;box-shadow: none; display: block; max-height: 400px; margin: 0 auto;'>
|
<img src='/images/docs/energy/devices.png' alt='Graphic showing energy flowing from the home to individual devices.' style='border: 0;box-shadow: none; display: block; max-height: 400px; margin: 0 auto;'>
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,7 @@ Some hardware with water meters may also provide additional practical functions
|
|||||||
|
|
||||||
We have the following integrations available for existing products that can provide information about water usage:
|
We have the following integrations available for existing products that can provide information about water usage:
|
||||||
|
|
||||||
|
- [Droplet](/integrations/droplet)
|
||||||
- [Flo](/integrations/flo)
|
- [Flo](/integrations/flo)
|
||||||
- [Flume](/integrations/flume)
|
- [Flume](/integrations/flume)
|
||||||
- [HomeWizard Energy](/integrations/homewizard)
|
- [HomeWizard Energy](/integrations/homewizard)
|
||||||
|
|||||||
@ -325,7 +325,7 @@ This can be used to take different actions based on whether or not the condition
|
|||||||
|
|
||||||
## Fire an event
|
## Fire an event
|
||||||
|
|
||||||
This {% term action %} allows you to fire an event. Events can be used for many things. It could trigger an {% term automation %} or indicate to another integration that something is happening. For instance, in the below example it is used to create an entry in the logbook.
|
This {% term action %} allows you to fire an event. Events can be used for many things. It could trigger an {% term automation %} or indicate to another integration that something is happening. For instance, in the below example it is used to create an entry in the **Activity** panel.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- alias: "Fire LOGBOOK_ENTRY event"
|
- alias: "Fire LOGBOOK_ENTRY event"
|
||||||
|
|||||||
@ -16,7 +16,7 @@ The script has further options like checking configuration files which are not l
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ hass --script check_config -h
|
$ hass --script check_config -h
|
||||||
usage: hass [-h] [--script {check_config}] [-c CONFIG] [-i [INFO]] [-f] [-s]
|
usage: hass [-h] [--script {check_config}] [-c CONFIG] [-i [INFO]] [-f] [-s] [--json] [--fail-on-warnings]
|
||||||
|
|
||||||
Check Home Assistant configuration.
|
Check Home Assistant configuration.
|
||||||
|
|
||||||
@ -30,4 +30,6 @@ optional arguments:
|
|||||||
Show a portion of the config
|
Show a portion of the config
|
||||||
-f, --files Show used configuration files
|
-f, --files Show used configuration files
|
||||||
-s, --secrets Show secret information
|
-s, --secrets Show secret information
|
||||||
|
--json Output JSON format
|
||||||
|
--fail-on-warnings Exit non-zero if warnings are present
|
||||||
```
|
```
|
||||||
|
|||||||
@ -5,7 +5,7 @@ description: "Description of hass."
|
|||||||
|
|
||||||
The command-line part of Home Assistant is `hass`.
|
The command-line part of Home Assistant is `hass`.
|
||||||
|
|
||||||
This tool is only available to users of the Home Assistant Core installation method. It is started from the command line on the computer running Home Assistant Core (accessed perhaps via SSH).
|
This tool is only available to users of the Home Assistant Core installation type. It is started from the command line on the computer running Home Assistant Core (accessed perhaps via SSH).
|
||||||
|
|
||||||
```text
|
```text
|
||||||
$ hass -h
|
$ hass -h
|
||||||
|
|||||||
@ -4,9 +4,9 @@ description: "My integration does not show up"
|
|||||||
ha_category: Configuration
|
ha_category: Configuration
|
||||||
---
|
---
|
||||||
|
|
||||||
When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up.
|
When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the [the logs](/integrations/logger/#viewing-logs) and see if there are any errors related to your integration you are trying to set up.
|
||||||
|
|
||||||
If you have incorrect entries in your configuration files you can use the CLI script to check your configuration, each installation type has its own section in the common-tasks about this:
|
If you have incorrect entries in your configuration files you can use the CLI script to check your configuration, each installation type has its own section in the common-tasks about this:
|
||||||
|
|
||||||
- [Operating System](/common-tasks/os/#configuration-check)
|
- [Operating System](/common-tasks/os/#configuration-check)
|
||||||
- [Container](/common-tasks/container/#configuration-check)
|
- [Container](/common-tasks/container/#configuration-check)
|
||||||
|
|||||||
@ -5,7 +5,7 @@ ha_category: Installation
|
|||||||
---
|
---
|
||||||
|
|
||||||
Home Assistant Core is a Python program, in simple words. It can be run on various operating systems and provide the ability to track, control and automate your devices.
|
Home Assistant Core is a Python program, in simple words. It can be run on various operating systems and provide the ability to track, control and automate your devices.
|
||||||
When people talking about Home Assistant Core they usually refer to a standalone [installation method](/docs/installation/).
|
When people talking about Home Assistant Core they usually refer to a standalone [installation type](/docs/installation/).
|
||||||
|
|
||||||
[Home Assistant](/hassio/) is a combination of Home Assistant Core and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first.
|
[Home Assistant](/hassio/) is a combination of Home Assistant Core and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first.
|
||||||
Home Assistant is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a Home Assistant Core setup.
|
Home Assistant is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a Home Assistant Core setup.
|
||||||
|
|||||||
@ -4,6 +4,6 @@ description: "Problems with dependencies"
|
|||||||
ha_category: Usage
|
ha_category: Usage
|
||||||
---
|
---
|
||||||
|
|
||||||
Almost all integrations have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in `home-assistant.log`.
|
Almost all integrations have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in [the logs](/integrations/logger/#viewing-logs).
|
||||||
|
|
||||||
The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/home-assistant/issues) so we can investigate what is going on.
|
The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/home-assistant/issues) so we can investigate what is going on.
|
||||||
|
|||||||
@ -79,7 +79,7 @@
|
|||||||
{% if page.ha_domain %}
|
{% if page.ha_domain %}
|
||||||
<div class='section'>
|
<div class='section'>
|
||||||
<a href="https://github.com/home-assistant/core/tree/dev/homeassistant/components/{{ domain }}" target="_blank">{% icon "simple-icons:github" %} View source on GitHub</a><br />
|
<a href="https://github.com/home-assistant/core/tree/dev/homeassistant/components/{{ domain }}" target="_blank">{% icon "simple-icons:github" %} View source on GitHub</a><br />
|
||||||
<a href="https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+{{ domain }}%22" target="_blank">{% icon "mdi:bug" %} View known issues</a>
|
<a href="https://github.com/home-assistant/core/issues?q=is%3Aissue+label%3A%22integration%3A+{{ domain }}%22" target="_blank">{% icon "mdi:bug" %} View known issues</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@ -40,6 +40,7 @@
|
|||||||
<li>{% active_link /dashboards/features/ Features %}</li>
|
<li>{% active_link /dashboards/features/ Features %}</li>
|
||||||
<li>{% active_link /dashboards/header-footer/ Headers & footers %}</li>
|
<li>{% active_link /dashboards/header-footer/ Headers & footers %}</li>
|
||||||
<li>{% active_link /dashboards/actions/ Actions %}</li>
|
<li>{% active_link /dashboards/actions/ Actions %}</li>
|
||||||
|
<li>{% active_link /dashboards/naming/ Naming %}</li>
|
||||||
<li><a
|
<li><a
|
||||||
class="external-link"
|
class="external-link"
|
||||||
href="https://developers.home-assistant.io/docs/frontend/custom-ui/custom-card/"
|
href="https://developers.home-assistant.io/docs/frontend/custom-ui/custom-card/"
|
||||||
|
|||||||
@ -11,13 +11,13 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://support.nabucasa.com/hc/en-us/categories/24638797677853-Home-Assistant-Green">Home Assistant Green {% icon "tabler:external-link" %}</a></li>
|
<li><a href="https://support.nabucasa.com/hc/en-us/categories/24638797677853-Home-Assistant-Green">Home Assistant Green {% icon "tabler:external-link" %}</a></li>
|
||||||
<li><a href="https://support.nabucasa.com/hc/en-us/categories/24734575925149-Home-Assistant-Yellow">Home Assistant Yellow {% icon "tabler:external-link" %}</a></li>
|
<li><a href="https://support.nabucasa.com/hc/en-us/categories/24734575925149-Home-Assistant-Yellow">Home Assistant Yellow {% icon "tabler:external-link" %}</a></li>
|
||||||
<li>{% active_link /installation/raspberrypi Raspberry Pi %}</li>
|
<li>{% active_link /installation/raspberrypi/ Raspberry Pi %}</li>
|
||||||
<li>{% active_link /installation/odroid ODROID %}</li>
|
<li>{% active_link /installation/odroid/ ODROID %}</li>
|
||||||
<li>{% active_link /installation/generic-x86-64 Generic x86-64 %}</li>
|
<li>{% active_link /installation/generic-x86-64/ Generic x86-64 %}</li>
|
||||||
<li>{% active_link /installation/linux Linux %}</li>
|
<li>{% active_link /installation/linux/ Linux %}</li>
|
||||||
<li>{% active_link /installation/macos macOS %}</li>
|
<li>{% active_link /installation/macos/ macOS %}</li>
|
||||||
<li>{% active_link /installation/windows Windows %}</li>
|
<li>{% active_link /installation/windows/ Windows %}</li>
|
||||||
<li>{% active_link /installation/alternative Other systems %}</li>
|
<li>{% active_link /installation/alternative/ Other systems %}</li>
|
||||||
<li>{% active_link /installation/troubleshooting/ Troubleshooting %}</li>
|
<li>{% active_link /installation/troubleshooting/ Troubleshooting %}</li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ Note: This commands will render your current Home Assistant OS installation unbo
|
|||||||
Use the local terminal (HDMI/keyboard) to access the system console. On the Home Assistant CLI (command line), enter `login` to enter the root shell and use `curl` to download an image and `dd` it to the eMMC block device:
|
Use the local terminal (HDMI/keyboard) to access the system console. On the Home Assistant CLI (command line), enter `login` to enter the root shell and use `curl` to download an image and `dd` it to the eMMC block device:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img | dd of=/dev/mmcblk0
|
curl -L -A "Mozilla/5.0" https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img | sudo dd of=/dev/mmcblk0 bs=4M status=progress conv=fsync
|
||||||
```
|
```
|
||||||
|
|
||||||
This way, the device will start in the UMS mode on the next boot with the SD card removed. Follow the [Install over USB from PC](https://wiki.odroid.com/odroid-m1s/getting_started/os_installation_guide#install_over_usb_from_pc) to install a different operating system.
|
This way, the device will start in the UMS mode on the next boot with the SD card removed. Follow the [Install over USB from PC](https://wiki.odroid.com/odroid-m1s/getting_started/os_installation_guide#install_over_usb_from_pc) to install a different operating system.
|
||||||
|
|||||||
@ -23,6 +23,22 @@
|
|||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<a href="https://www.youtube.com/watch?v=HSRvso6cbf0" class="material-card picture-promo picture-top" target="_blank"
|
||||||
|
rel="noopener noreferrer" aria-label="Join the livestream for our latest product reveal!"
|
||||||
|
style="background-image: url(/images/frontpage/feature-nov19.webp);background-size: cover;aspect-ratio: 900/600;">
|
||||||
|
<div class="caption">
|
||||||
|
<div>
|
||||||
|
<div class="title">
|
||||||
|
Product launch incoming
|
||||||
|
</div>
|
||||||
|
<div class="subtitle">
|
||||||
|
Join the livestream for our latest product reveal!<br />
|
||||||
|
November 19 @ 12PM PT / 3PM ET / 21:00 CET
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
{% assign releases_post_limit = 2 %}
|
{% assign releases_post_limit = 2 %}
|
||||||
{% assign blog_post_limit = 4 %}
|
{% assign blog_post_limit = 4 %}
|
||||||
<!-- Home Assistant updates posts -->
|
<!-- Home Assistant updates posts -->
|
||||||
@ -80,11 +96,11 @@
|
|||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Community Day 2025 - To move on/after event -->
|
<!-- Community -->
|
||||||
<a href="https://lu.ma/homeassistant" class="material-card picture-promo" target="_blank" style="
|
<a href="/community" class="material-card picture-promo" style="
|
||||||
background-image: url(/images/frontpage/community-meetup.webp);
|
background-image: url(/images/frontpage/community-card.webp);
|
||||||
aspect-ratio: 500/263;
|
aspect-ratio: 500/263;
|
||||||
" aria-label="State of the Open Home - Saturday April 12th 2025">
|
" aria-label="Join the Home Assistant community">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- OHF notice -->
|
<!-- OHF notice -->
|
||||||
|
|||||||
@ -23,11 +23,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="hero-socialproof">
|
<div class="hero-socialproof">
|
||||||
<a href="https://github.blog/news-insights/octoverse/octoverse-2024/#the-state-of-open-source" target="_blank" class="">
|
<a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/#the-top-open-source-projects-by-contributors" target="_blank" class="">
|
||||||
<div class="hero-github-top-project">
|
<div class="hero-github-top-project">
|
||||||
<img src="/images/frontpage/hero-github-logo.svg" alt="GitHub logo"/>
|
<img src="/images/frontpage/hero-github-logo.svg" alt="GitHub logo"/>
|
||||||
<img src="/images/frontpage/hero-trophy.svg" alt="Top open source project trophy"/>
|
<img src="/images/frontpage/hero-trophy.svg" alt="Top open source project trophy"/>
|
||||||
<p><strong>Top open source project</strong> by contributors in 2024</p>
|
<p><strong>Top open source project</strong> by contributors in 2025</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
These below instructions are for an installation of {% term "Home Assistant Container" %} running in your own container environment, which you manage yourself. Any [OCI](https://opencontainers.org/) compatible runtime can be used, however this guide will focus on installing it with Docker.
|
These below instructions are for an installation of {% term "Home Assistant Container" %} running in your own container environment, which you manage yourself. Any [OCI](https://opencontainers.org/) compatible runtime can be used, however this guide will focus on installing it with Docker.
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
This installation method **does not have access to add-ons**. If you want to use add-ons, you need to use another installation method. The recommended method is {% term "Home Assistant Operating System" %}. Checkout the [overview table of installation types](https://www.home-assistant.io/installation/#about-installation-methods) to see the differences.
|
This installation type **does not have access to add-ons**. If you want to use add-ons, you need to use another installation type. The recommended type is {% term "Home Assistant Operating System" %}. Checkout the [overview table of installation types](https://www.home-assistant.io/installation/#about-installation-types) to see the differences.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
{% important %}
|
{% important %}
|
||||||
|
|||||||
@ -180,53 +180,51 @@ Use this method only if Method 1 does not work for you.
|
|||||||
4. Download the image to your computer.
|
4. Download the image to your computer.
|
||||||
- Copy the URL for the image.
|
- Copy the URL for the image.
|
||||||
- If there are multiple links below, make sure to select the correct link for your version of {{site.installation.types[page.installation_type].board}}.
|
- If there are multiple links below, make sure to select the correct link for your version of {{site.installation.types[page.installation_type].board}}.
|
||||||
{% if site.installation.types[page.installation_type].variants.size > 1 %}
|
{% if site.installation.types[page.installation_type].variants.size > 1 %}
|
||||||
{% tabbed_block %}
|
{% tabbed_block %}
|
||||||
{% for variant in site.installation.types[page.installation_type].variants %}
|
{% for variant in site.installation.types[page.installation_type].variants %}
|
||||||
|
|
||||||
- title: {{ variant.name }}
|
- title: {{ variant.name }}
|
||||||
content: |
|
content: |
|
||||||
|
|
||||||
|
```text
|
||||||
|
{{release_url}}/{{site.data.version_data.hassos[variant.key]}}/haos_{{ variant.key }}-{{site.data.version_data.hassos[variant.key]}}.img.xz
|
||||||
|
```
|
||||||
|
|
||||||
|
{% if variant.key == "odroid-n2" %}
|
||||||
|
[Guide: Flashing ODROID-N2 using OTG-USB](/installation/odroid#flashing-an-odroid-n2)
|
||||||
|
{% elsif variant.key == "odroid-m1s" %}
|
||||||
|
[Guide: Flashing ODROID-M1S using OTG-USB](/installation/odroid#flashing-an-odroid-m1s)
|
||||||
|
{% elsif variant.key == "rpi4" or variant.key == "rpi3" %}
|
||||||
|
*(64-bit is recommended)*
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endtabbed_block %}
|
||||||
|
{% else %}
|
||||||
|
|
||||||
```text
|
```text
|
||||||
{{release_url}}/{{site.data.version_data.hassos[variant.key]}}/haos_{{ variant.key }}-{{site.data.version_data.hassos[variant.key]}}.img.xz
|
{% assign board_key = site.installation.types[page.installation_type].variants[0].key %}
|
||||||
|
{{release_url}}/{{site.data.version_data.hassos[board_key]}}/haos_{{ board_key }}-{{site.data.version_data.hassos[board_key]}}.img.xz
|
||||||
```
|
```
|
||||||
|
|
||||||
{% if variant.key == "odroid-n2" %}
|
|
||||||
[Guide: Flashing ODROID-N2 using OTG-USB](/installation/odroid#flashing-an-odroid-n2)
|
|
||||||
{% elsif variant.key == "odroid-m1s" %}
|
|
||||||
[Guide: Flashing ODROID-M1S using OTG-USB](/installation/odroid#flashing-an-odroid-m1s)
|
|
||||||
{% elsif variant.key == "rpi4" or variant.key == "rpi3" %}
|
|
||||||
*(64-bit is recommended)*
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endfor %}
|
*Select and copy the URL or use the "copy" button that appears when you hover it.*
|
||||||
{% endtabbed_block %}
|
|
||||||
{% else %}
|
|
||||||
|
|
||||||
```text
|
|
||||||
{% assign board_key = site.installation.types[page.installation_type].variants[0].key %}
|
|
||||||
{{release_url}}/{{site.data.version_data.hassos[board_key]}}/haos_{{ board_key }}-{{site.data.version_data.hassos[board_key]}}.img.xz
|
|
||||||
```
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
*Select and copy the URL or use the "copy" button that appear when you hover it.*
|
|
||||||
|
|
||||||
5. Paste the URL into your browser to start the download.
|
5. Paste the URL into your browser to start the download.
|
||||||
6. Extract the file you just downloaded.
|
6. Extract the file you just downloaded.
|
||||||
7. Select **Flash from file** and select the image you just extracted.
|
7. Select **Flash from file** and select the image you just extracted.
|
||||||
- Do not use **Flash from URL**. It does not work on some systems.
|
- Do not use **Flash from URL**. It does not work on some systems.
|
||||||
|

|
||||||

|
|
||||||
8. **Select target**.
|
8. **Select target**.
|
||||||

|

|
||||||
9. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.
|
9. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.
|
||||||

|

|
||||||
10. Select **Flash!** to start writing the image.
|
10. Select **Flash!** to start writing the image.
|
||||||
- If the operation fails, decompress the .xz file and try again.
|
- If the operation fails, decompress the .xz file and try again.
|
||||||

|

|
||||||
- When Balena Etcher has finished writing the image, you will see a confirmation.
|
- When Balena Etcher has finished writing the image, you will see a confirmation.
|
||||||

|

|
||||||
|
|
||||||
### Start up your {{site.installation.types[page.installation_type].board}}
|
### Start up your {{site.installation.types[page.installation_type].board}}
|
||||||
|
|
||||||
@ -321,7 +319,7 @@ Minimum recommended assignments:
|
|||||||
- title: VirtualBox
|
- title: VirtualBox
|
||||||
content: |
|
content: |
|
||||||
1. Create a new virtual machine.
|
1. Create a new virtual machine.
|
||||||
2. Select type **Linux**, subtype **Oracle Linux** and version **Oracle Linux (ARM 64-bit)**.
|
2. Select type **Linux**, subtype **Oracle Linux** and version **Oracle Linux (64-bit)** or **Oracle Linux (ARM 64-bit)** depending on your hardware.
|
||||||
3. Under **Hardware**, select the amount of memory and number of CPUs. Then, select **Enable EFI**.
|
3. Under **Hardware**, select the amount of memory and number of CPUs. Then, select **Enable EFI**.
|
||||||
- Make sure **EFI** is enabled. If EFI is not enabled, HAOS won't boot.
|
- Make sure **EFI** is enabled. If EFI is not enabled, HAOS won't boot.
|
||||||
4. Under **Hard Disk**, select **Use an existing virtual hard disk file**, select the unzipped VDI file from above.
|
4. Under **Hard Disk**, select **Use an existing virtual hard disk file**, select the unzipped VDI file from above.
|
||||||
@ -470,8 +468,6 @@ Minimum recommended assignments:
|
|||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% include installation_survey.html %}
|
|
||||||
|
|
||||||
With the Home Assistant Operating System installed and accessible, you can continue with onboarding.
|
With the Home Assistant Operating System installed and accessible, you can continue with onboarding.
|
||||||
|
|
||||||
{% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %}
|
{% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %}
|
||||||
|
|||||||
@ -1,15 +0,0 @@
|
|||||||
<div class="material-card text installation-survey" id="survey_section">
|
|
||||||
<h4>
|
|
||||||
<a href="#installation-survey_section" class="title-link"
|
|
||||||
><b>Help us improve Home Assistant</b></a
|
|
||||||
>
|
|
||||||
</h4>
|
|
||||||
<p>
|
|
||||||
Have you just installed Home Assistant? The Home Assistant team is looking
|
|
||||||
to talk to you to understand how the installation went.
|
|
||||||
</p>
|
|
||||||
<a href="https://forms.gle/BBQN5yiu6f1qfq6g9" target="_blank" class="button"
|
|
||||||
>Help now</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div><p></p></div>
|
|
||||||
@ -43,12 +43,7 @@ This section explains how to generate a client ID and client secret on
|
|||||||
- For Application type, choose **Web Application** and give this client ID a name (like "Home Assistant Client").
|
- For Application type, choose **Web Application** and give this client ID a name (like "Home Assistant Client").
|
||||||
- Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**.
|
- Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**.
|
||||||
> **Note**: This is not a placeholder. It is the URI that must be used.
|
> **Note**: This is not a placeholder. It is the URI that must be used.
|
||||||
- Click **Create**.
|
9. From the resulting dialog take a note of **Client ID** and **Client Secret** you **can not retrieve it again** after closing the dialog.
|
||||||
9. Find the client you just created. Under the Actions column, choose **Download OAuth client** (download icon), which will show you the **Client ID** and **Client Secret**.
|
|
||||||
- Make a note of these (for example, copy and paste them into a text editor), as you will need them shortly.
|
|
||||||
- Once you have noted these strings, select **Close**.
|
- Once you have noted these strings, select **Close**.
|
||||||
- Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases, your new credentials will be active within a few minutes. However, Google states that activation may take up to five hours in some circumstances.
|
- Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases, your new credentials will be active within a few minutes. However, Google states that activation may take up to five hours in some circumstances.
|
||||||
> If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**.
|
|
||||||
>
|
|
||||||
> To view the **Client ID** and **Client Secret**, click the **Download OAuth client** (download icon) under the Actions column.
|
|
||||||
{% enddetails %}
|
{% enddetails %}
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/lite-youtube@1.3.1/lite-youtube.js"></script>
|
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/lite-youtube@1.3.1/lite-youtube.js" integrity="sha384-7o3d1sg8jSS1LMKzzIEucWtWFI1X4lFCC5gu2ylAgH3KmHcJgjTqp6LWfIvbbmf9" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
<script src="{{ '/javascripts/terminology_tooltip.js' | cache_buster }}" type="text/javascript" defer></script>
|
<script src="{{ '/javascripts/terminology_tooltip.js' | cache_buster }}" type="text/javascript" defer></script>
|
||||||
|
|
||||||
<script src="{{ '/javascripts/prism.js' | cache_buster }}" type="text/javascript" defer></script>
|
<script src="{{ '/javascripts/prism.js' | cache_buster }}" type="text/javascript" defer></script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@docsearch/js@3/dist/umd/index.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3/dist/umd/index.min.js" integrity="sha384-f/IEhh8fvOc2ALU79emLlUqAYXyqlA/zYhM+g5GlWMk15QBjTXy05TtmfT1TbtV6" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
docsearch({
|
docsearch({
|
||||||
container: '#docsearch',
|
container: '#docsearch',
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user