Merge branch 'current' into automation-editor-update-procedure

This commit is contained in:
c0ffeeca7 2024-06-08 10:15:57 +02:00 committed by GitHub
commit 1955cc48ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1379 changed files with 46989 additions and 10598 deletions

View File

@ -32,7 +32,8 @@
"gitlens.showWelcomeOnInstall": false, "gitlens.showWelcomeOnInstall": false,
"gitlens.showWhatsNewAfterUpgrades": false, "gitlens.showWhatsNewAfterUpgrades": false,
"terminal.integrated.shell.linux": "/usr/bin/zsh", "terminal.integrated.shell.linux": "/usr/bin/zsh",
"workbench.startupEditor": "none" "workbench.startupEditor": "none",
"rubyLsp.rubyVersionManager": "none"
} }
} }
} }

View File

@ -1,24 +0,0 @@
name: Add new PRs to project
on:
pull_request_target:
types:
- opened
jobs:
add-to-project:
name: Add new PR to project
runs-on: ubuntu-latest
steps:
- name: Generate app token
id: token
# Pinned to a specific version of the action for security reasons
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0
with:
app_id: ${{ secrets.PROJECTS_APP_ID }}
private_key: ${{ secrets.PROJECTS_APP_PEM }}
- name: Add to Project
uses: actions/add-to-project@v0.5.0
with:
project-url: https://github.com/orgs/home-assistant/projects/10
github-token: ${{ steps.token.outputs.token }}

View File

@ -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@v4.1.1 uses: actions/checkout@v4.1.6
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v4.0.1 uses: actions/setup-node@v4.0.2
with: with:
node-version: 20 node-version: 20
cache: "npm" cache: "npm"
@ -25,9 +25,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@v4.1.1 uses: actions/checkout@v4.1.6
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v4.0.1 uses: actions/setup-node@v4.0.2
with: with:
node-version: 20 node-version: 20
cache: "npm" cache: "npm"

1
.vscode/cSpell.json vendored
View File

@ -34,6 +34,7 @@
"Fitbit", "Fitbit",
"Flexit", "Flexit",
"Frenck", "Frenck",
"geofence",
"geolocation", "geolocation",
"GPSLogger", "GPSLogger",
"Harman", "Harman",

View File

@ -12,6 +12,7 @@ source/_integrations/3_day_blinds.markdown @starkillerOG
source/_integrations/abode.markdown @shred86 source/_integrations/abode.markdown @shred86
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/adax.markdown @danielhiversen source/_integrations/adax.markdown @danielhiversen
source/_integrations/adguard.markdown @frenck source/_integrations/adguard.markdown @frenck
source/_integrations/advantage_air.markdown @Bre77 source/_integrations/advantage_air.markdown @Bre77
@ -20,12 +21,14 @@ source/_integrations/aep_ohio.markdown @tronikos
source/_integrations/aep_texas.markdown @tronikos source/_integrations/aep_texas.markdown @tronikos
source/_integrations/agent_dvr.markdown @ispysoftware source/_integrations/agent_dvr.markdown @ispysoftware
source/_integrations/air_quality.markdown @home-assistant/core source/_integrations/air_quality.markdown @home-assistant/core
source/_integrations/airgradient.markdown @airgradienthq @joostlek
source/_integrations/airly.markdown @bieniu source/_integrations/airly.markdown @bieniu
source/_integrations/airnow.markdown @asymworks source/_integrations/airnow.markdown @asymworks
source/_integrations/airq.markdown @Sibgatulin @dl2080 source/_integrations/airq.markdown @Sibgatulin @dl2080
source/_integrations/airthings.markdown @danielhiversen source/_integrations/airthings.markdown @danielhiversen @LaStrada
source/_integrations/airthings_ble.markdown @vincegio @LaStrada source/_integrations/airthings_ble.markdown @vincegio @LaStrada
source/_integrations/airtouch4.markdown @samsinnamon source/_integrations/airtouch4.markdown @samsinnamon
source/_integrations/airtouch5.markdown @danzel
source/_integrations/airvisual.markdown @bachya 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
@ -36,11 +39,12 @@ 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
source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh
source/_integrations/amberelectric.markdown @madpilot source/_integrations/amberelectric.markdown @madpilot
source/_integrations/ambiclimate.markdown @danielhiversen 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 @ludeeus
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
source/_integrations/androidtv_remote.markdown @tronikos @Drafteed source/_integrations/androidtv_remote.markdown @tronikos @Drafteed
@ -55,10 +59,13 @@ source/_integrations/appalachianpower.markdown @tronikos
source/_integrations/apple_tv.markdown @postlund source/_integrations/apple_tv.markdown @postlund
source/_integrations/application_credentials.markdown @home-assistant/core source/_integrations/application_credentials.markdown @home-assistant/core
source/_integrations/apprise.markdown @caronc source/_integrations/apprise.markdown @caronc
source/_integrations/aprilaire.markdown @chamberlain2007
source/_integrations/aprs.markdown @PhilRW source/_integrations/aprs.markdown @PhilRW
source/_integrations/aranet.markdown @aschmitz @thecode source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH
source/_integrations/aranet.markdown @aschmitz @thecode @anrijs
source/_integrations/arcam_fmj.markdown @elupus 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/aseko_pool_live.markdown @milanmeu source/_integrations/aseko_pool_live.markdown @milanmeu
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
source/_integrations/asuswrt.markdown @kennedyshead @ollo69 source/_integrations/asuswrt.markdown @kennedyshead @ollo69
@ -82,12 +89,13 @@ source/_integrations/azure_service_bus.markdown @hfurubotten
source/_integrations/backup.markdown @home-assistant/core source/_integrations/backup.markdown @home-assistant/core
source/_integrations/baf.markdown @bdraco @jfroy source/_integrations/baf.markdown @bdraco @jfroy
source/_integrations/balboa.markdown @garbled1 @natekspencer source/_integrations/balboa.markdown @garbled1 @natekspencer
source/_integrations/bang_olufsen.markdown @mj23000
source/_integrations/bayesian.markdown @HarvsG source/_integrations/bayesian.markdown @HarvsG
source/_integrations/beewi_smartclim.markdown @alemuro source/_integrations/beewi_smartclim.markdown @alemuro
source/_integrations/bge.markdown @tronikos source/_integrations/bge.markdown @tronikos
source/_integrations/binary_sensor.markdown @home-assistant/core source/_integrations/binary_sensor.markdown @home-assistant/core
source/_integrations/bizkaibus.markdown @UgaitzEtxebarria source/_integrations/bizkaibus.markdown @UgaitzEtxebarria
source/_integrations/blebox.markdown @bbx-a @riokuu source/_integrations/blebox.markdown @bbx-a @riokuu @swistakm
source/_integrations/blink.markdown @fronzbot @mkmer source/_integrations/blink.markdown @fronzbot @mkmer
source/_integrations/bliss_automation.markdown @starkillerOG source/_integrations/bliss_automation.markdown @starkillerOG
source/_integrations/bloc_blinds.markdown @starkillerOG source/_integrations/bloc_blinds.markdown @starkillerOG
@ -100,9 +108,10 @@ source/_integrations/bluetooth_adapters.markdown @bdraco
source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe
source/_integrations/bond.markdown @bdraco @prystupa @joshs85 @marciogranzotto source/_integrations/bond.markdown @bdraco @prystupa @joshs85 @marciogranzotto
source/_integrations/bosch_shc.markdown @tschamm source/_integrations/bosch_shc.markdown @tschamm
source/_integrations/brandt.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/brandt.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/braviatv.markdown @bieniu @Drafteed source/_integrations/braviatv.markdown @bieniu @Drafteed
source/_integrations/brel_home.markdown @starkillerOG source/_integrations/brel_home.markdown @starkillerOG
source/_integrations/bring.markdown @miaucl @tr4nt0r
source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am @eifinger source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am @eifinger
source/_integrations/brother.markdown @bieniu source/_integrations/brother.markdown @bieniu
source/_integrations/brottsplatskartan.markdown @gjohansson-ST source/_integrations/brottsplatskartan.markdown @gjohansson-ST
@ -120,7 +129,6 @@ source/_integrations/camera.markdown @home-assistant/core
source/_integrations/cast.markdown @emontnemery source/_integrations/cast.markdown @emontnemery
source/_integrations/ccm15.markdown @ocalvo source/_integrations/ccm15.markdown @ocalvo
source/_integrations/cert_expiry.markdown @jjlawren source/_integrations/cert_expiry.markdown @jjlawren
source/_integrations/circuit.markdown @braam
source/_integrations/cisco_ios.markdown @fbradyirl source/_integrations/cisco_ios.markdown @fbradyirl
source/_integrations/cisco_mobility_express.markdown @fbradyirl source/_integrations/cisco_mobility_express.markdown @fbradyirl
source/_integrations/cisco_webex_teams.markdown @fbradyirl source/_integrations/cisco_webex_teams.markdown @fbradyirl
@ -128,6 +136,7 @@ source/_integrations/climate.markdown @home-assistant/core
source/_integrations/cloud.markdown @home-assistant/cloud source/_integrations/cloud.markdown @home-assistant/cloud
source/_integrations/cloudflare.markdown @ludeeus @ctalkington source/_integrations/cloudflare.markdown @ludeeus @ctalkington
source/_integrations/co2signal.markdown @jpbede @VIKTORVAV99 source/_integrations/co2signal.markdown @jpbede @VIKTORVAV99
source/_integrations/coautilities.markdown @tronikos
source/_integrations/coinbase.markdown @tombrien source/_integrations/coinbase.markdown @tombrien
source/_integrations/color_extractor.markdown @GenericStudent source/_integrations/color_extractor.markdown @GenericStudent
source/_integrations/comed.markdown @tronikos source/_integrations/comed.markdown @tronikos
@ -143,7 +152,7 @@ source/_integrations/conversation.markdown @home-assistant/core @synesthesiam
source/_integrations/coolmaster.markdown @OnFreund source/_integrations/coolmaster.markdown @OnFreund
source/_integrations/counter.markdown @fabaff source/_integrations/counter.markdown @fabaff
source/_integrations/cover.markdown @home-assistant/core source/_integrations/cover.markdown @home-assistant/core
source/_integrations/cozytouch.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/cozytouch.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
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
@ -176,25 +185,26 @@ source/_integrations/discogs.markdown @thibmaek
source/_integrations/discord.markdown @tkdrob source/_integrations/discord.markdown @tkdrob
source/_integrations/discovergy.markdown @jpbede source/_integrations/discovergy.markdown @jpbede
source/_integrations/dlink.markdown @tkdrob source/_integrations/dlink.markdown @tkdrob
source/_integrations/dlna_dmr.markdown @StevenLooman @chishm source/_integrations/dlna_dmr.markdown @chishm
source/_integrations/dlna_dms.markdown @chishm source/_integrations/dlna_dms.markdown @chishm
source/_integrations/dnsip.markdown @gjohansson-ST source/_integrations/dnsip.markdown @gjohansson-ST
source/_integrations/doorbird.markdown @oblogic7 @bdraco @flacjacket source/_integrations/doorbird.markdown @oblogic7 @bdraco @flacjacket
source/_integrations/dooya.markdown @starkillerOG source/_integrations/dooya.markdown @starkillerOG
source/_integrations/dormakaba_dkey.markdown @emontnemery source/_integrations/dormakaba_dkey.markdown @emontnemery
source/_integrations/downloader.markdown @erwindouna
source/_integrations/dremel_3d_printer.markdown @tkdrob source/_integrations/dremel_3d_printer.markdown @tkdrob
source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer
source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr.markdown @Robbie1221 @frenck
source/_integrations/dsmr_reader.markdown @depl0y @glodenox source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox @erwindouna
source/_integrations/duotecno.markdown @cereal2nd source/_integrations/duotecno.markdown @cereal2nd
source/_integrations/duquesne_light.markdown @tronikos
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo
source/_integrations/dynalite.markdown @ziv1234 source/_integrations/dynalite.markdown @ziv1234
source/_integrations/eastron.markdown @DCSBL source/_integrations/eastron.markdown @DCSBL
source/_integrations/easyenergy.markdown @klaasnicolaas source/_integrations/easyenergy.markdown @klaasnicolaas
source/_integrations/ecobee.markdown @marcolivierarsenault
source/_integrations/ecoforest.markdown @pjanuario source/_integrations/ecoforest.markdown @pjanuario
source/_integrations/econet.markdown @w1ll1am23 source/_integrations/econet.markdown @w1ll1am23
source/_integrations/ecovacs.markdown @OverloadUT @mib1185 source/_integrations/ecovacs.markdown @OverloadUT @mib1185 @edenhaus @Augar
source/_integrations/ecowitt.markdown @pvizeli 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
@ -204,11 +214,13 @@ source/_integrations/elgato.markdown @frenck
source/_integrations/elkm1.markdown @gwww @bdraco source/_integrations/elkm1.markdown @gwww @bdraco
source/_integrations/elmax.markdown @albertogeniola source/_integrations/elmax.markdown @albertogeniola
source/_integrations/elv.markdown @majuss source/_integrations/elv.markdown @majuss
source/_integrations/elvia.markdown @ludeeus
source/_integrations/emby.markdown @mezz64 source/_integrations/emby.markdown @mezz64
source/_integrations/emoncms.markdown @borpin source/_integrations/emoncms.markdown @borpin
source/_integrations/emonitor.markdown @bdraco source/_integrations/emonitor.markdown @bdraco
source/_integrations/emulated_hue.markdown @bdraco @Tho85 source/_integrations/emulated_hue.markdown @bdraco @Tho85
source/_integrations/emulated_kasa.markdown @kbickar source/_integrations/emulated_kasa.markdown @kbickar
source/_integrations/energenie_power_sockets.markdown @gnumpi
source/_integrations/energie_vanons.markdown @klaasnicolaas 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
@ -219,8 +231,10 @@ source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @dgomes @joostlek
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
source/_integrations/ephember.markdown @ttroy50 source/_integrations/ephember.markdown @ttroy50
source/_integrations/epic_games_store.markdown @hacf-fr @Quentame
source/_integrations/epion.markdown @lhgravendeel
source/_integrations/epson.markdown @pszafer source/_integrations/epson.markdown @pszafer
source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/eq3btsmart.markdown @eulemitkeule @dbuezas
source/_integrations/escea.markdown @lazdavila source/_integrations/escea.markdown @lazdavila
source/_integrations/esera_onewire.markdown @garbled1 @epenet source/_integrations/esera_onewire.markdown @garbled1 @epenet
source/_integrations/esphome.markdown @OttoWinter @jesserockz @kbx81 @bdraco source/_integrations/esphome.markdown @OttoWinter @jesserockz @kbx81 @bdraco
@ -245,7 +259,7 @@ source/_integrations/fitbit.markdown @allenporter
source/_integrations/fivem.markdown @Sander0542 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 @vlebourl @tetienne @nyroDev source/_integrations/flexom.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/flick_electric.markdown @ZephireNZ 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
@ -254,7 +268,7 @@ 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 @skgsergio @krmarien source/_integrations/foscam.markdown @krmarien
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 @mammuth @AaronDavidSchneider @chemelli74 @mib1185 source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 @mib1185
@ -265,6 +279,7 @@ source/_integrations/frontend.markdown @home-assistant/frontend
source/_integrations/frontier_silicon.markdown @wlcrs source/_integrations/frontier_silicon.markdown @wlcrs
source/_integrations/fujitsu_anywair.markdown @Bre77 source/_integrations/fujitsu_anywair.markdown @Bre77
source/_integrations/fully_kiosk.markdown @cgarwood source/_integrations/fully_kiosk.markdown @cgarwood
source/_integrations/fyta.markdown @dontinelli
source/_integrations/garages_amsterdam.markdown @klaasnicolaas source/_integrations/garages_amsterdam.markdown @klaasnicolaas
source/_integrations/gardena_bluetooth.markdown @elupus source/_integrations/gardena_bluetooth.markdown @elupus
source/_integrations/gaviota.markdown @starkillerOG source/_integrations/gaviota.markdown @starkillerOG
@ -294,14 +309,15 @@ source/_integrations/google_sheets.markdown @tkdrob
source/_integrations/google_tasks.markdown @allenporter source/_integrations/google_tasks.markdown @allenporter
source/_integrations/google_travel_time.markdown @eifinger source/_integrations/google_travel_time.markdown @eifinger
source/_integrations/govee_ble.markdown @bdraco @PierreAronnax source/_integrations/govee_ble.markdown @bdraco @PierreAronnax
source/_integrations/gpsd.markdown @fabaff source/_integrations/govee_light_local.markdown @Galorhallen
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/guardian.markdown @bachya source/_integrations/guardian.markdown @bachya
source/_integrations/habitica.markdown @ASMfreaK @leikoilja source/_integrations/habitica.markdown @ASMfreaK @leikoilja @tr4nt0r
source/_integrations/hardware.markdown @home-assistant/core source/_integrations/hardware.markdown @home-assistant/core
source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan source/_integrations/harmony.markdown @ehendrix23 @bdraco @mkeesey @Aohzan
source/_integrations/hassio.markdown @home-assistant/supervisor source/_integrations/hassio.markdown @home-assistant/supervisor
source/_integrations/havana_shade.markdown @starkillerOG source/_integrations/havana_shade.markdown @starkillerOG
source/_integrations/hdmi_cec.markdown @inytar source/_integrations/hdmi_cec.markdown @inytar
@ -309,17 +325,18 @@ source/_integrations/heatmiser.markdown @andylockran
source/_integrations/heiwa.markdown @cmroche source/_integrations/heiwa.markdown @cmroche
source/_integrations/heos.markdown @andrewsayre source/_integrations/heos.markdown @andrewsayre
source/_integrations/here_travel_time.markdown @eifinger source/_integrations/here_travel_time.markdown @eifinger
source/_integrations/hexaom.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/hexaom.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/hi_kumo.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/hi_kumo.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/hikvision.markdown @mezz64 source/_integrations/hikvision.markdown @mezz64
source/_integrations/hikvisioncam.markdown @fbradyirl source/_integrations/hikvisioncam.markdown @fbradyirl
source/_integrations/hisense_aehw4a1.markdown @bannhead source/_integrations/hisense_aehw4a1.markdown @bannhead
source/_integrations/history.markdown @home-assistant/core source/_integrations/history.markdown @home-assistant/core
source/_integrations/hive.markdown @Rendili @KJonline source/_integrations/hive.markdown @Rendili @KJonline
source/_integrations/hko.markdown @MisterCommand
source/_integrations/hlk_sw16.markdown @jameshilliard source/_integrations/hlk_sw16.markdown @jameshilliard
source/_integrations/holiday.markdown @jrieger source/_integrations/holiday.markdown @jrieger @gjohansson-ST
source/_integrations/home_connect.markdown @DavidMStraub source/_integrations/home_connect.markdown @DavidMStraub
source/_integrations/home_plus_control.markdown @chemaaa source/_integrations/home_plus_control.markdown @cgtobi
source/_integrations/homeassistant.markdown @home-assistant/core source/_integrations/homeassistant.markdown @home-assistant/core
source/_integrations/homeassistant_alerts.markdown @home-assistant/core source/_integrations/homeassistant_alerts.markdown @home-assistant/core
source/_integrations/homeassistant_green.markdown @home-assistant/core source/_integrations/homeassistant_green.markdown @home-assistant/core
@ -328,7 +345,8 @@ source/_integrations/homeassistant_sky_connect.markdown @home-assistant/core
source/_integrations/homeassistant_yellow.markdown @home-assistant/core source/_integrations/homeassistant_yellow.markdown @home-assistant/core
source/_integrations/homekit.markdown @bdraco source/_integrations/homekit.markdown @bdraco
source/_integrations/homekit_controller.markdown @Jc2k @bdraco source/_integrations/homekit_controller.markdown @Jc2k @bdraco
source/_integrations/homematic.markdown @pvizeli @danielperna84 source/_integrations/homematic.markdown @pvizeli
source/_integrations/homematicip_cloud.markdown @hahn-th
source/_integrations/homewizard.markdown @DCSBL source/_integrations/homewizard.markdown @DCSBL
source/_integrations/honeywell.markdown @rdfurman @mkmer source/_integrations/honeywell.markdown @rdfurman @mkmer
source/_integrations/http.markdown @home-assistant/core source/_integrations/http.markdown @home-assistant/core
@ -338,6 +356,8 @@ 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
source/_integrations/hurrican_shutters_wholesale.markdown @starkillerOG source/_integrations/hurrican_shutters_wholesale.markdown @starkillerOG
source/_integrations/husqvarna_automower.markdown @Thomas55555
source/_integrations/huum.markdown @frwickst
source/_integrations/hvv_departures.markdown @vigonotion source/_integrations/hvv_departures.markdown @vigonotion
source/_integrations/hydrawise.markdown @dknowles2 @ptcryan source/_integrations/hydrawise.markdown @dknowles2 @ptcryan
source/_integrations/hyperion.markdown @dermotduffy source/_integrations/hyperion.markdown @dermotduffy
@ -352,6 +372,7 @@ source/_integrations/image.markdown @home-assistant/core
source/_integrations/image_processing.markdown @home-assistant/core source/_integrations/image_processing.markdown @home-assistant/core
source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/image_upload.markdown @home-assistant/core
source/_integrations/imap.markdown @jbouwh source/_integrations/imap.markdown @jbouwh
source/_integrations/imgw_pib.markdown @bieniu
source/_integrations/improv_ble.markdown @emontnemery source/_integrations/improv_ble.markdown @emontnemery
source/_integrations/incomfort.markdown @zxdavb source/_integrations/incomfort.markdown @zxdavb
source/_integrations/indianamichiganpower.markdown @tronikos source/_integrations/indianamichiganpower.markdown @tronikos
@ -374,7 +395,8 @@ source/_integrations/iperf3.markdown @rohankapoorcom
source/_integrations/ipma.markdown @dgomes source/_integrations/ipma.markdown @dgomes
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/islamic_prayer_times.markdown @engrbm87 source/_integrations/isal.markdown @bdraco
source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair
source/_integrations/ismartwindow.markdown @starkillerOG source/_integrations/ismartwindow.markdown @starkillerOG
source/_integrations/iss.markdown @DurgNomis-drol source/_integrations/iss.markdown @DurgNomis-drol
source/_integrations/isy994.markdown @bdraco @shbatm source/_integrations/isy994.markdown @bdraco @shbatm
@ -383,7 +405,7 @@ source/_integrations/jellyfin.markdown @j-stienstra @ctalkington
source/_integrations/jewish_calendar.markdown @tsvi source/_integrations/jewish_calendar.markdown @tsvi
source/_integrations/juicenet.markdown @jesserockz source/_integrations/juicenet.markdown @jesserockz
source/_integrations/justnimbus.markdown @kvanzuijlen source/_integrations/justnimbus.markdown @kvanzuijlen
source/_integrations/jvc_projector.markdown @SteveEasley source/_integrations/jvc_projector.markdown @SteveEasley @msavazzi
source/_integrations/kaiterra.markdown @Michsior14 source/_integrations/kaiterra.markdown @Michsior14
source/_integrations/kaleidescape.markdown @SteveEasley source/_integrations/kaleidescape.markdown @SteveEasley
source/_integrations/keba.markdown @dannerph source/_integrations/keba.markdown @dannerph
@ -400,8 +422,10 @@ source/_integrations/kodi.markdown @OnFreund
source/_integrations/konnected.markdown @heythisisnate source/_integrations/konnected.markdown @heythisisnate
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/kulersky.markdown @emlove source/_integrations/kulersky.markdown @emlove
source/_integrations/lacrosse_view.markdown @IceBotYT source/_integrations/lacrosse_view.markdown @IceBotYT
source/_integrations/lamarzocco.markdown @zweckj
source/_integrations/lametric.markdown @robbiet480 @frenck @bachya source/_integrations/lametric.markdown @robbiet480 @frenck @bachya
source/_integrations/landisgyr_heat_meter.markdown @vpathuis source/_integrations/landisgyr_heat_meter.markdown @vpathuis
source/_integrations/lastfm.markdown @joostlek source/_integrations/lastfm.markdown @joostlek
@ -410,12 +434,12 @@ source/_integrations/laundrify.markdown @xLarry
source/_integrations/lawn_mower.markdown @home-assistant/core source/_integrations/lawn_mower.markdown @home-assistant/core
source/_integrations/lcn.markdown @alengwenus source/_integrations/lcn.markdown @alengwenus
source/_integrations/ld2410_ble.markdown @930913 source/_integrations/ld2410_ble.markdown @930913
source/_integrations/leaone.markdown @bdraco
source/_integrations/led_ble.markdown @bdraco source/_integrations/led_ble.markdown @bdraco
source/_integrations/legrand.markdown @cgtobi source/_integrations/legrand.markdown @cgtobi
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 source/_integrations/lg_netcast.markdown @Drafteed @splinter98
source/_integrations/lidarr.markdown @tkdrob source/_integrations/lidarr.markdown @tkdrob
source/_integrations/life360.markdown @pnbruckner
source/_integrations/light.markdown @home-assistant/core source/_integrations/light.markdown @home-assistant/core
source/_integrations/linear_garage_door.markdown @IceBotYT source/_integrations/linear_garage_door.markdown @IceBotYT
source/_integrations/linux_battery.markdown @fabaff source/_integrations/linux_battery.markdown @fabaff
@ -428,17 +452,17 @@ source/_integrations/local_todo.markdown @allenporter
source/_integrations/lock.markdown @home-assistant/core source/_integrations/lock.markdown @home-assistant/core
source/_integrations/logbook.markdown @home-assistant/core source/_integrations/logbook.markdown @home-assistant/core
source/_integrations/logger.markdown @home-assistant/core source/_integrations/logger.markdown @home-assistant/core
source/_integrations/logi_circle.markdown @evanjd
source/_integrations/london_underground.markdown @jpbede source/_integrations/london_underground.markdown @jpbede
source/_integrations/lookin.markdown @ANMalko @bdraco 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/lupusec.markdown @majuss source/_integrations/lupusec.markdown @majuss @suaveolent
source/_integrations/lutron.markdown @cdheiser source/_integrations/lutron.markdown @cdheiser @wilburCForce
source/_integrations/lutron_caseta.markdown @swails @bdraco @danaues source/_integrations/lutron_caseta.markdown @swails @bdraco @danaues @eclair4151
source/_integrations/luxaflex.markdown @bdraco @kingy444 @trullock source/_integrations/luxaflex.markdown @bdraco @kingy444 @trullock
source/_integrations/lyric.markdown @timmo001 source/_integrations/lyric.markdown @timmo001
source/_integrations/madeco.markdown @starkillerOG
source/_integrations/marantz.markdown @ol-iver @starkillerOG source/_integrations/marantz.markdown @ol-iver @starkillerOG
source/_integrations/martec.markdown @starkillerOG source/_integrations/martec.markdown @starkillerOG
source/_integrations/mastodon.markdown @fabaff source/_integrations/mastodon.markdown @fabaff
@ -450,7 +474,6 @@ source/_integrations/media_extractor.markdown @joostlek
source/_integrations/media_player.markdown @home-assistant/core source/_integrations/media_player.markdown @home-assistant/core
source/_integrations/media_source.markdown @hunterjm source/_integrations/media_source.markdown @hunterjm
source/_integrations/mediaroom.markdown @dgomes source/_integrations/mediaroom.markdown @dgomes
source/_integrations/melcloud.markdown @vilppuvuorinen
source/_integrations/melissa.markdown @kennedyshead source/_integrations/melissa.markdown @kennedyshead
source/_integrations/melnor.markdown @vanstinator source/_integrations/melnor.markdown @vanstinator
source/_integrations/met.markdown @danielhiversen source/_integrations/met.markdown @danielhiversen
@ -459,6 +482,7 @@ source/_integrations/meteo_france.markdown @hacf-fr @oncleben31 @Quentame
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
source/_integrations/microbees.markdown @microBeesTech
source/_integrations/mijndomein_energie.markdown @klaasnicolaas source/_integrations/mijndomein_energie.markdown @klaasnicolaas
source/_integrations/mikrotik.markdown @engrbm87 source/_integrations/mikrotik.markdown @engrbm87
source/_integrations/mill.markdown @danielhiversen source/_integrations/mill.markdown @danielhiversen
@ -473,21 +497,23 @@ source/_integrations/modern_forms.markdown @wonderslug
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
source/_integrations/monessen.markdown @jeeftor source/_integrations/monessen.markdown @jeeftor
source/_integrations/monoprice.markdown @etsinko @OnFreund source/_integrations/monoprice.markdown @etsinko @OnFreund
source/_integrations/monzo.markdown @jakemartin-icl
source/_integrations/moon.markdown @fabaff @frenck source/_integrations/moon.markdown @fabaff @frenck
source/_integrations/mopeka.markdown @bdraco source/_integrations/mopeka.markdown @bdraco
source/_integrations/motion_blinds.markdown @starkillerOG source/_integrations/motion_blinds.markdown @starkillerOG
source/_integrations/motionblinds_ble.markdown @LennP @jerrybboy
source/_integrations/motioneye.markdown @dermotduffy source/_integrations/motioneye.markdown @dermotduffy
source/_integrations/mqtt.markdown @emontnemery @jbouwh source/_integrations/mqtt.markdown @emontnemery @jbouwh @bdraco
source/_integrations/msteams.markdown @peroyvind source/_integrations/msteams.markdown @peroyvind
source/_integrations/mullvad.markdown @meichthys source/_integrations/mullvad.markdown @meichthys
source/_integrations/mutesync.markdown @currentoor source/_integrations/mutesync.markdown @currentoor
source/_integrations/my.markdown @home-assistant/core source/_integrations/my.markdown @home-assistant/core
source/_integrations/mypermobil.markdown @IsakNyberg
source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer
source/_integrations/mystrom.markdown @fabaff source/_integrations/mystrom.markdown @fabaff
source/_integrations/myuplink.markdown @pajzo @astrandb
source/_integrations/nam.markdown @bieniu source/_integrations/nam.markdown @bieniu
source/_integrations/nanoleaf.markdown @milanmeu source/_integrations/nanoleaf.markdown @milanmeu
source/_integrations/neato.markdown @dshokouhi @Santobert source/_integrations/neato.markdown @Santobert
source/_integrations/nederlandse_spoorwegen.markdown @YarmoM source/_integrations/nederlandse_spoorwegen.markdown @YarmoM
source/_integrations/ness_alarm.markdown @nickw444 source/_integrations/ness_alarm.markdown @nickw444
source/_integrations/nest.markdown @allenporter source/_integrations/nest.markdown @allenporter
@ -497,7 +523,7 @@ source/_integrations/netgear.markdown @hacf-fr @Quentame @starkillerOG
source/_integrations/netgear_lte.markdown @tkdrob source/_integrations/netgear_lte.markdown @tkdrob
source/_integrations/network.markdown @home-assistant/core source/_integrations/network.markdown @home-assistant/core
source/_integrations/nexia.markdown @bdraco source/_integrations/nexia.markdown @bdraco
source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/nextbus.markdown @vividboarder source/_integrations/nextbus.markdown @vividboarder
source/_integrations/nextcloud.markdown @mib1185 source/_integrations/nextcloud.markdown @mib1185
source/_integrations/nextdns.markdown @bieniu source/_integrations/nextdns.markdown @bieniu
@ -526,6 +552,7 @@ 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/ohmconnect.markdown @robbiet480 source/_integrations/ohmconnect.markdown @robbiet480
source/_integrations/ollama.markdown @synesthesiam
source/_integrations/ombi.markdown @larssont source/_integrations/ombi.markdown @larssont
source/_integrations/omnilogic.markdown @oliver84 @djtimca @gentoosu source/_integrations/omnilogic.markdown @oliver84 @djtimca @gentoosu
source/_integrations/onboarding.markdown @home-assistant/core source/_integrations/onboarding.markdown @home-assistant/core
@ -551,20 +578,20 @@ source/_integrations/oru_opower.markdown @tronikos
source/_integrations/osoenergy.markdown @osohotwateriot source/_integrations/osoenergy.markdown @osohotwateriot
source/_integrations/otbr.markdown @home-assistant/core source/_integrations/otbr.markdown @home-assistant/core
source/_integrations/ourgroceries.markdown @OnFreund source/_integrations/ourgroceries.markdown @OnFreund
source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/ovo_energy.markdown @timmo001 source/_integrations/ovo_energy.markdown @timmo001
source/_integrations/p1_monitor.markdown @klaasnicolaas source/_integrations/p1_monitor.markdown @klaasnicolaas
source/_integrations/panel_custom.markdown @home-assistant/frontend source/_integrations/panel_custom.markdown @home-assistant/frontend
source/_integrations/panel_iframe.markdown @home-assistant/frontend
source/_integrations/pcs_lighting.markdown @gwww source/_integrations/pcs_lighting.markdown @gwww
source/_integrations/peco.markdown @IceBotYT source/_integrations/peco.markdown @IceBotYT
source/_integrations/peco_opower.markdown @tronikos source/_integrations/peco_opower.markdown @tronikos
source/_integrations/pegel_online.markdown @mib1185 source/_integrations/pegel_online.markdown @mib1185
source/_integrations/pepco.markdown @tronikos source/_integrations/pepco.markdown @tronikos
source/_integrations/permobil.markdown @IsakNyberg
source/_integrations/persistent_notification.markdown @home-assistant/core source/_integrations/persistent_notification.markdown @home-assistant/core
source/_integrations/pge.markdown @tronikos source/_integrations/pge.markdown @tronikos
source/_integrations/philips_js.markdown @elupus source/_integrations/philips_js.markdown @elupus
source/_integrations/pi_hole.markdown @johnluetke @shenxn source/_integrations/pi_hole.markdown @shenxn
source/_integrations/picnic.markdown @corneyl source/_integrations/picnic.markdown @corneyl
source/_integrations/pilight.markdown @trekky12 source/_integrations/pilight.markdown @trekky12
source/_integrations/ping.markdown @jpbede source/_integrations/ping.markdown @jpbede
@ -596,7 +623,7 @@ source/_integrations/pushover.markdown @engrbm87
source/_integrations/pvoutput.markdown @frenck source/_integrations/pvoutput.markdown @frenck
source/_integrations/pvpc_hourly_pricing.markdown @azogue source/_integrations/pvpc_hourly_pricing.markdown @azogue
source/_integrations/qbittorrent.markdown @geoffreylagaisse @finder39 source/_integrations/qbittorrent.markdown @geoffreylagaisse @finder39
source/_integrations/qingping.markdown @bdraco @skgsergio source/_integrations/qingping.markdown @bdraco
source/_integrations/qld_bushfire.markdown @exxamalte source/_integrations/qld_bushfire.markdown @exxamalte
source/_integrations/qnap.markdown @disforw source/_integrations/qnap.markdown @disforw
source/_integrations/qnap_qsw.markdown @Noltari source/_integrations/qnap_qsw.markdown @Noltari
@ -604,13 +631,15 @@ source/_integrations/quadrafire.markdown @jeeftor
source/_integrations/quantum_gateway.markdown @cisasteelersfan source/_integrations/quantum_gateway.markdown @cisasteelersfan
source/_integrations/qvr_pro.markdown @oblogic7 source/_integrations/qvr_pro.markdown @oblogic7
source/_integrations/qwikswitch.markdown @kellerza source/_integrations/qwikswitch.markdown @kellerza
source/_integrations/rachio.markdown @bdraco source/_integrations/rabbitair.markdown @rabbit-air
source/_integrations/rachio.markdown @bdraco @rfverbruggen
source/_integrations/radarr.markdown @tkdrob source/_integrations/radarr.markdown @tkdrob
source/_integrations/radio_browser.markdown @frenck source/_integrations/radio_browser.markdown @frenck
source/_integrations/radiotherm.markdown @vinnyfuria source/_integrations/radiotherm.markdown @vinnyfuria
source/_integrations/rainbird.markdown @konikvranik @allenporter source/_integrations/rainbird.markdown @konikvranik @allenporter
source/_integrations/raincloud.markdown @vanstinator source/_integrations/raincloud.markdown @vanstinator
source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin
source/_integrations/rainforest_raven.markdown @cottsay
source/_integrations/rainmachine.markdown @bachya source/_integrations/rainmachine.markdown @bachya
source/_integrations/random.markdown @fabaff source/_integrations/random.markdown @fabaff
source/_integrations/rapt_ble.markdown @sairon source/_integrations/rapt_ble.markdown @sairon
@ -620,7 +649,6 @@ source/_integrations/recollect_waste.markdown @bachya
source/_integrations/recorder.markdown @home-assistant/core source/_integrations/recorder.markdown @home-assistant/core
source/_integrations/recovery_mode.markdown @home-assistant/core source/_integrations/recovery_mode.markdown @home-assistant/core
source/_integrations/refoss.markdown @ashionky source/_integrations/refoss.markdown @ashionky
source/_integrations/rejseplanen.markdown @DarkFox
source/_integrations/remote.markdown @home-assistant/core source/_integrations/remote.markdown @home-assistant/core
source/_integrations/renault.markdown @epenet source/_integrations/renault.markdown @epenet
source/_integrations/renson.markdown @jimmyd-be source/_integrations/renson.markdown @jimmyd-be
@ -628,7 +656,7 @@ source/_integrations/reolink.markdown @starkillerOG
source/_integrations/repairs.markdown @home-assistant/core source/_integrations/repairs.markdown @home-assistant/core
source/_integrations/repetier.markdown @ShadowBr0ther source/_integrations/repetier.markdown @ShadowBr0ther
source/_integrations/rest_command.markdown @jpbede source/_integrations/rest_command.markdown @jpbede
source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
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 @balloob @synesthesiam
@ -639,7 +667,8 @@ source/_integrations/rituals_perfume_genie.markdown @milanmeu @frenck
source/_integrations/rmvtransport.markdown @cgtobi source/_integrations/rmvtransport.markdown @cgtobi
source/_integrations/roborock.markdown @humbertogontijo @Lash-L source/_integrations/roborock.markdown @humbertogontijo @Lash-L
source/_integrations/roku.markdown @ctalkington source/_integrations/roku.markdown @ctalkington
source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Xitee1 source/_integrations/romy.markdown @xeniter
source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Xitee1 @Orhideous
source/_integrations/roon.markdown @pavoni source/_integrations/roon.markdown @pavoni
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
@ -648,9 +677,11 @@ source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565
source/_integrations/ruuvi_gateway.markdown @akx source/_integrations/ruuvi_gateway.markdown @akx
source/_integrations/ruuvitag_ble.markdown @akx source/_integrations/ruuvitag_ble.markdown @akx
source/_integrations/rympro.markdown @OnFreund @elad-bar @maorcc source/_integrations/rympro.markdown @OnFreund @elad-bar @maorcc
source/_integrations/sabnzbd.markdown @shaiu source/_integrations/sabnzbd.markdown @shaiu @jpbede
source/_integrations/saj.markdown @fredericvl source/_integrations/saj.markdown @fredericvl
source/_integrations/samsam.markdown @klaasnicolaas
source/_integrations/samsungtv.markdown @chemelli74 @epenet source/_integrations/samsungtv.markdown @chemelli74 @epenet
source/_integrations/sanix.markdown @tomaszsluszniak
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
@ -674,6 +705,7 @@ source/_integrations/sentry.markdown @dcramer @frenck
source/_integrations/senz.markdown @milanmeu source/_integrations/senz.markdown @milanmeu
source/_integrations/serial.markdown @fabaff source/_integrations/serial.markdown @fabaff
source/_integrations/seven_segments.markdown @fabaff source/_integrations/seven_segments.markdown @fabaff
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/sharkiq.markdown @JeffResc @funkybunch
source/_integrations/shell_command.markdown @home-assistant/core source/_integrations/shell_command.markdown @home-assistant/core
@ -685,7 +717,7 @@ source/_integrations/signal_messenger.markdown @bbernhard
source/_integrations/simplepush.markdown @engrbm87 source/_integrations/simplepush.markdown @engrbm87
source/_integrations/simplisafe.markdown @bachya source/_integrations/simplisafe.markdown @bachya
source/_integrations/simply_automated.markdown @gwww source/_integrations/simply_automated.markdown @gwww
source/_integrations/simu.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/simu.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/sinch.markdown @bendikrb source/_integrations/sinch.markdown @bendikrb
source/_integrations/siren.markdown @home-assistant/core @raman325 source/_integrations/siren.markdown @home-assistant/core @raman325
source/_integrations/sisyphus.markdown @jkeljo source/_integrations/sisyphus.markdown @jkeljo
@ -701,22 +733,23 @@ source/_integrations/smart_blinds.markdown @starkillerOG
source/_integrations/smart_home.markdown @starkillerOG source/_integrations/smart_home.markdown @starkillerOG
source/_integrations/smart_meter_texas.markdown @grahamwetzler source/_integrations/smart_meter_texas.markdown @grahamwetzler
source/_integrations/smarther.markdown @cgtobi source/_integrations/smarther.markdown @cgtobi
source/_integrations/smartthings.markdown @andrewsayre
source/_integrations/smarttub.markdown @mdz source/_integrations/smarttub.markdown @mdz
source/_integrations/smarty.markdown @z0mbieprocess source/_integrations/smarty.markdown @z0mbieprocess
source/_integrations/smhi.markdown @gjohansson-ST source/_integrations/smhi.markdown @gjohansson-ST
source/_integrations/sms.markdown @ocalvo source/_integrations/sms.markdown @ocalvo
source/_integrations/smud.markdown @tronikos
source/_integrations/snapcast.markdown @luar123 source/_integrations/snapcast.markdown @luar123
source/_integrations/snmp.markdown @nmaggioni
source/_integrations/snooz.markdown @AustinBrunkhorst source/_integrations/snooz.markdown @AustinBrunkhorst
source/_integrations/solaredge.markdown @frenck source/_integrations/solaredge.markdown @frenck @bdraco
source/_integrations/solaredge_local.markdown @drobtravels @scheric source/_integrations/solaredge_local.markdown @drobtravels @scheric
source/_integrations/solarlog.markdown @Ernst79 source/_integrations/solarlog.markdown @Ernst79
source/_integrations/solax.markdown @squishykid source/_integrations/solax.markdown @squishykid
source/_integrations/soma.markdown @ratsept @sebfortier2288 source/_integrations/soma.markdown @ratsept @sebfortier2288
source/_integrations/somfy.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/somfy.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/sonarr.markdown @ctalkington source/_integrations/sonarr.markdown @ctalkington
source/_integrations/songpal.markdown @rytilahti @shenxn source/_integrations/songpal.markdown @rytilahti @shenxn
source/_integrations/sonos.markdown @jjlawren source/_integrations/sonos.markdown @jjlawren @peterager
source/_integrations/soundtouch.markdown @kroimon source/_integrations/soundtouch.markdown @kroimon
source/_integrations/spaceapi.markdown @fabaff source/_integrations/spaceapi.markdown @fabaff
source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87
@ -749,35 +782,38 @@ 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 source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
source/_integrations/switchbot_cloud.markdown @SeraphicRav source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland
source/_integrations/switcher_kis.markdown @thecode source/_integrations/switcher_kis.markdown @thecode
source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/switchmate.markdown @danielhiversen @qiz-li
source/_integrations/symfonisk.markdown @jjlawren source/_integrations/symfonisk.markdown @jjlawren @peterager
source/_integrations/syncthing.markdown @zhulik source/_integrations/syncthing.markdown @zhulik
source/_integrations/syncthru.markdown @nielstron source/_integrations/syncthru.markdown @nielstron
source/_integrations/synology_dsm.markdown @hacf-fr @Quentame @mib1185 source/_integrations/synology_dsm.markdown @hacf-fr @Quentame @mib1185
source/_integrations/synology_srm.markdown @aerialls 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 @michaelarnauts @chiefdragon @erwindouna source/_integrations/tado.markdown @chiefdragon @erwindouna
source/_integrations/tag.markdown @balloob @dmulcahey source/_integrations/tag.markdown @balloob @dmulcahey
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
source/_integrations/tankerkoenig.markdown @guillempages @mib1185 source/_integrations/tankerkoenig.markdown @guillempages @mib1185 @jpbede
source/_integrations/tapsaff.markdown @bazwilliams source/_integrations/tapsaff.markdown @bazwilliams
source/_integrations/tasmota.markdown @emontnemery source/_integrations/tasmota.markdown @emontnemery
source/_integrations/tautulli.markdown @ludeeus @tkdrob source/_integrations/tautulli.markdown @ludeeus @tkdrob
source/_integrations/technove.markdown @Moustachauve
source/_integrations/tedee.markdown @patrickhilker @zweckj
source/_integrations/tellduslive.markdown @fredrike source/_integrations/tellduslive.markdown @fredrike
source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core
source/_integrations/tesla_wall_connector.markdown @einarhauks source/_integrations/tesla_wall_connector.markdown @einarhauks
source/_integrations/teslemetry.markdown @Bre77
source/_integrations/tessie.markdown @Bre77 source/_integrations/tessie.markdown @Bre77
source/_integrations/text.markdown @home-assistant/core source/_integrations/text.markdown @home-assistant/core
source/_integrations/tfiac.markdown @fredrike @mellado source/_integrations/tfiac.markdown @fredrike @mellado
source/_integrations/thermobeacon.markdown @bdraco source/_integrations/thermobeacon.markdown @bdraco
source/_integrations/thermoplus.markdown @bdraco source/_integrations/thermoplus.markdown @bdraco
source/_integrations/thermopro.markdown @bdraco source/_integrations/thermopro.markdown @bdraco @h3ss
source/_integrations/thethingsnetwork.markdown @fabaff source/_integrations/thethingsnetwork.markdown @angelnu
source/_integrations/thread.markdown @home-assistant/core source/_integrations/thread.markdown @home-assistant/core
source/_integrations/tibber.markdown @danielhiversen source/_integrations/tibber.markdown @danielhiversen
source/_integrations/tile.markdown @bachya source/_integrations/tile.markdown @bachya
@ -790,9 +826,11 @@ source/_integrations/todoist.markdown @boralyl
source/_integrations/tolo.markdown @MatthiasLohr source/_integrations/tolo.markdown @MatthiasLohr
source/_integrations/tomorrowio.markdown @raman325 @lymanepp source/_integrations/tomorrowio.markdown @raman325 @lymanepp
source/_integrations/totalconnect.markdown @austinmroczek source/_integrations/totalconnect.markdown @austinmroczek
source/_integrations/tplink.markdown @rytilahti @thegardenmonkey @bdraco source/_integrations/tplink.markdown @rytilahti @thegardenmonkey @bdraco @sdb9696
source/_integrations/tplink_omada.markdown @MarkGodwin source/_integrations/tplink_omada.markdown @MarkGodwin
source/_integrations/tplink_tapo.markdown @rytilahti @thegardenmonkey @bdraco @sdb9696
source/_integrations/traccar.markdown @ludeeus source/_integrations/traccar.markdown @ludeeus
source/_integrations/traccar_server.markdown @ludeeus
source/_integrations/tractive.markdown @Danielhiversen @zhulik @bieniu source/_integrations/tractive.markdown @Danielhiversen @zhulik @bieniu
source/_integrations/trafikverket_camera.markdown @gjohansson-ST source/_integrations/trafikverket_camera.markdown @gjohansson-ST
source/_integrations/trafikverket_ferry.markdown @gjohansson-ST source/_integrations/trafikverket_ferry.markdown @gjohansson-ST
@ -805,12 +843,12 @@ source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck
source/_integrations/twentemilieu.markdown @frenck source/_integrations/twentemilieu.markdown @frenck
source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 @Olen source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 @Olen
source/_integrations/twitch.markdown @joostlek source/_integrations/twitch.markdown @joostlek
source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117
source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/ukraine_alarm.markdown @PaulAnnekov
source/_integrations/unifi.markdown @Kane610 source/_integrations/unifi.markdown @Kane610
source/_integrations/unifi_direct.markdown @tofuSCHNITZEL source/_integrations/unifi_direct.markdown @tofuSCHNITZEL
source/_integrations/unifiled.markdown @florisvdk source/_integrations/unifiled.markdown @florisvdk
source/_integrations/unifiprotect.markdown @AngellusMortis @bdraco source/_integrations/unifiprotect.markdown @bdraco
source/_integrations/upb.markdown @gwww source/_integrations/upb.markdown @gwww
source/_integrations/upc_connect.markdown @pvizeli @fabaff source/_integrations/upc_connect.markdown @pvizeli @fabaff
source/_integrations/upcloud.markdown @scop source/_integrations/upcloud.markdown @scop
@ -824,10 +862,10 @@ source/_integrations/usgs_earthquakes_feed.markdown @exxamalte
source/_integrations/utility_meter.markdown @dgomes source/_integrations/utility_meter.markdown @dgomes
source/_integrations/v2c.markdown @dgomes source/_integrations/v2c.markdown @dgomes
source/_integrations/vacuum.markdown @home-assistant/core source/_integrations/vacuum.markdown @home-assistant/core
source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru- 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/velbus.markdown @Cereal2nd @brefra source/_integrations/velbus.markdown @Cereal2nd @brefra
source/_integrations/velux.markdown @Julius2342 source/_integrations/velux.markdown @Julius2342 @DeerMaximum
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
@ -854,8 +892,10 @@ source/_integrations/watttime.markdown @bachya
source/_integrations/waze_travel_time.markdown @eifinger source/_integrations/waze_travel_time.markdown @eifinger
source/_integrations/weather.markdown @home-assistant/core source/_integrations/weather.markdown @home-assistant/core
source/_integrations/weatherflow.markdown @natekspencer @jeeftor source/_integrations/weatherflow.markdown @natekspencer @jeeftor
source/_integrations/weatherflow_cloud.markdown @jeeftor
source/_integrations/weatherkit.markdown @tjhorner source/_integrations/weatherkit.markdown @tjhorner
source/_integrations/webhook.markdown @home-assistant/core source/_integrations/webhook.markdown @home-assistant/core
source/_integrations/webmin.markdown @autinerd
source/_integrations/webostv.markdown @thecode source/_integrations/webostv.markdown @thecode
source/_integrations/websocket_api.markdown @home-assistant/core source/_integrations/websocket_api.markdown @home-assistant/core
source/_integrations/wemo.markdown @esev source/_integrations/wemo.markdown @esev
@ -868,7 +908,7 @@ source/_integrations/wirelesstag.markdown @sergeymaysak
source/_integrations/withings.markdown @joostlek source/_integrations/withings.markdown @joostlek
source/_integrations/wiz.markdown @sbidy source/_integrations/wiz.markdown @sbidy
source/_integrations/wled.markdown @frenck source/_integrations/wled.markdown @frenck
source/_integrations/wolflink.markdown @adamkrol93 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
@ -898,7 +938,8 @@ source/_integrations/zerproc.markdown @emlove
source/_integrations/zeversolar.markdown @kvanzuijlen source/_integrations/zeversolar.markdown @kvanzuijlen
source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly @TheJulianJES source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly @TheJulianJES
source/_integrations/zodiac.markdown @JulienTant source/_integrations/zodiac.markdown @JulienTant
source/_integrations/zondergas.markdown @klaasnicolaas
source/_integrations/zone.markdown @home-assistant/core source/_integrations/zone.markdown @home-assistant/core
source/_integrations/zoneminder.markdown @rohankapoorcom source/_integrations/zoneminder.markdown @rohankapoorcom @nabbi
source/_integrations/zwave_js.markdown @home-assistant/z-wave source/_integrations/zwave_js.markdown @home-assistant/z-wave
source/_integrations/zwave_me.markdown @lawfulchaos @Z-Wave-Me @PoltoS source/_integrations/zwave_me.markdown @lawfulchaos @Z-Wave-Me @PoltoS

13
Gemfile
View File

@ -3,26 +3,27 @@ source 'https://rubygems.org'
ruby '> 2.5.0' ruby '> 2.5.0'
group :development do group :development do
gem 'rake', '13.1.0' gem 'rake', '13.2.1'
gem 'jekyll', '4.3.3' gem 'jekyll', '4.3.3'
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 'rubocop', '1.59.0' gem 'rubocop', '1.64.1'
gem 'ruby-lsp', '0.13.2' gem 'ruby-lsp', '0.17.2'
gem 'rackup', '2.1.0'
end end
group :jekyll_plugins do group :jekyll_plugins do
gem 'jekyll-paginate', '1.1.0' gem 'jekyll-paginate', '1.1.0'
gem 'jekyll-sitemap', '1.4.0' gem 'jekyll-sitemap', '1.4.0'
gem 'jekyll-commonmark', '1.4.0' gem 'jekyll-commonmark', '1.4.0'
gem 'jekyll-toc', '0.18.0' gem 'jekyll-toc', '0.19.0'
end end
gem 'sinatra', '3.2.0' gem 'sinatra', '4.0.0'
gem 'nokogiri', '1.16.0' gem 'nokogiri', '1.16.5'
# 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

View File

@ -5,6 +5,7 @@ GEM
public_suffix (>= 2.0.2, < 6.0) public_suffix (>= 2.0.2, < 6.0)
ast (2.4.2) ast (2.4.2)
base64 (0.2.0) base64 (0.2.0)
bigdecimal (3.1.8)
chunky_png (1.4.0) chunky_png (1.4.0)
colorator (1.1.0) colorator (1.1.0)
commonmarker (0.23.10) commonmarker (0.23.10)
@ -20,16 +21,18 @@ GEM
sass (>= 3.3.0, < 3.5) sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5) compass-import-once (1.0.5)
sass (>= 3.2, < 3.5) sass (>= 3.2, < 3.5)
concurrent-ruby (1.2.2) concurrent-ruby (1.3.1)
em-websocket (0.5.3) em-websocket (0.5.3)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0) http_parser.rb (~> 0)
eventmachine (1.2.7) eventmachine (1.2.7)
ffi (1.16.3) ffi (1.17.0-x86_64-linux-gnu)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
google-protobuf (3.25.1-x86_64-linux) google-protobuf (4.27.1-x86_64-linux)
bigdecimal
rake (>= 13)
http_parser.rb (0.8.0) http_parser.rb (0.8.0)
i18n (1.14.1) i18n (1.14.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (4.3.3) jekyll (4.3.3)
addressable (~> 2.4) addressable (~> 2.4)
@ -54,88 +57,96 @@ GEM
sass-embedded (~> 1.54) sass-embedded (~> 1.54)
jekyll-sitemap (1.4.0) jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0) jekyll (>= 3.7, < 5.0)
jekyll-toc (0.18.0) jekyll-toc (0.19.0)
jekyll (>= 3.9) jekyll (>= 3.9)
nokogiri (~> 1.12) nokogiri (~> 1.12)
jekyll-watch (2.2.1) jekyll-watch (2.2.1)
listen (~> 3.0) listen (~> 3.0)
json (2.7.1) json (2.7.2)
kramdown (2.4.0) kramdown (2.4.0)
rexml rexml
kramdown-parser-gfm (1.1.0) kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0) kramdown (~> 2.0)
language_server-protocol (3.17.0.3) language_server-protocol (3.17.0.3)
liquid (4.0.4) liquid (4.0.4)
listen (3.8.0) listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10) rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0) mercenary (0.4.0)
multi_json (1.15.0) multi_json (1.15.0)
mustermann (3.0.0) mustermann (3.0.0)
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
nokogiri (1.16.0-x86_64-linux) nokogiri (1.16.5-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
parallel (1.24.0) parallel (1.24.0)
parser (3.3.0.2) parser (3.3.2.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 (0.19.0) prism (0.29.0)
public_suffix (5.0.4) public_suffix (5.0.5)
racc (1.7.3) racc (1.8.0)
rack (2.2.8) rack (3.0.11)
rack-protection (3.2.0) rack-protection (4.0.0)
base64 (>= 0.1.0) base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4) rack (>= 3.0.0, < 4)
rack-session (2.0.0)
rack (>= 3.0.0)
rackup (2.1.0)
rack (>= 3)
webrick (~> 1.8)
rainbow (3.1.1) rainbow (3.1.1)
rake (13.1.0) rake (13.2.1)
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
rb-inotify (0.10.1) rb-inotify (0.11.1)
ffi (~> 1.0) ffi (~> 1.0)
regexp_parser (2.9.0) regexp_parser (2.9.2)
rexml (3.2.6) rexml (3.2.8)
rouge (4.2.0) strscan (>= 3.0.9)
rubocop (1.59.0) rouge (4.2.1)
rubocop (1.64.1)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (>= 3.17.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 3.2.2.4) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0) regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0) rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.30.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0) unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.30.0) rubocop-ast (1.31.3)
parser (>= 3.2.1.0) parser (>= 3.3.1.0)
ruby-lsp (0.13.2) ruby-lsp (0.17.2)
language_server-protocol (~> 3.17.0) language_server-protocol (~> 3.17.0)
prism (>= 0.19.0, < 0.20) prism (>= 0.29.0, < 0.30)
sorbet-runtime (>= 0.5.5685) sorbet-runtime (>= 0.5.10782)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
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.69.7-x86_64-linux-gnu) sass-embedded (1.77.4-x86_64-linux-gnu)
google-protobuf (~> 3.25) google-protobuf (>= 3.25, < 5.0)
sass-globbing (1.1.5) sass-globbing (1.1.5)
sass (>= 3.1) sass (>= 3.1)
sassc (2.1.0-x86_64-linux) sassc (2.1.0-x86_64-linux)
ffi (~> 1.9) ffi (~> 1.9)
sinatra (3.2.0) sinatra (4.0.0)
mustermann (~> 3.0) mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4) rack (>= 3.0.0, < 4)
rack-protection (= 3.2.0) rack-protection (= 4.0.0)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0) tilt (~> 2.0)
sorbet-runtime (0.5.11178) sorbet-runtime (0.5.11418)
stringex (2.8.6) stringex (2.8.6)
strscan (3.1.0)
terminal-table (3.0.2) terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3) unicode-display_width (>= 1.1.1, < 3)
tilt (2.3.0) tilt (2.3.0)
tzinfo (2.0.6) tzinfo (2.0.6)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
tzinfo-data (1.2023.4) tzinfo-data (1.2024.1)
tzinfo (>= 1.0.0) tzinfo (>= 1.0.0)
unicode-display_width (2.5.0) unicode-display_width (2.5.0)
webrick (1.8.1) webrick (1.8.1)
@ -149,14 +160,15 @@ DEPENDENCIES
jekyll-commonmark (= 1.4.0) jekyll-commonmark (= 1.4.0)
jekyll-paginate (= 1.1.0) jekyll-paginate (= 1.1.0)
jekyll-sitemap (= 1.4.0) jekyll-sitemap (= 1.4.0)
jekyll-toc (= 0.18.0) jekyll-toc (= 0.19.0)
nokogiri (= 1.16.0) nokogiri (= 1.16.5)
rake (= 13.1.0) rackup (= 2.1.0)
rubocop (= 1.59.0) rake (= 13.2.1)
ruby-lsp (= 0.13.2) rubocop (= 1.64.1)
ruby-lsp (= 0.17.2)
sass-globbing (= 1.1.5) sass-globbing (= 1.1.5)
sassc (= 2.1.0) sassc (= 2.1.0)
sinatra (= 3.2.0) sinatra (= 4.0.0)
stringex (= 2.8.6) stringex (= 2.8.6)
tzinfo (~> 2.0) tzinfo (~> 2.0)
tzinfo-data tzinfo-data

View File

@ -109,9 +109,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 2024 current_major_version: 2024
current_minor_version: 1 current_minor_version: 6
current_patch_version: 2 current_patch_version: 1
date_released: 2024-01-06 date_released: 2024-06-07
# 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.
@ -195,7 +195,7 @@ toc:
installation: installation:
container: "ghcr.io/home-assistant/home-assistant" container: "ghcr.io/home-assistant/home-assistant"
versions: versions:
python: "3.11" python: "3.12"
types: types:
odroid: odroid:
board: ODROID board: ODROID
@ -211,11 +211,15 @@ installation:
key: "odroid-c4" key: "odroid-c4"
- name: "ODROID-M1" - name: "ODROID-M1"
key: "odroid-m1" key: "odroid-m1"
- name: "ODROID-M1S"
key: "odroid-m1s"
raspberrypi: raspberrypi:
board: Raspberry Pi board: Raspberry Pi
installation_media: "SD card" installation_media: "SD card"
variants: variants:
- name: "Raspberry Pi 5"
key: "rpi5-64"
- name: "Raspberry Pi 4" - name: "Raspberry Pi 4"
key: "rpi4-64" key: "rpi4-64"
- name: "Raspberry Pi 3" - name: "Raspberry Pi 3"

3806
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,22 +3,22 @@
"description": "Home Assistant Website & Documentation", "description": "Home Assistant Website & Documentation",
"version": "1.0.0", "version": "1.0.0",
"devDependencies": { "devDependencies": {
"remark-cli": "^12.0.0", "remark-cli": "^12.0.1",
"remark-frontmatter": "^5.0.0", "remark-frontmatter": "^5.0.0",
"remark-lint": "^9.1.2", "remark-lint": "^10.0.0",
"remark-lint-fenced-code-flag": "^3.1.2", "remark-lint-fenced-code-flag": "^4.0.0",
"remark-lint-heading-increment": "^3.1.2", "remark-lint-heading-increment": "^4.0.0",
"remark-lint-heading-style": "^3.1.2", "remark-lint-heading-style": "^4.0.0",
"remark-lint-no-shell-dollars": "^3.1.2", "remark-lint-no-shell-dollars": "^4.0.0",
"remark-lint-ordered-list-marker-style": "^3.1.2", "remark-lint-ordered-list-marker-style": "^4.0.0",
"remark-lint-ordered-list-marker-value": "^3.1.2", "remark-lint-ordered-list-marker-value": "^4.0.0",
"remark-lint-prohibited-strings": "^3.1.0", "remark-lint-prohibited-strings": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^3.1.2", "remark-lint-unordered-list-marker-style": "^4.0.0",
"remark-stringify": "^11.0.0", "remark-stringify": "^11.0.0",
"textlint": "^13.4.1", "textlint": "^14.0.4",
"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": "^4.0.1" "textlint-rule-terminology": "^5.0.10"
}, },
"resolutions": { "resolutions": {
"minimist": ">=1.2.5" "minimist": ">=1.2.5"

View File

@ -2,9 +2,9 @@ module Jekyll
class ConfigurationBlock < Liquid::Block class ConfigurationBlock < Liquid::Block
TYPE_LINKS = { TYPE_LINKS = {
'action' => '/docs/scripts/', 'action' => '/docs/scripts/',
'device_class' => '/docs/configuration/customizing-devices/#device-class', 'device_class' => '/integrations/homeassistant/#device-class',
'template' => '/docs/configuration/templating/', 'template' => '/docs/configuration/templating/',
'icon' => '/docs/configuration/customizing-devices/#icon', 'icon' => '/integrations/homeassistant/#icon',
'selector' => '/docs/blueprint/selectors/', 'selector' => '/docs/blueprint/selectors/',
} }
@ -72,12 +72,12 @@ module Jekyll
if attr['type'].kind_of? Array if attr['type'].kind_of? Array
attr['type'].each do |type| attr['type'].each do |type|
raise ArgumentError, "Configuration type '#{type}' for key '#{key}' is not a valid type in the documentation."\ raise ArgumentError, "Configuration type '#{type}' for key '#{key}' is not a valid type in the documentation."\
" See: https://developers.home-assistant.io/docs/en/documentation_create_page.html#configuration" unless \ " See: https://developers.home-assistant.io/docs/documenting/create-page#configuration" unless \
TYPES.include? type TYPES.include? type
end end
else else
raise ArgumentError, "Configuration type '#{attr['type']}' for key '#{key}' is not a valid type in the documentation."\ raise ArgumentError, "Configuration type '#{attr['type']}' for key '#{key}' is not a valid type in the documentation."\
" See: https://developers.home-assistant.io/docs/en/documentation_create_page.html#configuration" unless \ " See: https://developers.home-assistant.io/docs/documenting/create-page#configuration" unless \
TYPES.include? attr['type'] TYPES.include? attr['type']
end end

27
plugins/site_pages.rb Normal file
View File

@ -0,0 +1,27 @@
module Jekyll
class SitePagesGenerator < Jekyll::Generator
def generate(site)
all_pages = Array.new
site.collections.each do |name, collection|
all_pages.concat(collection.docs)
end
site.data["site_pages"] = all_pages
.concat(site.pages)
.concat(site.documents)
.map { |entry|
[
entry.url.to_s,
{
"title" => entry["title"],
"description" => entry["description"],
"url" => entry.url,
"relative_path" => entry.relative_path
}
]
}
.to_h
end
end
end

View File

@ -20,6 +20,7 @@ module Jekyll
end end
def render(context) def render(context)
@term.gsub!(/\"/, "")
entries = context.registers[:site].data["glossary"].select do |entry| entries = context.registers[:site].data["glossary"].select do |entry|
entry.key?("term") and (@term.casecmp(entry["term"]).zero? or (entry.key?("aliases") and entry["aliases"].any?{ |s| s.casecmp(@term)==0 })) entry.key?("term") and (@term.casecmp(entry["term"]).zero? or (entry.key?("aliases") and entry["aliases"].any?{ |s| s.casecmp(@term)==0 }))
end end
@ -33,7 +34,7 @@ module Jekyll
if glossary.key?("link") if glossary.key?("link")
rendered_link = Liquid::Template.parse(glossary["link"]).render(context).strip rendered_link = Liquid::Template.parse(glossary["link"]).render(context).strip
link = "<br><a class='terminology-link' href='#{rendered_link}' target='_blank'>[Learn more]</a>" link = "<small><a class='terminology-link' href='#{rendered_link}' target='_blank'>[Learn more]</a></small>"
end end
tooltip = "<span class='terminology-tooltip'>#{definition}#{link || ""}</span>" tooltip = "<span class='terminology-tooltip'>#{definition}#{link || ""}</span>"

View File

@ -831,6 +831,18 @@ $ha__primary_color: #03a9f4;
} }
.distributors { .distributors {
details {
width: 100%;
justify-content: space-between;
padding: 16px 24px;
color: #222222;
margin: auto;
summary.region {
display: list-item;
}
}
a { a {
text-decoration: none; text-decoration: none;

View File

@ -490,6 +490,10 @@ article.listing {
box-shadow: none; box-shadow: none;
} }
video {
max-width: 100%;
}
&>table, &>table,
&>.entry-content>table { &>.entry-content>table {
background-color: #f3fcf5; background-color: #f3fcf5;

View File

@ -9,6 +9,8 @@
} }
.terminology-tooltip { .terminology-tooltip {
--horizontal-move: 0px;
visibility: hidden; visibility: hidden;
width: 250px; width: 250px;
background-color: $primary-color; background-color: $primary-color;
@ -24,7 +26,7 @@
z-index: 1; z-index: 1;
bottom: 100%; bottom: 100%;
left: 50%; left: calc(50% + var(--horizontal-move));
margin-left: -125px; margin-left: -125px;
a { a {
@ -32,15 +34,39 @@
font-weight: 500; font-weight: 500;
} }
&:after { @mixin arrow {
content: " "; content: " ";
position: absolute; position: absolute;
top: 100%; left: calc(50% - var(--horizontal-move));
left: 50%;
margin-left: -5px; margin-left: -5px;
border-width: 5px; border-width: 5px;
border-style: solid; border-style: solid;
}
&:after {
@include arrow;
top: 100%;
border-color: $primary-color transparent transparent transparent; border-color: $primary-color transparent transparent transparent;
} }
&.below {
bottom: auto;
top: 1lh;
&:before {
@include arrow;
top: -10px;
border-color: transparent transparent $primary-color transparent;
}
&:after {
display: none;
}
}
}
code {
border-bottom: 2px dotted $primary-color;
} }
} }

View File

@ -3,9 +3,14 @@ type: card
title: "Alarm panel card" title: "Alarm panel card"
sidebar_label: Alarm panel sidebar_label: Alarm panel
description: "The alarm panel card allows you to arm and disarm your alarm control panel integrations." description: "The alarm panel card allows you to arm and disarm your alarm control panel integrations."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) integrations. The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) {% term integrations %}.
<p class='img'> <p class='img'>
<img src='/images/dashboards/alarm_panel_card.gif' alt='Screenshot of the alarm panel card'> <img src='/images/dashboards/alarm_panel_card.gif' alt='Screenshot of the alarm panel card'>

View File

@ -3,9 +3,14 @@ type: card
title: "Area card" title: "Area card"
sidebar_label: Area sidebar_label: Area
description: "The area card gives control of your entities in a specified area." description: "The area card gives control of your entities in a specified area."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The area card lets you control and monitor an individual area. The area card lets you control and monitor an individual {% term area %}.
<p class='img'> <p class='img'>
<img src='/images/dashboards/area-card.png' alt='Screenshot of the area card'> <img src='/images/dashboards/area-card.png' alt='Screenshot of the area card'>
@ -16,9 +21,9 @@ The area card lets you control and monitor an individual area.
All options for this card can be configured via the user interface. All options for this card can be configured via the user interface.
Buttons will appear on the card for the entities in the area including fan, light and switch. A motion sensor icon will appear in the top left if a motion sensor is in the area and motion is detected by the motion sensor. Buttons will appear on the card for the {% term entities %} in the area including fan, light, and switch. A motion sensor icon will appear in the top left if a motion sensor is in the area and if motion is detected by the motion sensor.
If a camera is added to the area you can show the camera feed instead of the area picture. If a camera is added to the {% term area %} you can show the camera feed instead of the area picture.
## YAML configuration ## YAML configuration
@ -56,6 +61,16 @@ 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
alert_classes:
required: false
type: list
default: "moisture, motion"
description: A list of binary sensor device classes which will populate alert icons in the card when the state is on.
sensor_classes:
required: false
type: list
default: "temperature, humidity"
description: A list of sensor device classes which will display their averaged sensor readings for the area.
{% endconfiguration %} {% endconfiguration %}
### Example ### Example

View File

@ -3,6 +3,15 @@ type: card
title: "Button card" title: "Button card"
sidebar_label: Button sidebar_label: Button
description: "The Button card allows you to add buttons to perform tasks." description: "The Button card allows you to add buttons to perform tasks."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /docs/scripts/
title: Scripts
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The button card allows you to add buttons to perform tasks. The button card allows you to add buttons to perform tasks.

View File

@ -3,9 +3,14 @@ type: card
title: "Calendar card" title: "Calendar card"
sidebar_label: Calendar sidebar_label: Calendar
description: "The calendar card displays your calendar entities in a month, day and list view" description: "The calendar card displays your calendar entities in a month, day and list view"
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The calendar card displays your [calendar](/integrations/#calendar) entities in a month, day and list view (7 days). The calendar card displays your [calendar](/integrations/#calendar) {% term entities %} in a month, day, and list view (7 days).
<p class='img'> <p class='img'>
<img src='/images/dashboards/calendar_card.png' alt='Screenshot of the <img src='/images/dashboards/calendar_card.png' alt='Screenshot of the
@ -17,19 +22,6 @@ The calendar card displays your [calendar](/integrations/#calendar) entities in
All options for this card can be configured via the user interface. All options for this card can be configured via the user interface.
## Card settings
{% configuration_basic %}
Title:
description: The title displayed at the top of the card.
Initial View:
description: "The view that will show first when the card is loaded onto the page. Options are `Month View`, `Day View`, or `List (7 days)`."
Entities:
description: The calendar entities that will be displayed in the card.
Theme:
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
{% 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.

View File

@ -1,8 +1,13 @@
--- ---
type: card type: card
title: Conditional Card title: Conditional card
sidebar_label: Conditional sidebar_label: Conditional
description: The Conditional card displays another card based on conditions. description: The Conditional card displays another card based on conditions.
related:
- docs: /dashboards/cards/
title: Dashboard cards
- docs: /dashboards/cards/#show-or-hide-a-card-conditionally
title: Conditional settings on the card's visibility tab
--- ---
The conditional card displays another card based on conditions. The conditional card displays another card based on conditions.
@ -12,6 +17,8 @@ The conditional card displays another card based on conditions.
{% include dashboard/edit_dashboard.md %} {% include dashboard/edit_dashboard.md %}
Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions. Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions.
The conditional card can still be used. However, it is now possible to define a setting to show or hide a card conditionally directly on each card type, on its [Visibility](/dashboards/cards/#show-or-hide-a-card-conditionally) tab.
Most options for this card can be configured via the user interface. Most options for this card can be configured via the user interface.
## YAML configuration ## YAML configuration
@ -25,7 +32,7 @@ type:
type: string type: string
conditions: conditions:
required: true required: true
description: List of conditions to check. See [available conditions](/dashboards/conditional/#card-conditions). description: List of conditions to check. See [available conditions](#conditions-options).
type: list type: list
card: card:
required: true required: true
@ -36,6 +43,7 @@ card:
## Examples ## Examples
Only show when all the conditions are met: Only show when all the conditions are met:
```yaml ```yaml
type: conditional type: conditional
conditions: conditions:
@ -59,6 +67,7 @@ card:
``` ```
Example condition where only one of the conditions needs to be met: Example condition where only one of the conditions needs to be met:
```yaml ```yaml
type: conditional type: conditional
conditions: conditions:
@ -77,24 +86,24 @@ card:
- binary_sensor.rookmelder - binary_sensor.rookmelder
``` ```
## Card conditions ## Conditions options
### State ### State
Tests if an entity has a specified state.
```yaml ```yaml
condition: "state" condition: state
entity: climate.thermostat entity: climate.thermostat
state: heat state: heat
``` ```
```yaml ```yaml
condition: "state" condition: state
entity: climate.thermostat entity: climate.thermostat
state_not: "off" state_not: "off"
``` ```
Tests if an entity has a specified state.
{% configuration %} {% configuration %}
condition: condition:
required: true required: true
@ -106,11 +115,11 @@ entity:
type: string type: string
state: state:
required: false required: false
description: Entity state is equal to this value. Can contain an array of states.* description: Entity state or ID to be equal to this value. Can contain an array of states.*
type: [list, string] type: [list, string]
state_not: state_not:
required: false required: false
description: Entity state is unequal to this value. Can contain an array of states.* description: Entity state or ID to not be equal to this value. Can contain an array of states.*
type: [list, string] type: [list, string]
{% endconfiguration %} {% endconfiguration %}
@ -121,7 +130,7 @@ state_not:
Tests if an entity state matches the thresholds. Tests if an entity state matches the thresholds.
```yaml ```yaml
condition: "numeric_state" condition: numeric_state
entity: sensor.outside_temperature entity: sensor.outside_temperature
above: 10 above: 10
below: 20 below: 20
@ -138,15 +147,15 @@ entity:
type: string type: string
above: above:
required: false required: false
description: Entity state is above this value.* description: Entity state or ID to be above this value.*
type: string type: string
below: below:
required: false required: false
description: Entity state is below to this value.* description: Entity state or ID to be below this value.*
type: string type: string
{% endconfiguration %} {% endconfiguration %}
*at least one is required (`above` or `below`) *at least one is required (`above` or `below`), both are also possible for values between.
### Screen ### Screen
@ -173,7 +182,7 @@ media_query:
Specify the visibility of the card per user. Specify the visibility of the card per user.
```yaml ```yaml
condition: "user" condition: user
users: users:
- 581fca7fdc014b8b894519cc531f9a04 - 581fca7fdc014b8b894519cc531f9a04
``` ```
@ -188,3 +197,55 @@ users:
description: User ID that can see the card (unique hex value found on the Users configuration page). description: User ID that can see the card (unique hex value found on the Users configuration page).
type: list type: list
{% endconfiguration %} {% endconfiguration %}
### And
Specify that both conditions must be met.
```yaml
condition: and
conditions:
- condition: numeric_state
above: 0
- condition: user
users:
- 581fca7fdc014b8b894519cc531f9a04
```
{% configuration %}
condition:
required: true
description: "`and`"
type: string
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).
type: list
{% endconfiguration %}
### Or
Specify that at least one of the conditions must be met.
```yaml
condition: or
conditions:
- condition: numeric_state
above: 0
- condition: user
users:
- 581fca7fdc014b8b894519cc531f9a04
```
{% configuration %}
condition:
required: true
description: "`or`"
type: string
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).
type: list
{% endconfiguration %}

View File

@ -1,13 +1,18 @@
--- ---
type: card type: card
title: "Energy Cards" title: "Energy cards"
sidebar_label: Energy Cards sidebar_label: Energy cards
description: "An overview of the energy cards that are available." description: "An overview of the energy cards that are available."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
This is a list of all the cards used in the energy dashboard, you can also place them anywhere you want in your dashboard. This is a list of all the cards used in the energy dashboard. You can also place them anywhere you want in your dashboard.
At the moment there are no configuration options available for these cards, you can configure them on the {% my config_energy title="energy configuration page" %}. Currently, there are no configuration options available for these cards. You can configure them on the {% my config_energy title="energy configuration page" %}.
## Energy date picker ## Energy date picker
@ -16,10 +21,11 @@ At the moment there are no configuration options available for these cards, you
Screenshot of the Energy date selection card. Screenshot of the Energy date selection card.
</p> </p>
This card will allow you to pick what data to show. Changing it in this card will influence the data in all other cards. This card allows you to pick what data to show. Changing it in this card will influence the data in all other cards.
Specific dates and ranges can be selected by opening the date range picker. The current period can be compared to the previous one using the compare data option within the menu. Specific dates and ranges can be selected by opening the date range picker. The current period can be compared to the previous one using the compare data option within the menu.
### Example ### Example
```yaml ```yaml
type: energy-date-selection type: energy-date-selection
``` ```
@ -35,6 +41,7 @@ The energy usage graph card shows the amount of energy your house has consumed,
It will also show the amount of energy your have returned to the grid. It will also show the amount of energy your have returned to the grid.
### Example ### Example
```yaml ```yaml
type: energy-usage-graph type: energy-usage-graph
``` ```
@ -49,6 +56,7 @@ type: energy-usage-graph
The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production. The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production.
### Example ### Example
```yaml ```yaml
type: energy-solar-graph type: energy-solar-graph
``` ```
@ -97,6 +105,7 @@ If setup, it will also tell you how many kWh of the energy you got from the grid
If you set `link_dashboard` to `true`, the card will include a link to the energy dashboard. If you set `link_dashboard` to `true`, the card will include a link to the energy dashboard.
### Example ### Example
```yaml ```yaml
type: energy-distribution type: energy-distribution
link_dashboard: true link_dashboard: true
@ -113,6 +122,7 @@ The energy sources table card shows all your energy sources, and the correspondi
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.
### Example ### Example
```yaml ```yaml
type: energy-sources-table type: energy-sources-table
``` ```
@ -127,6 +137,7 @@ type: energy-sources-table
The grid neutrality gauge card represents your energy dependency. If the needle is in the purple, you returned more energy to the grid than you consumed from it. If it's in the blue, you consumed more energy from the grid than you returned. The grid neutrality gauge card represents your energy dependency. If the needle is in the purple, you returned more energy to the grid than you consumed from it. If it's in the blue, you consumed more energy from the grid than you returned.
### Example ### Example
```yaml ```yaml
type: energy-grid-neutrality-gauge type: energy-grid-neutrality-gauge
``` ```
@ -141,6 +152,7 @@ type: energy-grid-neutrality-gauge
The solar consumed gauge represents how much of the solar energy was used by your home and was not returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge. The solar consumed gauge represents how much of the solar energy was used by your home and was not returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge.
### Example ### Example
```yaml ```yaml
type: energy-solar-consumed-gauge type: energy-solar-consumed-gauge
``` ```
@ -155,6 +167,7 @@ type: energy-solar-consumed-gauge
The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self. The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self.
### Example ### Example
```yaml ```yaml
type: energy-carbon-consumed-gauge type: energy-carbon-consumed-gauge
``` ```
@ -169,6 +182,7 @@ type: energy-carbon-consumed-gauge
The self-sufficiency gauge represents how self-sufficient your home is. If you rely on grid imports, this value decreases. You can increase this value by adding more solar capacity or battery storage. The self-sufficiency gauge represents how self-sufficient your home is. If you rely on grid imports, this value decreases. You can increase this value by adding more solar capacity or battery storage.
### Example ### Example
```yaml ```yaml
type: energy-self-sufficiency-gauge type: energy-self-sufficiency-gauge
``` ```
@ -196,3 +210,27 @@ The following example limits the number of shown devices to 5:
type: energy-devices-graph type: energy-devices-graph
max_devices: 5 max_devices: 5
``` ```
## Detail devices energy graph
<p class='img'>
<img src='/images/dashboards/energy/devices-detail-graph.png' alt='Screenshot of the devices energy graph card'>
Screenshot of the detail devices energy graph card.
</p>
The **Detail devices energy graph** card is similar to the **Devices energy graph** card, but shows the individual usage on a time scale.
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.
### Examples
```yaml
type: energy-devices-detail-graph
```
The following example limits the number of shown devices to 5:
```yaml
type: energy-devices-detail-graph
max_devices: 5
```

View File

@ -1,8 +1,15 @@
--- ---
type: card type: card
title: "Entities Card" title: "Entities card"
sidebar_label: Entities sidebar_label: Entities
description: "The entities card is the most common type of card. It groups items together into lists." description: "The entities card is the most common type of card. It groups items together into lists."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /dashboards/header-footer/
title: Card header and footer
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.

View File

@ -29,9 +29,13 @@ entities:
required: true required: true
description: A list of entity IDs or `entity` objects, see below. description: A list of entity IDs or `entity` objects, see below.
type: list type: list
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).*
type: list
state_filter: state_filter:
required: true required: false
description: List of strings representing states or `filter` objects, see below. description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).*
type: list type: list
card: card:
required: false required: false
@ -45,6 +49,8 @@ show_empty:
default: true default: true
{% endconfiguration %} {% endconfiguration %}
*one is required (`conditions` or `state_filter`)
### Options for entities ### Options for entities
If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configurations: If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configurations:
@ -64,8 +70,9 @@ name:
type: string type: string
icon: icon:
required: false required: false
description: Overwrites icon or entity picture. description: Overwrites icon or entity picture. You can use any icon from [Material Design Icons](https://pictogrammers.com/library/mdi/). Prefix the icon name with `mdi:`, ie `mdi:home`.
type: string type: string
default: Entity domain icon
secondary_info: secondary_info:
required: false required: false
description: "Show additional info. Values: `entity-id`, `last-changed`." description: "Show additional info. Values: `entity-id`, `last-changed`."
@ -74,32 +81,225 @@ format:
required: false required: false
description: "How the state should be formatted. Currently only used for timestamp sensors. Valid values are: `relative`, `total`, `date`, `time` and `datetime`." description: "How the state should be formatted. Currently only used for timestamp sensors. Valid values are: `relative`, `total`, `date`, `time` and `datetime`."
type: string type: string
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).*
type: list
state_filter: state_filter:
required: false required: false
description: List of strings representing states or `filter` objects, see below. description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).*
type: list type: list
{% endconfiguration %} {% endconfiguration %}
### Options for state filter *only one filter will be applied: `conditions` or `state_filter` if `conditions` is not present
If you define `state_filter` as objects instead of strings (by adding `value:` before your state value), you can add more customization to your filter: ## Conditions options
{% configuration %} You can specify multiple `conditions`, in which case the entity will be displayed if it matches any condition.
value:
### State
Tests if an entity has a specified state.
```yaml
type: entity-filter
entities:
- climate.thermostat_living_room
- climate.thermostat_bed_room
conditions:
- condition: state
state: heat
```
```yaml
type: entity-filter
entities:
- climate.thermostat_living_room
- climate.thermostat_bed_room
conditions:
- condition: state
state_not: "off"
```
```yaml
type: entity-filter
entities:
- sensor.gas_station_1
- sensor.gas_station_2
- sensor.gas_station_3
conditions:
- condition: state
state: sensor.gas_station_lowest_price
```
{% configuration condition_state %}
condition:
required: true required: true
description: String representing the state. description: "`state`"
type: string type: string
operator: state:
required: false required: false
description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=`, `in`, `not in`, or `regex`. description: Entity state or ID to be equal to this value. Can contain an array of states.*
type: [list, string]
state_not:
required: false
description: Entity state or ID to not be equal to this value. Can contain an array of states.*
type: [list, string]
{% endconfiguration %}
*one is required (`state` or `state_not`)
### Numeric state
Tests if an entity state matches the thresholds.
```yaml
type: entity-filter
entities:
- sensor.outside_temperature
- sensor.living_room_temperature
- sensor.bed_room_temperature
conditions:
- condition: numeric_state
above: 10
below: 20
```
{% configuration condition_numeric_state %}
condition:
required: true
description: "`numeric_state`"
type: string type: string
attribute: above:
required: false required: false
description: Attribute of the entity to use instead of the state. description: Entity state or ID to be above this value.*
type: string
below:
required: false
description: Entity state or ID to be below this value.*
type: string type: string
{% endconfiguration %} {% endconfiguration %}
## Examples *at least one is required (`above` or `below`), both are also possible for values between.
### Screen
Specify the visibility of the entity per screen size. Some screen size presets are available in the UI but you can use any CSS media query you want in YAML.
```yaml
type: entity-filter
entities:
- sensor.outside_temperature
- sensor.living_room_temperature
- sensor.bed_room_temperature
conditions:
- condition: screen
media_query: "(min-width: 1280px)"
```
{% configuration condition_screen %}
condition:
required: true
description: "`screen`"
type: string
media_query:
required: true
description: Media query to check which screen size are allowed to display the entity.
type: string
{% endconfiguration %}
### User
Specify the visibility of the entity per user.
```yaml
type: entity-filter
entities:
- sensor.outside_temperature
- sensor.living_room_temperature
- sensor.bed_room_temperature
conditions:
- condition: user
users:
- 581fca7fdc014b8b894519cc531f9a04
```
{% configuration condition_user %}
condition:
required: true
description: "`user`"
type: string
users:
required: true
description: User ID that can see the entity (unique hex value found on the Users configuration page).
type: list
{% endconfiguration %}
### And
Specify that both conditions must be met.
```yaml
type: entity-filter
entities:
- sensor.outside_temperature
- sensor.living_room_temperature
- sensor.bed_room_temperature
conditions:
- condition: and
conditions:
- condition: numeric_state
above: 0
- condition: user
users:
- 581fca7fdc014b8b894519cc531f9a04
```
{% configuration condition_and %}
condition:
required: true
description: "`and`"
type: string
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).
type: list
{% endconfiguration %}
### Or
Specify that at least one of the conditions must be met.
```yaml
type: entity-filter
entities:
- sensor.outside_temperature
- sensor.living_room_temperature
- sensor.bed_room_temperature
conditions:
- condition: or
conditions:
- condition: numeric_state
above: 0
- condition: user
users:
- 581fca7fdc014b8b894519cc531f9a04
```
{% configuration condition_or %}
condition:
required: true
description: "`or`"
type: string
conditions:
required: false
description: List of conditions to check. See [available conditions](#conditions-options).
type: list
{% endconfiguration %}
## Legacy state filters
### String filter
Show only active switches or lights in the house. Show only active switches or lights in the house.
@ -134,7 +334,32 @@ card:
Entity filter combined with glance card. Entity filter combined with glance card.
</p> </p>
You can also specify multiple `state_filter` conditions, in which case the entity will be displayed if it matches any condition. This example will display everyone who is at home or at work. You can also specify multiple `state_filter` conditions, in which case the entity will be displayed if it matches any condition.
If you define `state_filter` as objects instead of strings, you can add more customization to your filter, as described below.
### Operator filter
Tests if an entity state correspond to the applied `operator`.
{% configuration condition_operator %}
value:
required: true
description: String representing the state.
type: string
operator:
required: true
description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=`, `in`, `not in`, or `regex`.
type: string
attribute:
required: false
description: Attribute of the entity to use instead of the state.
type: string
{% endconfiguration %}
#### Examples
Displays everyone who is at home or at work.
```yaml ```yaml
type: entity-filter type: entity-filter
@ -146,7 +371,7 @@ state_filter:
- operator: "==" - operator: "=="
value: home value: home
- operator: "==" - operator: "=="
value: work value: work
card: card:
type: glance type: glance
title: Who's at work or home title: Who's at work or home
@ -173,19 +398,19 @@ entities:
Use a regex filter against entity attributes. This regex filter below looks for expressions that are 1 digit in length and where the number is between 0-7 (so show holidays today or in the next 7 days) and displays those holidays as entities in the Entity Filter card. Use a regex filter against entity attributes. This regex filter below looks for expressions that are 1 digit in length and where the number is between 0-7 (so show holidays today or in the next 7 days) and displays those holidays as entities in the Entity Filter card.
```yaml ```yaml
- type: entity-filter type: entity-filter
card: card:
title: "Upcoming Holidays In Next 7 Days" title: "Upcoming Holidays In Next 7 Days"
show_header_toggle: false show_header_toggle: false
state_filter: state_filter:
- operator: regex - operator: regex
value: "^([0-7]{1})$" value: "^([0-7]{1})$"
attribute: eta attribute: eta
entities: entities:
- entity: sensor.upcoming_ical_holidays_0 - entity: sensor.upcoming_ical_holidays_0
- entity: sensor.upcoming_ical_holidays_1 - entity: sensor.upcoming_ical_holidays_1
- entity: sensor.upcoming_ical_holidays_2 - entity: sensor.upcoming_ical_holidays_2
- entity: sensor.upcoming_ical_holidays_3 - entity: sensor.upcoming_ical_holidays_3
- entity: sensor.upcoming_ical_holidays_4 - entity: sensor.upcoming_ical_holidays_4
show_empty: false show_empty: false
``` ```

View File

@ -3,6 +3,13 @@ type: card
title: "Entity card" title: "Entity card"
sidebar_label: Entity sidebar_label: Entity
description: "The entity card gives you a quick overview of your entity's state" description: "The entity card gives you a quick overview of your entity's state"
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/header-footer/
title: Card header and footer
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.

View File

@ -1,8 +1,13 @@
--- ---
type: card type: card
title: "Gauge Card" title: "Gauge card"
sidebar_label: Gauge sidebar_label: Gauge
description: "The gauge card is a basic card that allows visually seeing sensor data." description: "The gauge card is a basic card that allows visually seeing sensor data."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -97,6 +102,18 @@ segments:
required: false required: false
description: Label of the segment. This will be shown instead of the value. description: Label of the segment. This will be shown instead of the value.
type: string type: string
tap_action:
required: false
description: Action taken on card tap. See [action documentation](/dashboards/actions/#tap-action).
type: map
hold_action:
required: false
description: Action taken on card tap and hold. See [action documentation](/dashboards/actions/#hold-action).
type: map
double_tap_action:
required: false
description: Action taken on card double tap. See [action documentation](/dashboards/actions/#double-tap-action).
type: map
{% endconfiguration %} {% endconfiguration %}
### Examples ### Examples

View File

@ -3,6 +3,13 @@ type: card
title: "Glance card" title: "Glance card"
sidebar_label: Glance sidebar_label: Glance
description: "The glance card is useful to group multiple sensors in a compact overview." description: "The glance card is useful to group multiple sensors in a compact overview."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard 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. 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.

View File

@ -3,6 +3,11 @@ type: card
title: "Grid card" title: "Grid card"
sidebar_label: Grid sidebar_label: Grid
description: "The grid card allows you to show multiple cards in a grid." description: "The grid card allows you to show multiple cards in a grid."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The grid card allows you to show multiple cards in a grid. It will first fill the columns, automatically adding new rows as needed. The grid card allows you to show multiple cards in a grid. It will first fill the columns, automatically adding new rows as needed.
@ -70,7 +75,7 @@ square: false
cards: cards:
- type: picture-entity - type: picture-entity
entity: group.all_lights entity: group.all_lights
image: /local/house.png image: /local/house.png
- type: horizontal-stack - type: horizontal-stack
cards: cards:
- type: picture-entity - type: picture-entity

View File

@ -3,6 +3,11 @@ type: card
title: "History graph card" title: "History graph card"
sidebar_label: History graph sidebar_label: History graph
description: "The history graph card allows you to display a graph for each of the entities listed." description: "The history graph card allows you to display a graph for each of the entities listed."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -19,7 +24,7 @@ Screenshot of the history graph card, when the sensor has a `unit_of_measurement
{% include dashboard/edit_dashboard.md %} {% include dashboard/edit_dashboard.md %}
All options for this card can be configured via the user interface. Only the y-axis and logarithmic scale settings can be configured via the user interface. To configure the other options for this card, you need to edit the YAML configuration.
## YAML configuration ## YAML configuration
@ -53,6 +58,19 @@ logarithmic_scale:
description: If true, numerical values on the Y-axis will be displayed with a logarithmic scale. description: If true, numerical values on the Y-axis will be displayed with a logarithmic scale.
type: boolean type: boolean
default: false default: false
min_y_axis:
required: false
description: Lower bound for the Y-axis range.
type: float
max_y_axis:
required: false
description: Upper bound for the Y-axis range.
type: float
fit_y_data:
required: false
description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data.
type: boolean
default: false
{% endconfiguration %} {% endconfiguration %}
### Options for entities ### Options for entities

View File

@ -3,6 +3,9 @@ type: card
title: "Horizontal stack card" title: "Horizontal stack card"
sidebar_label: Horizontal stack sidebar_label: Horizontal stack
description: "The horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column." description: "The horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column."
related:
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column. The horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column.

View File

@ -3,6 +3,11 @@ type: card
title: "Humidifier card" title: "Humidifier card"
sidebar_label: Humidifier sidebar_label: Humidifier
description: "The humidifier card gives control of your humidifier entity, allowing you to change the target humidity and mode of the entity." description: "The humidifier card gives control of your humidifier entity, allowing you to change the target humidity and mode of the entity."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -56,3 +61,4 @@ type: humidifier
entity: humidifier.bedroom entity: humidifier.bedroom
name: Bedroom Humidifier name: Bedroom Humidifier
``` ```

View File

@ -3,10 +3,17 @@ type: card
title: "Webpage card" title: "Webpage card"
sidebar_label: Webpage sidebar_label: Webpage
description: "The webpage card allows you to embed your favorite webpage right into Home Assistant." description: "The webpage card allows you to embed your favorite webpage right into Home Assistant."
related:
- docs: /dashboards/dashboards/#webpage-dashboard
title: Webpage dashboard
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The webpage card allows you to embed your favorite webpage right into Home Assistant. You can also embed files stored in your `<config-directory>/www` folder and reference them using `/local/<file>`. The webpage card allows you to embed your favorite webpage right into Home Assistant. You can also embed files stored in your `<config-directory>/www` folder and reference them using `/local/<file>`.
The webpage card is used on the [Webpage dashboard](/dashboards/dashboards/#webpage-dashboard).
<p class='img'> <p class='img'>
<img width="500" src='/images/dashboards/iframe.png' alt='Windy weather radar as Webpage'> <img width="500" src='/images/dashboards/iframe.png' alt='Windy weather radar as Webpage'>
Windy weather radar as webpage. Windy weather radar as webpage.
@ -16,6 +23,7 @@ The webpage card allows you to embed your favorite webpage right into Home Assis
All options for this card can be configured via the user interface. All options for this card can be configured via the user interface.
Note that not every webpage can be embedded due to security restrictions that some sites have in place. These restrictions are enforced by your browser and prevent embedding them into a Home Assistant dashboard.
<div class='note warning'> <div class='note warning'>
You can't embed sites using HTTP if you are using HTTPS for your Home Assistant. You can't embed sites using HTTP if you are using HTTPS for your Home Assistant.
</div> </div>
@ -47,6 +55,11 @@ title:
required: false required: false
description: The card title. description: The card title.
type: string type: string
allow:
required: false
description: The [Permissions Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy#iframes) of the iframe, that is, the value of the [`allow`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#allow) attribute.
type: string
default: "fullscreen"
{% endconfiguration %} {% endconfiguration %}
### Examples ### Examples

View File

@ -3,6 +3,13 @@ type: card
title: "Light card" title: "Light card"
sidebar_label: Light sidebar_label: Light
description: "The light card allows you to change the brightness of the light." description: "The light card allows you to change the brightness of the light."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The light card allows you to change the brightness of the light. The light card allows you to change the brightness of the light.

View File

@ -3,6 +3,11 @@ type: card
title: "Logbook card" title: "Logbook card"
sidebar_label: Logbook sidebar_label: Logbook
description: "The logbook card displays entries from the logbook for specific entities." description: "The logbook card displays entries from the logbook for specific entities."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The logbook card displays entries from the logbook for specific entities. The logbook card displays entries from the logbook for specific entities.

View File

@ -3,9 +3,16 @@ type: card
title: "Map card" title: "Map card"
sidebar_label: Map sidebar_label: Map
description: "The map card that allows you to display entities on a map" description: "The map card that allows you to display entities on a map"
related:
- docs: /dashboards/dashboards/#map-dashboard
title: Map dashboard
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The map card that allows you to display entities on a map The map card that allows you to display entities on a map. This card is used on the [Map dashboard](/dashboards/dashboards/#map-dashboard), which is one of the default dashboards.
<p class='img'> <p class='img'>
<img src='/images/dashboards/map_card.png' alt='Screenshot of the map card'> <img src='/images/dashboards/map_card.png' alt='Screenshot of the map card'>
@ -56,11 +63,11 @@ default_zoom:
description: The default zoom level of the map. description: The default zoom level of the map.
type: integer type: integer
default: 14 (or whatever zoom level is required to fit all visible markers) default: 14 (or whatever zoom level is required to fit all visible markers)
dark_mode: theme_mode:
required: false required: false
description: Enable a dark theme for the map. description: 'Override the theme to force the map to display in either a light mode (`theme_mode: light`) or a dark mode (`theme_mode: dark`). Default (`theme_mode: auto`) will follow the theme settings.'
type: boolean type: string
default: false default: 'auto'
hours_to_show: hours_to_show:
required: false required: false
description: Shows a path of previous locations. Hours to show as path on the map. description: Shows a path of previous locations. Hours to show as path on the map.
@ -134,3 +141,4 @@ entities:
focus: false focus: false
hours_to_show: 48 hours_to_show: 48
``` ```

View File

@ -3,6 +3,11 @@ type: card
title: "Markdown card" title: "Markdown card"
sidebar_label: Markdown sidebar_label: Markdown
description: "The Markdown card is used to render Markdown" description: "The Markdown card is used to render Markdown"
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The Markdown card is used to render [Markdown](https://commonmark.org/help/). The Markdown card is used to render [Markdown](https://commonmark.org/help/).

View File

@ -2,11 +2,29 @@
type: view type: view
title: Masonry view title: Masonry view
sidebar_label: Masonry (default) sidebar_label: Masonry (default)
description: "The default panel layout uses a masonry algorithme." description: "The default panel layout uses a masonry algorithm."
related:
- docs: /dashboards/panel/
title: Panel view
- docs: /dashboards/sidebar/
title: Sidebar view
--- ---
The masonry view is the default view type. The masonry view is the default view type.
It sorts cards in columns based on their `card size`. If you want to group some cards you have to use `stack` or `grid` cards.
<p class='img'>
<img src='/images/getting-started/lovelace.png' alt='Screenshot of the masonry view'>
Screenshot of the masonry view.
</p>
Masonry sorts cards in columns based on their card size. The next card is placed below the smallest card on the dashboard.
<p class='img'>
<img src='/images/dashboards/masonry.png' alt='Image showing how masonry arranges cards based on size.'>
Masonry arranges cards based on size.
</p>
To group cards, you have to use [horizontal stack](/dashboards/horizontal-stack/), [vertical stack](/dashboards/vertical-stack/), or [grid](/dashboards/grid/) cards.
{% configuration %} {% configuration %}
type: type:

View File

@ -3,6 +3,11 @@ type: card
title: "Media control card" title: "Media control card"
sidebar_label: Media control sidebar_label: Media control
description: "The media control card is used to display media player entities on an interface with easy to use controls." description: "The media control card is used to display media player entities on an interface with easy to use controls."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.

View File

@ -3,13 +3,23 @@ type: view
title: Panel view title: Panel view
sidebar_label: Panel sidebar_label: Panel
description: "The panel view shows a single card in the full width of the screen." description: "The panel view shows a single card in the full width of the screen."
related:
- docs: /dashboards/masonry/
title: Masonry view
- docs: /dashboards/sidebar/
title: Sidebar view
--- ---
The view must have exactly one card. This card is rendered full-width. The panel view must have exactly one card. This card is rendered full-width.
<p class='img'>
<img src='/images/dashboards/panel_view.png' alt='Screenshot of the panel view'>
Screenshot of the panel view.
</p>
This view doesn't have support for badges. This view doesn't have support for badges.
This view is good when using cards like `map`, `stack` or `picture-elements`. This view is good when using cards like [map](/dashboards/map/), [horizontal stack](/dashboards/horizontal-stack/), [vertical stack](/dashboards/vertical-stack/), [picture elements](/dashboards/picture-elements/), or [picture glance](/dashboards/picture-glance/).
{% configuration %} {% configuration %}
type: type:

View File

@ -3,6 +3,13 @@ type: card
title: "Picture elements card" title: "Picture elements card"
sidebar_label: Picture elements sidebar_label: Picture elements
description: "The picture elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates." description: "The picture elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The picture elements card is one of the most versatile types of cards. The picture elements card is one of the most versatile types of cards.
@ -401,7 +408,7 @@ user:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
## Notes on Element Attributes ## Notes on element attributes
### How to use the style object ### How to use the style object

View File

@ -3,6 +3,13 @@ type: card
title: Picture entity card title: Picture entity card
sidebar_label: Picture entity sidebar_label: Picture entity
description: 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. description: 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.
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -12,7 +19,7 @@ The picture entity card displays an entity in the form of an image. Instead of i
Background changes according to the entity state. Background changes according to the entity state.
</p> </p>
{% include dashboard/edit_dashboard.md %} {% include dashboard/add_picture_to_card.md %}
## YAML configuration ## YAML configuration
@ -137,4 +144,5 @@ tap_action:
{% endraw %} {% endraw %}
The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure `allowlist_external_dirs` ([documentation](/docs/configuration/basic/)). The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure `allowlist_external_dirs` ([documentation](/integrations/homeassistant/#allowlist_external_dirs)).

View File

@ -3,6 +3,13 @@ type: card
title: "Picture glance card" title: "Picture glance card"
sidebar_label: Picture glance sidebar_label: Picture glance
description: "The picture glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog." description: "The picture glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The picture glance card shows an image and lets you place small icons of entity states on top of that card to control those entities from there. In the image below: the entities on the right allow toggle actions, the others show the more information dialog. The picture glance card shows an image and lets you place small icons of entity states on top of that card to control those entities from there. In the image below: the entities on the right allow toggle actions, the others show the more information dialog.
@ -12,7 +19,7 @@ The picture glance card shows an image and lets you place small icons of entity
Picture glance card for a living room. Picture glance card for a living room.
</p> </p>
{% include dashboard/edit_dashboard.md %} {% include dashboard/add_picture_to_card.md %}
## YAML configuration ## YAML configuration

View File

@ -1,8 +1,15 @@
--- ---
type: card type: card
title: "Picture Card" title: "Picture card"
sidebar_label: Picture sidebar_label: Picture
description: "The picture card allows you to set an image to use for navigation to various paths in your interface or to call a service." description: "The picture card allows you to set an image to use for navigation to various paths in your interface or to call a service."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The picture card allows you to set an image to use for navigation to various paths in your interface or to call a service. The picture card allows you to set an image to use for navigation to various paths in your interface or to call a service.
@ -12,7 +19,7 @@ The picture card allows you to set an image to use for navigation to various pat
Screenshot of the picture card. Screenshot of the picture card.
</p> </p>
{% include dashboard/edit_dashboard.md %} {% include dashboard/add_picture_to_card.md %}
## YAML configuration ## YAML configuration

View File

@ -3,6 +3,11 @@ type: card
title: "Plant status card" title: "Plant status card"
sidebar_label: Plant status sidebar_label: Plant status
description: "The plant status card is for all the lovely botanists out there." description: "The plant status card is for all the lovely botanists out there."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The plant status card is for all the lovely botanists out there. The plant status card is for all the lovely botanists out there.

View File

@ -0,0 +1,112 @@
---
type: view
title: Sections (experimental)
sidebar_label: Sections (experimental)
description: "Lets you organize your cards in sections on a grid."
description: "The panel view shows a single card in the full width of the screen."
related:
- docs: /dashboards/masonry/
title: Masonry view
- docs: /dashboards/sidebar/
title: Sidebar view
- docs: /dashboards/panel/
title: Panel view
- docs: /blog/2024/03/04/dashboard-chapter-1/
title: Dashboard chapter 1 blog post
- docs: /dashboards/cards/#adding-cards-to-your-dashboard
title: Adding cards to a view
- docs: /dashboards/views/#adding-a-view-to-a-dashboard
title: Adding a new view
---
The sections view lets you organize your cards in sections on a grid.
You can group cards without using horizontal or vertical stack cards.
<p class='img'>
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-example-dashboard.png" alt="A fully populated dashboard in Sections view layout"/>
A fully populated dashboard in Sections view layout
</p>
<div class='note notice'>
<p>The sections view was released beginning of March 2024 and is experimental! Do not build your daily dashboard on top of it yet! We are still collecting feedback.</p><br><p>It is not possible to migrate dashboards into sections view.</p>
</div>
## Creating a sections view
1. If you have multiple dashboards, in the left sidebar, select the dashboard to which you want to add the sections view.
2. Follow the steps on [adding a new view](/dashboards/views/#adding-a-view-to-a-dashboard).
- Under **View type**, select **Sections (experimental)**.
3. Select the maximum number of columns you want to see in the new sections view.
4. When you are done, select **Save**.
- You are now presented with a new, empty view.
- If you chose a background image, the page is filled with that image.
## Adding sections and cards to a sections view
Once you have created a sections view, you can populate it with sections and cards. The new section comes with one section to which you can directly add a card.
1. To add a card, select the **Add card** button.
- Follow the [steps on adding cards](/dashboards/cards/#adding-cards-to-your-dashboard).
![Add Section button](/images/dashboards/sections_view_add-card-or-section.png)
2. To add a new section, select the **Create section** button.
3. To edit the section title, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png" alt="Edit icon"/> button.
- If you leave the section title empty, this line will be hidden.
4. If you want this section to be visible only to specific users or under a certain condition, you can define those conditions:
- On the **Visibility** tab, select **Add condition**.
- Select the type of condition, and enter the parameters.
- If you define multiple conditions, the section is only shown when all conditions are met.
- If you did not define any conditions, the section is always shown, to all users.
![Define visibility](/images/dashboards/section-visibility.png)
## Deleting a section
1. To delete a section, go to the dashboard and in the top right corner, select the pencil icon.
2. Open the view with the section you want to delete.
3. Select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-trash.png" alt="Delete icon"/> button.
## Rearranging sections and cards
In the sections view, you can rearrange sections and cards by dragging them to a new location. This is not yet possible in other views.
1. To edit your dashboard, in the top right corner, select the pencil icon.
2. To rearrange sections, hold the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-move.png" alt="Move icon"/> button and move the card.
<p class='img'>
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-sections.gif" alt="Rearranging sections by dragging"/>
Rearranging sections by dragging
</p>
3. To rearrange cards, tap and hold the card and move it to your desired location.
<p class='img'>
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-cards.gif" alt="Rearranging cards by dragging"/>
Rearranging cards by dragging
</p>
## Show or hide section conditionally
You can choose to show or hide certain sections based on different conditions. The [available conditions](/dashboards/conditional/#card-conditions) are the same as that for the conditional card.
To edit the section visibility conditions, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png" alt="Edit icon"/> button and then click on the visibility tab.
## Check out the demo
Check out the demo from the March live stream on dashboards.
<lite-youtube videoid="XyBy0ckkiDU" videoStartAt="2047" videotitle="A Home-Approved Dashboard - Chapter 1: What about Grace?" posterquality="maxresdefault"></lite-youtube>
## About the sections view layout
To learn all about the design decisions and the grid layout used for the sections view, refer to the [Dashboard chapter 1 blog post](/blog/2024/03/04/dashboard-chapter-1/).
## YAML configuration
{% configuration %}
type:
required: false
description: "`sections`"
type: string
{% endconfiguration %}

View File

@ -3,6 +3,11 @@ type: card
title: "Sensor card" title: "Sensor card"
sidebar_label: Sensor sidebar_label: Sensor
description: "The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time." description: "The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time. The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time.

View File

@ -1,10 +1,16 @@
--- ---
type: card
title: "Shopping list card" title: "Shopping list card"
sidebar_label: Shopping list
description: "The shopping list card allows you to add, edit, check-off, and clear items from your shopping list." description: "The shopping list card allows you to add, edit, check-off, and clear items from your shopping list."
description: "The panel view shows a single card in the full width of the screen."
related:
- docs: /integrations/todo/
title: To-do list integration
- docs: /integrations/local_todo/
title: Local to-do integration
--- ---
Note: the shopping list card is no longer available as a card to add from the user interface. Use the [to-do list card](/dashboards/todo-list/) instead.
The shopping list card allows you to add, edit, check-off, and clear items from your shopping list. The shopping list card allows you to add, edit, check-off, and clear items from your shopping list.
<p class='img'> <p class='img'>
@ -39,7 +45,7 @@ theme:
### Examples ### Examples
Title Example: Title example:
```yaml ```yaml
type: shopping-list type: shopping-list

View File

@ -3,18 +3,30 @@ type: view
title: Sidebar view title: Sidebar view
sidebar_label: Sidebar sidebar_label: Sidebar
description: "The sidebar view has 2 columns, a wide one and a smaller one on the right." description: "The sidebar view has 2 columns, a wide one and a smaller one on the right."
related:
- docs: /dashboards/masonry/
title: Masonry view
- docs: /dashboards/panel/
title: Panel view
--- ---
The sidebar view has 2 columns, a wide one and a smaller one on the right. The sidebar view has 2 columns, a wide one and a smaller one on the right.
<p class='img'>
<img src='/images/dashboards/sidebar_view.png' alt='Screenshot of the sidebar view'>
Screenshot of the sidebar view used for the energy dashboard.
</p>
This view doesn't have support for badges. This view doesn't have support for badges.
To change a view to edit mode, or to change the location of a card, enable edit mode: You can set if a card should be placed in the main (left) column of the sidebar column (right), by selecting the arrow right or left arrow in the bar underneath the card.
Click the menu (three dots at the top right of the screen) and then **Edit Dashboard**.
You can set if a card should be placed in the main (left) column of the sidebar column (right), by pressing the arrow right or left arrow in the bar underneath the card. <p class='img'>
<img src='/images/dashboards/sidebar_view_move_card.png' alt='Screenshot showing how to move a card between sidebar and main view'>
Screenshot showing how to move a card between sidebar and main view.
</p>
On mobile all cards are rendered in 1 column and kept in the order of the cards in the config. On mobile, all cards are rendered in 1 column and kept in the order of the cards in the config.
## View config: ## View config:
@ -46,4 +58,4 @@ cards:
- media_player.lounge_room - media_player.lounge_room
view_layout: view_layout:
position: sidebar position: sidebar
``` ```

View File

@ -3,6 +3,11 @@ type: card
title: "Statistic card" title: "Statistic card"
sidebar_label: Statistic sidebar_label: Statistic
description: "The statistic card allows you to display a statistical value for an entity." description: "The statistic card allows you to display a statistical value for an entity."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -171,4 +176,4 @@ period:
minutes: -20 minutes: -20
seconds: -10 seconds: -10
stat_type: change stat_type: change
``` ```

View File

@ -3,6 +3,11 @@ type: card
title: "Statistics graph card" title: "Statistics graph card"
sidebar_label: Statistics graph sidebar_label: Statistics graph
description: "The statistics graph card allows you to display a graph with statistics data for each of the entities listed." description: "The statistics graph card allows you to display a graph with statistics data for each of the entities listed."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.
@ -17,7 +22,7 @@ Screenshot of the statistics graph card with none metered entities and `chart_ty
Screenshot of the statistics graph card with a metered entity and `chart_type` `bar`. Screenshot of the statistics graph card with a metered entity and `chart_type` `bar`.
</p> </p>
Statistics are gathered every 5 minutes for sensors that support it. It will either keep the `min`, `max`, and `mean` of a sensor's value for a specific hour or the `sum` for a metered entity. Statistics are gathered every 5 minutes and also hourly for sensors that support it. The 5-minute statistics will be retained for the duration set in the [recorder configuration](/integrations/recorder/#purge_keep_days), and hourly statistics will be retained indefinitely. It will either keep the <abbr title="Minimum">`min`</abbr>, <abbr title="Maximum">`max`</abbr>, and <abbr title="Average">`mean`</abbr> of a sensor's value for a specific hour or the <abbr title="Total">`sum`</abbr> for a metered entity.
If your sensor doesn't work with statistics, check [this](/more-info/statistics/). If your sensor doesn't work with statistics, check [this](/more-info/statistics/).

View File

@ -3,9 +3,14 @@ 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 entity, allowing you to change the temperature and mode of the entity."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The thermostat card gives control of your [climate](/integrations/#climate) entity, allowing you to change the temperature and mode of the entity. The thermostat card gives control of your [climate](/integrations/#climate) {% 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'>

View File

@ -3,9 +3,16 @@ type: card
title: "Tile card" title: "Tile card"
sidebar_label: Tile sidebar_label: Tile
description: "The tile card gives you a quick overview of your entity. The card allows you to toggle the entity, show the more-info dialog, or custom actions." description: "The tile card gives you a quick overview of your entity. The card allows you to toggle the entity, show the more-info dialog, or custom actions."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /dashboards/features/
title: Card features
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The tile card gives you a quick overview of your entity. The card allows you to toggle the entity and show the more info dialog. A badge is shown for some entities like the [climate](/integrations/climate) or [person](/integrations/person) entities. The tile card gives you a quick overview of your {% term entity %}. The card allows you to toggle the {% term entity %} and show the more info dialog. A badge is shown for some {% term entities %} like the [climate](/integrations/climate) or [person](/integrations/person) {% term entities %}.
<p class='img'> <p class='img'>
<img src='/images/dashboards/tile_card.png' alt='Screenshot of tile cards'> <img src='/images/dashboards/tile_card.png' alt='Screenshot of tile cards'>
@ -33,7 +40,7 @@ icon:
type: string type: string
color: color:
required: false required: false
description: Set the color when the entity is active. By default, the color is based on `state`, `domain`, and `device_class` of your entity. It accepts [color token](/dashboards/tile/#available-color-tokens) or hex color code. description: Set the color when the entity is active. By default, the color is based on `state`, `domain`, and `device_class` of your entity. It accepts [color token](/dashboards/tile/#available-colors) or hex color code.
type: string type: string
default: state default: state
show_entity_picture: show_entity_picture:
@ -126,6 +133,19 @@ features:
- return_home - return_home
``` ```
## Available color tokens ## Available colors
Some color tokens 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` and `white`. 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`.
## Reordering features
Some features of the tile card, such as the presets or the HVAC modes of a
thermostat, can show many buttons. While you can limit the buttons youd
like to see, they may not be in the desired order.
For your thermostat, that means you can reorder the HVAC modes or presets.
<p class='img'>
<img src="/images/blog/2024-05/tile-card-reorder-features.gif" alt=" Screen recording showing how you can now reorder the HVAC modes on the thermostat shown in a tile card."/>
You can now reorder the features of the tile card.
</p>

View File

@ -0,0 +1,74 @@
---
type: card
title: "To-do list card"
sidebar_label: To-do list
description: "The to-do list card allows you to add, edit, check-off, and clear items from your to-do list."
related:
- docs: /dashboards/dashboards/
title: Dashboards
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
- docs: /integrations/todo
title: To-do list integration documentation
- docs: /integrations/#to-do-list
title: List of to-do list integrations
- docs: /integrations/local_todo/
title: Local to-do integration
---
The to-do list card allows you to add, edit, check-off, and clear items from your to-do list.
<p class='img'>
<img src='/images/dashboards/todo-list_card_shopping-list.png' alt='Screenshot of the to-do list card'>
Screenshot of the to-do list card.
</p>
## Adding a to-do list card
1. [Add the card using the Add card button](/dashboards/cards/#adding-cards-to-your-dashboard).
- In the **By card** dialog, select the **To-do list** card.
2. In the **Entity** dropdown menu, select your list type.
- If it is your first time working with to-do lists, there is only **Shopping list** in the menu.
- This comes from the [shopping list integration](/integrations/shopping_list/), which is installed by default.
- This is the same **Shopping list** as the one on the **To-do list** dashboard (accessible via sidebar).
![To-do card, list entities](/images/dashboards/cards-todo.png).
3. The to-do list card can display lists from different [to-do list](/integrations/#to-do-list) integrations, such as **Bring!** or **Todoist**.
- If you don't see your desired to-do list entity, you need to add its integration first.
- Once you've added a to-do list integration, the lists are also available on the to-do list dashboard.
## YAML configuration
All options for this card can be configured via the user interface.
The following YAML options are available when you use YAML mode or just prefer to use YAML in the code editor in the UI.
{% configuration %}
type:
required: true
description: "`todo-list`"
type: string
entity:
required: true
description: The to-do entity to show
type: string
title:
required: false
description: Title of to-do list.
type: string
theme:
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/).
type: string
{% endconfiguration %}
### Examples
Title example:
```yaml
type: todo-list
entity: todo-list
title: todo list
```

View File

@ -3,6 +3,9 @@ type: card
title: "Vertical stack card" title: "Vertical stack card"
sidebar_label: Vertical stack sidebar_label: Vertical stack
description: "The vertical stack card allows you to group multiple cards so they always sit in the same column." description: "The vertical stack card allows you to group multiple cards so they always sit in the same column."
related:
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
The vertical stack card allows you to group multiple cards so they always sit in the same column. The vertical stack card allows you to group multiple cards so they always sit in the same column.
@ -71,3 +74,4 @@ cards:
<img src="/images/dashboards/vertical-horizontal-stack.png" alt="Create a grid layout using vertical and horizontal stack"> <img src="/images/dashboards/vertical-horizontal-stack.png" alt="Create a grid layout using vertical and horizontal stack">
Create a grid layout using vertical and horizontal stack. Create a grid layout using vertical and horizontal stack.
</p> </p>

View File

@ -3,6 +3,11 @@ type: card
title: "Weather forecast card" title: "Weather forecast card"
sidebar_label: Weather forecast sidebar_label: Weather forecast
description: "The weather forecast card displays the weather. Very useful to include on interfaces that people display on the wall." description: "The weather forecast card displays the weather. Very useful to include on interfaces that people display on the wall."
related:
- docs: /integrations/frontend/
title: Themes
- docs: /dashboards/cards/
title: Dashboard cards
--- ---
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.

4609
source/_data/countries.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,20 +3,30 @@
# Format is a list of terms, each term is a dictionary with the following keys: # Format is a list of terms, each term is a dictionary with the following keys:
# - term: The term to define (required) # - term: The term to define (required)
# - definition: The definition of the term (required) # - definition: The definition of the term (required)
# - excerpt: Short excerpt of the definition, overrides definition for tooltips (optional) # - excerpt: Short excerpt of the definition, overrides definition for tooltips
# (optional)
# - link: A URL to link to for more information (optional) # - link: A URL to link to for more information (optional)
# - aliases: A list of aliases for the term (optional) # - aliases: A list of aliases for the term (optional)
# #
- term: Action - term: Action
definition: |- definition: |-
Actions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called *sequence*. Actions are used in several places in Home Assistant. As part of a script or
Actions use service calls and/or scenes to interact with entities and cause these entities to do something. Actions can also include conditions and a delay. An action can call multiple services at the same time. For example, if your presence is detected in a room, an action may call one service to turn on a light and call another service to start playing music after a delay. automation, actions define what is going to happen once a trigger is
Actions are also used on the dashboard, for example as tap or hold action on a UI element. When triggered, the action calls a service. activated. In scripts, an action is called *sequence*. Actions use service
calls and/or scenes to interact with entities and cause these entities to do
something. Actions can also include conditions and a delay. An action can
call multiple services at the same time. For example, if your presence is
detected in a room, an action may call one service to turn on a light and
call another service to start playing music after a delay. Actions are also
used on the dashboard, for example as tap or hold action on a UI element.
When triggered, the action calls a service.
aliases: aliases:
- actions - actions
link: /docs/automation/action/ link: /docs/automation/action/
excerpt: > excerpt: >
Actions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called *sequence*. Actions are used in several places in Home Assistant. As part of a script or
automation, actions define what is going to happen once a trigger is
activated. In scripts, an action is called *sequence*.
- term: Add-on - term: Add-on
definition: >- definition: >-
Add-ons are additional standalone third-party software packages that can be Add-ons are additional standalone third-party software packages that can be
@ -28,21 +38,29 @@
installed on Home Assistant OS. installed on Home Assistant OS.
- term: Area - term: Area
definition: >- definition: >-
Locations within your home such as living room, dance floor, etc. An area in Home Assistant is a logical grouping of devices and entities that
Devices can be associated to an area for easier sorting and automatically are meant to match areas (or rooms) in the physical world: your home. For
generated cards, such as the [Area card](/dashboards/area/). example, the `living room` area groups devices and entities in your living
room. Areas allow you to target service calls at an entire group of devices.
For example, turning off all the lights in the living room. Locations within
your home such as living room, dance floor, etc. Areas can be assigned to
floors. Areas can also be used for automatically generated cards, such as
the [Area card](/dashboards/area/).
excerpt: >- excerpt: >-
Places within your home such as rooms, spaces, etc. An area in Home Assistant is a logical grouping of devices and entities that
are meant to match areas (or rooms) in the physical world: your home. For
example, the `living room` area groups devices and entities in your living
room.
aliases: aliases:
- areas - areas
- term: Automation - term: Automation
definition: >- definition: >-
Automations connect one or more triggers to one or more actions in a Automations connect one or more triggers to one or more actions in a 'when
'when trigger then do action' fashion with additional optional conditions. trigger then do action' fashion with additional optional conditions. For
For example, an automation might connect the trigger 'sunset' to the action example, an automation might connect the trigger 'sunset' to the action
'turn the lights on' but only if the condition 'someone is home' is met. 'turn the lights on' but only if the condition 'someone is home' is met.
Pre-made automations for common use-cases are available via Pre-made automations for common use-cases are available via [the blueprints
[the blueprints feature](/docs/automation/using_blueprints/). feature](/docs/automation/using_blueprints/).
excerpt: >- excerpt: >-
Automations in Home Assistant allow you to automatically respond to things Automations in Home Assistant allow you to automatically respond to things
that happen in and around your home. that happen in and around your home.
@ -51,14 +69,14 @@
- automations - automations
- term: Backup - term: Backup
definition: >- definition: >-
Home Assistant has built-in functionality to create files containing a copy of Home Assistant has built-in functionality to create files containing a copy
your configuration. This can be used to restore your Home Assistant as well of your configuration. This can be used to restore your Home Assistant as
as migrate to a new system. The backup feature is available on some installation well as migrate to a new system. The backup feature is available on some
types. installation types.
link: /integrations/backup/ link: /integrations/backup/
excerpt: >- excerpt: >-
Home Assistant has built-in functionality to create files containing a copy of Home Assistant has built-in functionality to create files containing a copy
your configurations. This is available on certain installation types. of your configurations. This is available on certain installation types.
aliases: aliases:
- backups - backups
- term: Binary sensor - term: Binary sensor
@ -68,41 +86,92 @@
link: /integrations/binary_sensor link: /integrations/binary_sensor
- term: Blueprint - term: Blueprint
definition: >- definition: >-
A blueprint is a script or automation configuration with certain parts marked as configurable. This allows users to create multiple scripts or automations based on the same blueprint, with each having its own configuration-specific settings. Blueprints are shared by the community on the [blueprints exchange](https://community.home-assistant.io/c/blueprints-exchange/53) in the forum. A blueprint is a script or automation configuration with certain parts
marked as configurable. This allows users to create multiple scripts or
automations based on the same blueprint, with each having its own
configuration-specific settings. Blueprints are shared by the community on
the [blueprints
exchange](https://community.home-assistant.io/c/blueprints-exchange/53) in
the forum.
link: /docs/blueprint/ link: /docs/blueprint/
excerpt: >- excerpt: >-
A blueprint is a script or automation configuration with certain parts marked as configurable. This allows users to create multiple scripts or automations based on the same blueprint, with each having its own configuration-specific settings. A blueprint is a script or automation configuration with certain parts
marked as configurable. This allows users to create multiple scripts or
automations based on the same blueprint, with each having its own
configuration-specific settings.
aliases: aliases:
- blueprints - blueprints
- term: Category
definition: >-
A category is an organization tool that allows grouping items in a table.
Like labels, categories allow grouping irrespective of the items' physical
location. For example, on the automations page, you can create the
categories “Notifications” or “NFC tags” to view your automations grouped or
filtered. Categories are unique for each table. The automations page can
have different categories than the scene, scripts, or helpers settings page.
aliases:
- categories
- term: Commissioning
definition: >-
In the context of Matter devices, *commissioning* is the process of adding a
device to a Matter controller. It is the equivalent of pairing a device in
Zigbee or Z-Wave. Commissioning is done by scanning a QR code or entering a
code manually. The code is printed on the device or its packaging. The code
contains information about the device, such as its type, manufacturer, and
serial number. The controller uses this information to identify the device
and to download the required information to control the device. For example,
the controller downloads the device's capabilities, such as the supported
commands and the available attributes. The controller also downloads the
device's configuration, such as the device's name and location.
link: /integrations/matter/
aliases:
- commission
excerpt: >
In the context of Matter devices, *commissioning* is the process of adding a
device to a Matter controller. It is the equivalent of pairing a device in
Zigbee or Z-Wave.
- term: Component - term: Component
definition: >- definition: >-
Better known as: Integrations. Integrations used to be known as components. Better known as: Integrations. Integrations used to be known as components.
- term: Condition - term: Condition
definition: >- definition: >-
Conditions are an optional part of an automation that will prevent an Conditions are an optional part of an automation that will prevent an action
action from firing if they are not met. from firing if they are not met.
link: /docs/scripts/conditions/ link: /docs/scripts/conditions/
aliases: aliases:
- conditions - conditions
- term: Configuration file
aliases:
- configuration.yaml
- "`configuration.yaml`"
definition: >-
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI.
link: /docs/configuration/
- term: Cover - term: Cover
definition: >- definition: >-
Covers are devices such as blinds, garage doors, etc that can be opened Covers are devices such as blinds, garage doors, etc that can be opened and
and closed and optionally set to a specific position. closed and optionally set to a specific position.
link: /integrations/cover link: /integrations/cover
- term: Customize - term: Customize
definition: >- definition: >-
Customization allows you to overwrite the default parameters of your Customization allows you to overwrite the default parameters of your devices
devices in the configuration. in the configuration.
- term: Device - term: Device
definition: |- definition: |-
A device is a model representing a physical or logical unit that contains entities. A device is a model representing a physical or logical unit that contains
**Example for a device as a physical unit** entities. **Example for a device as a physical unit** A smart plug named
A smart plug named 'Coffee machine' which provides 2 entities: a `switch` entity to turn power on or off ('Coffee machine power switch') and a `sensor` entity for power monitoring ('Coffee machine power sensor'). 'Coffee machine' which provides 2 entities: a `switch` entity to turn power
**Example for a device as a logical unit** on or off ('Coffee machine power switch') and a `sensor` entity for power
An ecobee thermostat with 4 room sensors. This thermostat is seen as 5 devices in Home Assistant: 1 device for the thermostat with 4 sensors, and 1 device for each room sensor. Each device can be in a different area and may have more than one input or output within that area. monitoring ('Coffee machine power sensor'). **Example for a device as a
Devices have properties such as ID, manufacturer, name, model, hardware version, firmware version, connections, etc. logical unit** An ecobee thermostat with 4 room sensors. This thermostat is
seen as 5 devices in Home Assistant: 1 device for the thermostat with 4
sensors, and 1 device for each room sensor. Each device can be in a
different area and may have more than one input or output within that area.
Devices have properties such as ID, manufacturer, name, model, hardware
version, firmware version, connections, etc.
excerpt: > excerpt: >
A device is a model representing a physical or logical unit that contains entities. A device is a model representing a physical or logical unit that contains
entities.
aliases: aliases:
- devices - devices
- term: Device tracker - term: Device tracker
@ -115,35 +184,43 @@
they are discovered. they are discovered.
- term: Domain - term: Domain
definition: >- definition: >-
Each integration in Home Assistant has a unique identifier: Each integration in Home Assistant has a unique identifier: a domain. All of
a domain. All of the entities and services available in Home Assistant the entities and services available in Home Assistant are provided by
are provided by integrations and thus belong to such a domain. The first integrations and thus belong to such a domain. The first part of the entity
part of the entity or service, before the `.` shows the domain they belong or service, before the `.` shows the domain they belong to. For example
to. For example `light.kitchen` is an entity in the `light` domain from `light.kitchen` is an entity in the `light` domain from the [light
the [light integration](/integrations/light), while `hue.activate_scene` integration](/integrations/light), while `hue.activate_scene` is the
is the `activate_scene` service for the `hue` domain which belongs to `activate_scene` service for the `hue` domain which belongs to the [Hue
the [Hue integration](/integrations/hue). integration](/integrations/hue).
excerpt: > excerpt: >
Each integration in Home Assistant has a unique identifier: The domain. Each integration in Home Assistant has a unique identifier: The domain. It
It is often shown as the first part (before the dot) of entity IDs. is often shown as the first part (before the dot) of entity IDs.
aliases: aliases:
- domains - domains
- term: Entity - term: Entity
definition: |- definition: |-
An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. Entities have states. An entity represents a sensor, actor, or function in Home Assistant.
**Example for entities as part of a device** Entities are used to monitor physical properties or to control other
A combined temperature and humidity sensor device provides two sensor entities. One for temperature (e.g. `sensor.temperature` with state `21.0` and unit `°C`) and one for humidity entities. An entity is usually part of a device or a service. Entities have
(e.g. `sensor.humidity` with state `65.4` and unit `%`). states. **Example for entities as part of a device** A combined temperature
**Example for entities as part of a service** and humidity sensor device provides two sensor entities. One for temperature
A weather service that provides 3 entities: wind speed, air pressure, and ozon level. (e.g. `sensor.temperature` with state `21.0` and unit `°C`) and one for
**Example of an entity used for control** humidity (e.g. `sensor.humidity` with state `65.4` and unit `%`). **Example
A fan that is turned on when the temperature exceeds 30&nbsp;°C. for entities as part of a service** A weather service that provides 3
There are standardized types of entities for common integrations such as light, switch, camera, sensor, fan, or vacuum. entities: wind speed, air pressure, and ozon level. **Example of an entity
Some entities are not part of a device or service. Examples of standalone entities are automation, script, scene entities, and helper entities (e.g. input helpers). used for control** A fan that is turned on when the temperature exceeds
Most properties of entities are related to the state. Entities have optional attributes such as friendly name, unit of measurement, and an icon or picture that can be displayed in the frontend. 30&nbsp;°C. There are standardized types of entities for common integrations
such as light, switch, camera, sensor, fan, or vacuum. Some entities are not
part of a device or service. Examples of standalone entities are automation,
script, scene entities, and helper entities (e.g. input helpers). Most
properties of entities are related to the state. Entities have optional
attributes such as friendly name, unit of measurement, and an icon or
picture that can be displayed in the frontend.
link: /docs/configuration/state_object/ link: /docs/configuration/state_object/
excerpt: > excerpt: >
An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. An entity represents a sensor, actor, or function in Home Assistant.
Entities are used to monitor physical properties or to control other
entities. An entity is usually part of a device or a service.
aliases: aliases:
- entities - entities
- term: Event - term: Event
@ -152,10 +229,28 @@
link: /docs/configuration/events/ link: /docs/configuration/events/
aliases: aliases:
- events - events
- term: Floor
definition: >-
A floor in Home Assistant is a logical grouping of areas that are meant to
match the physical floors in your home. Devices & entities are not assigned
to floors but to areas. A floor has properties such as: Floor ID, name,
aliases (for use in assistants), an icon, and a floor level. Some of these
properties are optional. The level number can be negative to reflect floors
below the basement. Floors can be used in automations and scripts as a
target for actions. For example, to turn off all the lights on the
downstairs floor when you go to bed.
excerpt: >-
A floor in Home Assistant is a logical grouping of areas that are meant to
match the physical floors in your home. Devices & entities are not assigned
to floors but to areas. Floors can be used in automations and scripts as a
target for actions. For example, to turn off all the lights on the
downstairs floor when you go to bed.
aliases:
- floors
- term: Frontend - term: Frontend
definition: >- definition: >-
The frontend is a necessary component for the UI, it is also where you The frontend is a necessary component for the UI, it is also where you can
can define your themes. define your themes.
link: /integrations/frontend/ link: /integrations/frontend/
- term: Group - term: Group
definition: >- definition: >-
@ -165,66 +260,90 @@
- groups - groups
- term: HASS - term: HASS
definition: >- definition: >-
HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home
Home Assistant. It is also the command-line tool. Assistant. It is also the command-line tool.
- term: HassOS - term: HassOS
definition: >- definition: >-
Another name for Home Assistant Operating System Another name for Home Assistant Operating System
link: /hassio/installation/ link: /hassio/installation/
- term: Home Assistant Container
definition: >-
Home Assistant Container is a standalone container-based installation of
Home Assistant Core. Any [OCI](https://opencontainers.org/) compatible
runtime can be used, but the documentation focus is on Docker.
link: /installation/#advanced-installation-methods
- term: Home Assistant Core - term: Home Assistant Core
definition: >- definition: >-
Home Assistant Core is a Python program. It can be run on various operating Home Assistant Core is the Python program at the heart of Home Assistant. It
systems and is the basis for Home Assistant. When people are talking about is part of all of the four installation types and can be run on various
Home Assistant Core they usually refer to a standalone installation method operating systems. It can be installed standalone (without Home Assistant
that can be installed using a Virtual Environment or Docker. Home Assistant Supervisor), using a Virtual Environment (typically referred to as Home
Core does not use the Home Assistant Supervisor. Assistant Core installation method) or as a container using Docker
(typically referred to as Home Assistant Container installation method).
link: /installation/#advanced-installation-methods
excerpt: > excerpt: >
Home Assistant Core is the hart of Home Assistant itself. It is a Python Home Assistant Core is the heart of Home Assistant itself. It is a Python
program that powers every installation type, but can be installed standalone. program that powers every installation type, but can be installed
standalone.
- term: Home Assistant Supervised - term: Home Assistant Supervised
definition: >- definition: >-
Home Assistant Supervised is a full UI managed home automation ecosystem that Home Assistant Supervised is a full UI managed home automation ecosystem
runs Home Assistant, the Home Assistant Supervisor and add-ons. It comes that runs the Home Assistant Core program, the Home Assistant Supervisor and
pre-installed on Home Assistant OS, but can be installed on any Linux system. add-ons. It comes pre-installed on Home Assistant OS, but can be installed
It leverages Docker, which is managed by the Home Assistant Supervisor. standalone on Debian Linux systems. It leverages Docker, which is managed by
the Home Assistant Supervisor.
excerpt: > excerpt: >
Home Assistant Supervised is the full Home Assistant ecosystem, without the Home Assistant Supervised is the full Home Assistant ecosystem, without the
Home Assistant Operating System. Home Assistant Operating System.
link: /installation/#advanced-installation-methods
- 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
installation, taking care of installing and updating Home Assistant, installation, taking care of installing and updating Home Assistant,
add-ons, itself and, if used, updating the Home Assistant Operating System. add-ons, itself, and, if used, updating the Home Assistant Operating System.
link: /installation/#advanced-installation-methods
- term: Home Assistant Operating System - term: Home Assistant Operating System
definition: >- definition: >-
Home Assistant OS, the Home Assistant Operating System, is an embedded, Home Assistant OS, the Home Assistant Operating System, is an embedded,
minimalistic, operating system designed to run the Home Assistant ecosystem minimalistic, operating system designed to run the Home Assistant ecosystem
on single board computers (like the Raspberry Pi) or Virtual Machines. on single board computers (like the Raspberry Pi) or Virtual Machines. It
The Home Assistant Supervisor can keep it up to date, removing the need for includes Home Assistant Core, the Home Assistant Supervisor, and supports
you to manage an operating system. 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
the recommended installation method for most users.
excerpt: > excerpt: >
Home Assistant OS, the Home Assistant Operating System, is an embedded, Home Assistant OS, the Home Assistant Operating System, is an embedded,
minimalistic, operating system designed to run the Home Assistant ecosystem. minimalistic, operating system designed to run the Home Assistant ecosystem.
It is the recommended installation method for most users.
link: /installation/#advanced-installation-methods
- term: Host - term: Host
definition: >- definition: >-
A device that can communicate with other devices on a network. During setup and configuration, A device that can communicate with other devices on a network. During setup
an input requesting a **Host** typically refers to a device's network address so that and configuration, an input requesting a **Host** typically refers to a
Home Assistant can attempt to connect to it. This may be in the form of a hostname, URL, device's network address so that Home Assistant can attempt to connect to
IP address or some other type of network identifier. If you do not know the hostname or IP address of a device, you can find it in your router's webinterface. For example, if your device is connected wirelessly, somewhere there is a page listing all the devices that are connected to your network. It depends on your router, where exactly this page is. It could be under **Network** > **Wireless**. it. This may be in the form of a hostname, URL, IP address or some other
type of network identifier. If you do not know the hostname or IP address of
a device, you can find it in your router's webinterface. For example, if
your device is connected wirelessly, somewhere there is a page listing all
the devices that are connected to your network. It depends on your router,
where exactly this page is. It could be under **Network** > **Wireless**.
excerpt: >- excerpt: >-
A device that participates in your network. If asked for the host, enter either the device's IP address or host name. If you don't know those, check the list of hosts in your router. A device that participates in your network. If asked for the host, enter
either the device's IP address or host name. If you don't know those, check
the list of hosts in your router.
link: https://en.wikipedia.org/wiki/Host_(network) link: https://en.wikipedia.org/wiki/Host_(network)
aliases: aliases:
- hosts - hosts
- term: Integration - term: Integration
definition: >- definition: >-
Integrations connect and integrate Home Assistant with devices, services, Integrations connect and integrate Home Assistant with devices, services,
and more. They contain all the logic to handle and more. They contain all the logic to handle vendor- and device-specific
vendor- and device-specific implementations, such as authentication or implementations, such as authentication or specific protocols. The
specific protocols. The integration brings such device-specific elements into Home Assistant in a standardized integration brings such device-specific elements into Home Assistant in a
way. For example, the [Hue](/integrations/hue) integration integrates standardized way. For example, the [Hue](/integrations/hue) integration
the Philips Hue bridge and its connected bulbs into Home Assistant, making integrates the Philips Hue bridge and its connected bulbs into Home
them available as Home Assistant light entities you can control. Assistant, making them available as Home Assistant light entities you can
control.
excerpt: > excerpt: >
Integrations connect and integrate Home Assistant with your devices, Integrations connect and integrate Home Assistant with your devices,
services, and more. services, and more.
@ -233,17 +352,40 @@
- integrations - integrations
- term: Intent - term: Intent
definition: >- definition: >-
Intent is a term used with voice assistants. The intent is what Home Assistant thinks you want it to do when it extracts a command from your voice or text utterance. Currently, the following intents are supported out of the box: HassTurnOn, HassTurnOff, HassGetState, and HassLightSet. Intent is a term used with voice assistants. The intent is what Home
These intents allow you to turn things on or off, inquire about a state, or change the brightness or color of a light. Assistant thinks you want it to do when it extracts a command from your
voice or text utterance. Currently, the following intents are supported out
of the box: HassTurnOn, HassTurnOff, HassGetState, and HassLightSet. These
intents allow you to turn things on or off, inquire about a state, or change
the brightness or color of a light.
excerpt: > excerpt: >
Intent is a term used with voice assistants. The intent is what Home Assistant thinks you want it to do when it extracts a command from your voice or text utterance. Intent is a term used with voice assistants. The intent is what Home
Assistant thinks you want it to do when it extracts a command from your
voice or text utterance.
link: https://developers.home-assistant.io/docs/intent_builtin link: https://developers.home-assistant.io/docs/intent_builtin
aliases: aliases:
- Intents - Intents
- term: Label
definition: >-
Labels in Home Assistant allow grouping elements irrespective of their
physical location or type. Labels can be assigned to areas, devices,
entities, automations, scenes, scripts, and helpers. Labels can be used in
automations and scripts as a target for actions and services. Labels can
also be used to filter data. For example, you can filter the list of devices
to show only devices with the label `heavy energy usage` or turn these
devices off when there is not a lot of solar energy available.
excerpt: >-
Labels in Home Assistant allow grouping elements irrespective of their
physical location or type. Labels can be assigned to areas, devices,
entities, automations, scenes, scripts, and helpers. Labels can be used in
automations and scripts as a target for actions and services. Labels can
also be used to filter data.
aliases:
- labels
- term: Lovelace - term: Lovelace
definition: >- definition: >-
Lovelace is the original code name of the UI that is now known as Lovelace is the original code name of the UI that is now known as [Home
[Home Assistant dashboards](/dashboards). Assistant dashboards](/dashboards).
- term: Light - term: Light
definition: >- definition: >-
A light has a brightness you can control, and optionally color temperature A light has a brightness you can control, and optionally color temperature
@ -251,9 +393,17 @@
link: /integrations/light link: /integrations/light
- term: Matter - term: Matter
definition: >- definition: >-
Matter is an open-source standard that defines how to control smart home devices on a Wi-Fi or Thread network. The aim of the standard is to improve security and to make devices interoperable across vendors, replacing proprietary protocols for smart home ecosystems. Unlike other standards, Matter allows joining the same device to multiple controllers. For example, you can add a light to Google Home, Apple Home, and Home Assistant at the same time. A bridge device can be used to connect devices running on other smart home technologies such as Zigbee or Z-Wave. Matter is an open-source standard that defines how to control smart home
devices on a Wi-Fi or Thread network. The aim of the standard is to improve
security and to make devices interoperable across vendors, replacing
proprietary protocols for smart home ecosystems. Unlike other standards,
Matter allows joining the same device to multiple controllers. For example,
you can add a light to Google Home, Apple Home, and Home Assistant at the
same time. A bridge device can be used to connect devices running on other
smart home technologies such as Zigbee or Z-Wave.
excerpt: > excerpt: >
Matter is an open-source standard that defines how to control smart home devices on a Wi-Fi or Thread network. Matter is an open-source standard that defines how to control smart home
devices on a Wi-Fi or Thread network.
link: /integrations/matter link: /integrations/matter
- term: Notification - term: Notification
definition: >- definition: >-
@ -272,8 +422,8 @@
Platforms are building blocks provided by some integrations to be used by Platforms are building blocks provided by some integrations to be used by
other integrations. For example, the [Light](/integrations/light) other integrations. For example, the [Light](/integrations/light)
integration provides the `light platform` that is utilized by all integration provides the `light platform` that is utilized by all
integrations providing `light` entities such integrations providing `light` entities such as e.g.
as e.g. [Hue](/integrations/hue). [Hue](/integrations/hue).
excerpt: > excerpt: >
Platforms are building blocks provided by some integrations to be used by Platforms are building blocks provided by some integrations to be used by
other integrations. other integrations.
@ -283,78 +433,97 @@
- term: Reload - term: Reload
definition: >- definition: >-
Applies the changes made to the Home Assistant configuration files. Changes Applies the changes made to the Home Assistant configuration files. Changes
are normally automatically updated. However, changes made outside of the front are normally automatically updated. However, changes made outside of the
end will not be reflected in Home Assistant and require a reload. front end will not be reflected in Home Assistant and require a reload. To
To perform a manual reload, go to **Settings** > **System** > perform a manual reload, go to **Settings** > **System** > **Restart Home
**Restart Home Assistant** (top right) > **Quick reload**. More granular Assistant** (top right) > **Quick reload**. If you do not see the **Quick
reload options are available in *YAML configuration reloading* section reload** option in the menu, you need to enable **Advanced mode** in your
in **Developer tools** > **YAML**. user settings. More granular reload options are available in *YAML
configuration reloading* section in **Developer tools** > **YAML**.
excerpt: > excerpt: >
Applies the changes made to Home Assistant configuration files. Changes are normally Applies the changes made to Home Assistant configuration files. Changes are
automatically updated. However, changes made outside of the front normally automatically updated. However, changes made outside of the front
end will not be reflected in Home Assistant and require a reload. end will not be reflected in Home Assistant and require a reload.
- term: Scene - term: Scene
definition: >- definition: >-
Scenes capture the states you want certain entities to be. For example, Scenes capture the states you want certain entities to be. For example, a
a scene can specify that light A should be turned on and light B should scene can specify that light A should be turned on and light B should be
be bright red. bright red.
link: /integrations/scene/ link: /integrations/scene/
aliases: aliases:
- scenes - scenes
- term: Script - term: Script
definition: > definition: >
Scripts are components that allow users to specify a sequence of actions Scripts are components that allow users to specify a sequence of actions to
to be executed by Home Assistant when turned on. be executed by Home Assistant when turned on.
link: /docs/scripts/ link: /docs/scripts/
aliases: aliases:
- scripts - scripts
- term: Sensor - term: Sensor
definition: >- definition: >-
Sensors return information about a thing, for instance the level of water Sensors return information about a thing, for instance the level of water in
in a tank. a tank.
link: /integrations/sensor/ link: /integrations/sensor/
aliases: aliases:
- sensors - sensors
- term: Selector - term: Selector
definition: >- definition: >-
Selectors are components for the user interface. Some selectors can, Selectors are components for the user interface. Some selectors can, for
for example, show a toggle button to turn something on or off, while another example, show a toggle button to turn something on or off, while another
select can filter a list of devices to show only devices that have select can filter a list of devices to show only devices that have
motion-sensing capabilities. motion-sensing capabilities.
excerpt: > excerpt: >
Selectors are components for the user interface. Like toggle, dropdown, Selectors are components for the user interface. Like toggle, dropdown, and
and more. more.
link: /docs/blueprint/selectors/ link: /docs/blueprint/selectors/
aliases: aliases:
- selectors - selectors
- term: Service - term: Service
definition: |- definition: |-
The term service has 2 meanings in Home Assistant: The term service has 2 meanings in Home Assistant: **The information
**The information service** service** For example, the municipal waste management service that provides
For example, the municipal waste management service that provides entities for organic, paper, and packaging waste. In terms of functionality, the information service is like a device. It is called *service* to avoid confusion, as it does not come with a piece of hardware. entities for organic, paper, and packaging waste. In terms of functionality,
**The software function that interacts with targets to make something happen** the information service is like a device. It is called *service* to avoid
A service carries out one specific task, for example: turning on the light in the living room or sending a notification to a mobile phone. confusion, as it does not come with a piece of hardware. **The software
A service has targets and data. Service targets are: areas, devices, and entities. Service data carries the information required to define the desired state change in the target. For example, the target, together with brightness 150 and RGB color `[255,0,0]`, or the message “Your coffee is ready”. function that interacts with targets to make something happen** A service
Services can be used in, for example, automation, scripts, dashboards, or voice commands to control your home. carries out one specific task, for example: turning on the light in the
Home Assistant provides a series of predefined services, such as `homeassistant.turn_on`, `homeassistant.toggle`, or `homeassistant.reload`. living room or sending a notification to a mobile phone. A service has
targets and data. Service targets are: areas, devices, and entities. Service
data carries the information required to define the desired state change in
the target. For example, the target, together with brightness 150 and RGB
color `[255,0,0]`, or the message “Your coffee is ready”. Services can be
used in, for example, automation, scripts, dashboards, or voice commands to
control your home. Home Assistant provides a series of predefined services,
such as `homeassistant.turn_on`, `homeassistant.toggle`, or
`homeassistant.reload`.
excerpt: > excerpt: >
A service carries out one specific task, for example: turn on the light in the A service carries out one specific task, for example: turn on the light in
living room. A service has targets and data and can be called by actions, a the living room. A service has targets and data and can be called by
dashboard, or via voice command. actions, a dashboard, or via voice command.
link: /docs/scripts/service-calls/ link: /docs/scripts/service-calls/
aliases: aliases:
- services - services
- term: State - term: State
definition: |- definition: |-
The state holds the information of interest of an entity. For example, if a light is on or off, the current temperature, or the amount of energy used. The data type of state is `string` (a textual value). Entities store 2 timestamps related to the state: `last_updated` and `last_changed`. Each entity has exactly one state and the state only holds one value at a time. However, entities can store attributes related to that state. For example, the state of a light is _on_, and the related state attributes could be its current brightness and color values. The state holds the information of interest of an entity. For example, if a
State changes can be used as the source of triggers. The current state can be used in conditions. light is on or off, the current temperature, or the amount of energy used.
The data type of state is `string` (a textual value). Entities store 2
timestamps related to the state: `last_updated` and `last_changed`. Each
entity has exactly one state and the state only holds one value at a time.
However, entities can store attributes related to that state. For example,
the state of a light is _on_, and the related state attributes could be its
current brightness and color values. State changes can be used as the source
of triggers. The current state can be used in conditions.
link: /docs/configuration/state_object/ link: /docs/configuration/state_object/
aliases: aliases:
- states - states
excerpt: > excerpt: >
The state holds the information of interest of an entity, for example, if a light is on or off. Each entity has exactly one state and the state only holds one value at a time. However, entities can store attributes related to that state such as brightness, color, or a unit of measurement. The state holds the information of interest of an entity, for example, if a
light is on or off. Each entity has exactly one state and the state only
holds one value at a time. However, entities can store attributes related to
that state such as brightness, color, or a unit of measurement.
- term: Switch - term: Switch
definition: >- definition: >-
Switches are things that have two states you can select between, such as Switches are things that have two states you can select between, such as
@ -371,14 +540,37 @@
- term: Thread - term: Thread
definition: >- definition: >-
Thread is a low-power mesh networking standard that is specifically designed for smart home applications. It is a protocol that defines how devices communicate. *Mesh* topology means that the devices can communicate with each other directly, without going through a central controller first. Thread uses the same radio frequency (RF) technology as Zigbee, but provides IP connectivity similar to Wi-Fi. Unlike Zigbee, Thread does not specify how to control devices. How Thread-enabled devices are controlled is specified in a higher level protocol such as HomeKit or Matter. Thread is a low-power mesh networking standard that is specifically designed
for smart home applications. It is a protocol that defines how devices
communicate. *Mesh* topology means that the devices can communicate with
each other directly, without going through a central controller first.
Thread uses the same radio frequency (RF) technology as Zigbee, but provides
IP connectivity similar to Wi-Fi. Unlike Zigbee, Thread does not specify how
to control devices. How Thread-enabled devices are controlled is specified
in a higher level protocol such as HomeKit or Matter.
link: /integrations/thread/ link: /integrations/thread/
excerpt: > excerpt: >
Thread is a low-power mesh networking standard that is specifically designed for smart home applications. It is a protocol that defines how devices communicate. Thread is a low-power mesh networking standard that is specifically designed
for smart home applications. It is a protocol that defines how devices
communicate.
- term: Thread border router
definition: >-
A Thread border router forwards data packets between your local network and
the Thread network. This enables smart home devices within a Thread network
to communicate with IPv6-capable devices in your local network. A Thread
border router is connected to your network either via Wi-Fi or Ethernet and
uses its radio frequency (RF) radio to communicate with the Thread mesh
network. In case of Matter, the data that is forwarded is encrypted.
Examples of Thread border routers are the Nest Hub (2nd gen), the HomePod
mini, and the Home Assistant SkyConnect together with the OpenThread Border
Router add-on.
link: /integrations/thread/#about-thread-border-routers
aliases:
- Thread border routers
- term: Trigger - term: Trigger
definition: >- definition: >-
A trigger is a set of values or conditions of a platform that are defined A trigger is a set of values or conditions of a platform that are defined to
to cause an automation to run. cause an automation to run.
link: /docs/automation/trigger/ link: /docs/automation/trigger/
aliases: aliases:
- triggers - triggers
@ -388,21 +580,21 @@
TTS (text-to-speech) allows Home Assistant to talk to you. TTS (text-to-speech) allows Home Assistant to talk to you.
link: /integrations/tts/ link: /integrations/tts/
- term: Valve - term: Valve
definition: >- definition: >-
Valves are devices to control the flow of liquids and gases. All valves in Home Assistant can be opened Valves are devices to control the flow of liquids and gases. All valves in
and closed. Some valves can also be set to a specific position. Home Assistant can be opened and closed. Some valves can also be set to a
specific position.
link: /integrations/valve link: /integrations/valve
- term: Variables - term: Variables
definition: >- definition: >-
Variables are used to store values in memory that can be processed Variables are used to store values in memory that can be processed for
for example, in a script. example, in a script.
link: /docs/scripts/#variables link: /docs/scripts/#variables
- term: Zone - term: Zone
definition: >- definition: >-
Zones are areas that can be used for presence detection. Zones are areas that can be used for presence detection.
link: /integrations/zone/ link: /integrations/zone/
aliases: aliases:
- zones - zones

View File

@ -23,12 +23,12 @@ For the moment, other user accounts will have the same access as the owner accou
</div> </div>
<div class="note"> <div class="note">
If you want to manage users and you're an owner but you do not see "Users" in your main configuration menu, make sure that "Advanced Mode" is enabled for your user in your profile. If you want to manage users and you're an owner but you do not see "Users" in your main configuration menu, make sure that **Advanced Mode** is enabled for your user in your profile.
</div> </div>
### Your account profile ### Your account profile
Once you're logged in, you can see the details of your account at the _Profile_ page by clicking on the circular at the very bottom of the sidebar. Once you're logged in, you can see the details of your account on the {% my profile title="**User profile**" %} page by selecting on the circular at the very bottom of the sidebar.
<img src='/images/docs/authentication/profile.png' alt='Screenshot of the profile page' style='border: 0;box-shadow: none;'> <img src='/images/docs/authentication/profile.png' alt='Screenshot of the profile page' style='border: 0;box-shadow: none;'>
@ -38,8 +38,15 @@ You can:
- Enable or disable [multi-factor authentication](/docs/authentication/multi-factor-auth/). - Enable or disable [multi-factor authentication](/docs/authentication/multi-factor-auth/).
- Delete _Refresh Tokens_. These are created when you log in from a device. Delete them if you want to force the device to log out. - Delete _Refresh Tokens_. These are created when you log in from a device. Delete them if you want to force the device to log out.
- Create [Long Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) so scripts can securely interact with Home Assistant. - Create [Long Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) so scripts can securely interact with Home Assistant.
- Define language and other locale settings.
- Log out of Home Assistant. - Log out of Home Assistant.
<div class="note">
Unused refresh tokens will be automatically removed. A refresh token is considered unused if it has not been used for a login within 90 days. If you need a permanent token, then we recommend using [Long Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token).
</div>
### Securing your login ### Securing your login
_Make sure to choose a secure password!_ At some time in the future, you will probably want to access Home Assistant from outside your local network. This means you are also exposed to random black-hats trying to do the same. Treat the password like the key to your house. _Make sure to choose a secure password!_ At some time in the future, you will probably want to access Home Assistant from outside your local network. This means you are also exposed to random black-hats trying to do the same. Treat the password like the key to your house.
@ -100,7 +107,3 @@ This will allow you to open Home Assistant at `http://homeassistant.home:8123/`
### Stuck on loading data ### Stuck on loading data
Some ad blocking software, such as Wipr, also blocks WebSockets. If you're stuck on the Loading data screen, try disabling your ad blocker. Some ad blocking software, such as Wipr, also blocks WebSockets. If you're stuck on the Loading data screen, try disabling your ad blocker.
### Migrating from pre 0.77
If you were using the authentication system before 0.77, you'd likely have `auth:` and `auth_providers:` defined. You'll need to remove these and let Home Assistant [handle it automatically](/docs/authentication/providers/#configuring-auth-providers).

View File

@ -24,7 +24,7 @@ Home Assistant generates a secret key which is synchronized with an app on your
#### Setting up TOTP #### Setting up TOTP
Enable TOTP in your `configuration.yaml` like this: Enable TOTP in your {% term "`configuration.yaml`" %} like this:
```yaml ```yaml
homeassistant: homeassistant:
@ -64,7 +64,7 @@ The Notify MFA module uses the [notify integration](/integrations/notify/) to se
#### Setting up MFA notify #### Setting up MFA notify
Add Notify MFA to your `configuration.yaml` file like this: Add Notify MFA to your {% term "`configuration.yaml`" %} file like this:
```yaml ```yaml
homeassistant: homeassistant:

View File

@ -1,6 +1,9 @@
--- ---
title: "Authentication providers" title: "Authentication providers"
description: "Guide on configuring different authentication providers." description: "Guide on configuring different authentication providers."
related:
- docs: /docs/configuration/
title: configuration.yaml file
--- ---
<div class='note warning'> <div class='note warning'>
@ -13,13 +16,13 @@ When you log in, an _auth provider_ checks your credentials to make sure you are
<div class='note warning'> <div class='note warning'>
Home Assistant automatically configures the standard auth providers so you don't need to specify `auth_providers` in your `configuration.yaml` file unless you are configuring more than one. Specifying `auth_providers` will disable all auth providers that are not listed, so you could reduce your security or create difficulties logging in if it is not configured correctly. Home Assistant automatically configures the standard auth providers so you don't need to specify `auth_providers` in your {% term "`configuration.yaml`" %} file unless you are configuring more than one. Specifying `auth_providers` will disable all auth providers that are not listed, so you could reduce your security or create difficulties logging in if it is not configured correctly.
If you decide to use `trusted_networks` as your `auth_provider` there won't be a way to authenticate for a device outside of your listed trusted network. To overcome this ensure you add the default `auth_provider` with `type: homeassistant` back in manually. This will then present you with the default auth login screen when trusted network authentication fails as expected from outside your LAN. If you decide to use `trusted_networks` as your `auth_provider` there won't be a way to authenticate for a device outside of your listed trusted network. To overcome this ensure you add the default `auth_provider` with `type: homeassistant` back in manually. This will then present you with the default auth login screen when trusted network authentication fails as expected from outside your LAN.
</div> </div>
Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block. Authentication providers are configured in your {% term "`configuration.yaml`" %} file under the `homeassistant:` block.
If you are moving configuration to packages, this particular configuration must stay within 'configuration.yaml'. See Issue 16441 in the warning block at the bottom of this page. If you are moving configuration to packages, this particular configuration must stay within 'configuration.yaml'. See Issue 16441 in the warning block at the bottom of this page.
@ -44,7 +47,7 @@ User details are stored in the `[your config]/.storage` directory. All password
Users can be managed in Home Assistant by the owner. Go to the configuration panel and click on _{% my users %}_. Users can be managed in Home Assistant by the owner. Go to the configuration panel and click on _{% my users %}_.
This is the entry in `configuration.yaml` for Home Assistant auth: This is the entry in {% term "`configuration.yaml`" %} for Home Assistant auth:
```yaml ```yaml
homeassistant: homeassistant:
@ -52,7 +55,7 @@ homeassistant:
- type: homeassistant - type: homeassistant
``` ```
If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically. If you don't specify any `auth_providers` section in the {% term "`configuration.yaml`" %} file then this provider will be set up automatically.
### Trusted networks ### Trusted networks
@ -72,7 +75,7 @@ You cannot trust a network that you are using in any [trusted_proxies](/integrat
</div> </div>
Here is an example in `configuration.yaml` to set up Trusted Networks: Here is an example in {% term "`configuration.yaml`" %} to set up Trusted Networks:
```yaml ```yaml
homeassistant: homeassistant:

View File

@ -39,9 +39,11 @@ Automations created or edited via the user interface are activated immediately a
## Troubleshooting missing automations ## Troubleshooting missing automations
When you're creating automations using the GUI and they don't appear in the UI, make sure that you add back `automation: !include automations.yaml` from the default configuration to your `configuration.yaml`. When you're creating automations using the GUI and they don't appear in the UI, make sure that you add back `automation: !include automations.yaml` from the default configuration to your `configuration.yaml`.
## Related topics ## Related topics
- [Automating Home Assistant](/getting-started/automation/) - [Automating Home Assistant](/getting-started/automation/)
- [Persistent notifications](/integrations/persistent_notification/) - [Persistent notifications](/integrations/persistent_notification/)

View File

@ -1,6 +1,9 @@
--- ---
title: "Automation Trigger" title: "Automation Trigger"
description: "All the different ways how automations can be triggered." description: "All the different ways how automations can be triggered."
related:
- docs: /voice_control/custom_sentences/#adding-a-custom-sentence-to-trigger-an-automation
title: Adding a custom sentence to trigger an automation
--- ---
Triggers are what starts the processing of an {% term automation %} rule. When _any_ of the automation's triggers becomes true (trigger _fires_), Home Assistant will validate the [conditions](/docs/automation/condition/), if any, and call the [action](/docs/automation/action/). Triggers are what starts the processing of an {% term automation %} rule. When _any_ of the automation's triggers becomes true (trigger _fires_), Home Assistant will validate the [conditions](/docs/automation/condition/), if any, and call the [action](/docs/automation/action/).
@ -212,7 +215,7 @@ automation:
## Numeric state trigger ## Numeric state trigger
Fires when the numeric value of an entity's state (or attribute's value if using the `attribute` property, or the calculated value if using the `value_template` property) **crosses** a given threshold. On state change of a specified entity, attempts to parse the state as a number and fires if the value is changing from above to below or from below to above the given threshold. Fires when the numeric value of an entity's state (or attribute's value if using the `attribute` property, or the calculated value if using the `value_template` property) **crosses** a given threshold (equal excluded). On state change of a specified entity, attempts to parse the state as a number and fires if the value is changing from above to below or from below to above the given threshold (equal excluded).
<div class='note'> <div class='note'>
Crossing the threshold means that the trigger only fires if the state wasn't previously within the threshold. Crossing the threshold means that the trigger only fires if the state wasn't previously within the threshold.
@ -257,7 +260,24 @@ automation:
{% endraw %} {% endraw %}
More dynamic and complex calculations can be done with `value_template`. More dynamic and complex calculations can be done with `value_template`. The variable 'state' is the [state object](/docs/configuration/state_object) of the entity specified by `entity_id`.
The state of the entity can be referenced like this:
{% raw %}
```yaml
automation:
trigger:
- platform: numeric_state
entity_id: sensor.temperature
value_template: "{{ state.state | float * 9 / 5 + 32 }}"
above: 70
```
{% endraw %}
Attributes of the entity can be referenced like this:
{% raw %} {% raw %}
@ -277,8 +297,8 @@ Listing above and below together means the numeric_state has to be between the t
In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again. In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again.
</div> </div>
Number helpers (`input_number` entities), `number` and `sensor` entities that Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities
contain a numeric value, can be used in the `above` and `below` thresholds, that contain a numeric value, can be used in the `above` and `below` thresholds,
making the trigger more dynamic, like: making the trigger more dynamic, like:
```yaml ```yaml
@ -946,6 +966,10 @@ The sentences matched by this trigger will be:
Punctuation and casing are ignored, so "It's PARTY TIME!!!" will also match. Punctuation and casing are ignored, so "It's PARTY TIME!!!" will also match.
### Related topic
- [Adding a custom sentence to trigger an automation](/voice_control/custom_sentences/#adding-a-custom-sentence-to-trigger-an-automation)
### Sentence wildcards ### Sentence wildcards
Adding one or more `{lists}` to your trigger sentences will capture any text at that point in the sentence. A `slots` object will be [available in the trigger data](/docs/automation/templating#sentence). Adding one or more `{lists}` to your trigger sentences will capture any text at that point in the sentence. A `slots` object will be [available in the trigger data](/docs/automation/templating#sentence).
@ -1011,3 +1035,35 @@ automation:
- platform: time - platform: time
at: "15:32:00" at: "15:32:00"
``` ```
Triggers can also be disabled based on limited templates or blueprint inputs. These are only evaluated once when the automation is loaded.
{% raw %}
```yaml
blueprint:
input:
input_boolean:
name: Boolean
selector:
boolean:
input_number:
name: Number
selector:
number:
min: 0
max: 100
trigger_variables:
_enable_number: !input input_number
trigger:
- platform: sun
event_type: sunrise
enabled: !input input_boolean
- platform: sun
event_type: sunset
enabled: "{{ _enable_number < 50 }}"
```
{% endraw %}

View File

@ -3,43 +3,72 @@ title: "Troubleshooting automations"
description: "Tips on how to troubleshoot your automations." description: "Tips on how to troubleshoot your automations."
--- ---
Automations and {% term scripts %} can be debugged in a few different ways. You can [test run](#testing-your-automation) the full sequence of actions, or test each condition and action separately. [Traces](#traces) let you see details of every step after an automation is run. For complicated automations with {% term templates %}, see the section [testing templates](#testing-templates).
## Testing your automation
Many automations can be tested directly in the automation editor UI.
### Running the entire automation
In the three dots menu in the automation list or automation editor UI, select the **Run** button. This will execute all of the {% term actions %}, while skipping all {% term triggers %} and {% term conditions %}. This lets you test the full sequence of actions, as if the automation was triggered and all conditions were true. Note that any [trigger ID](/docs/automation/trigger/#trigger-id) used in your triggers will not be active when you test this way. The Trigger ID or any data passed by in the `trigger` data in conditions or actions can't be tested directly this way.
You can also trigger an automation manually. This can test the conditions as if the automation was triggered by an event. Navigate to {% my developer_services title="**Developer tools** > **Services**" %}. In the service selection drop-down, select **Automation: Trigger**, then **Choose entity** to select the automation you are testing. Toggle whether to skip the conditions, then **Call service**. If needed, additional `trigger` or other data can be added in the YAML view for testing. The [trigger](/docs/automation/trigger/) page has more information about data within the trigger.
Testing with complex triggers, conditions, and variables can be difficult. Note that using the **Run** button will skip all triggers and conditions, while **Developer Tools** can be used with or without checking conditions.
### Running individual actions or conditions
In the automation editor UI, each {% term condition %} and {% term action %} can be tested individually. Select the three dots menu, then the **Test** button.
- Testing a condition will highlight it to show whether the condition passed at the moment it was tested. If all conditions pass, then the automation will run when triggered. Testing building blocks like an **and** condition will report whether the whole block registers as true or false, or you can test individual conditions within the building block.
- Testing an action block will run that block immediately.
Note that complex automations that depend on previous blocks, such as trigger IDs, variables in templates, or service calls that return data to use in subsequent blocks, cannot be tested this way.
If you are writing automations in YAML, it is also useful to go to {% my server_controls title="**Developer tools** > **YAML**" %}** and in the Configuration validation section, select the **Check configuration** button. This is to make sure there are no syntax errors before restarting Home Assistant. In order for **Check configuration** to be visible, you must enable **Advanced Mode** on {% my profile title="your user profile" %}.
## Traces
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 %}
Click on the clock icon next to an automation to enter the debugging screen. Alternatively, click on **Show trace** directly from a Logbook automation entry. 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.
![Automation tracing example](/images/integrations/automation/automation-tracing.png) ![Automation tracing example](/images/integrations/automation/automation-tracing.png)
The above screenshot shows a previous run of an automation. The automation is displayed using an interactive graph, highlighting which path the automation took. Each node in the graph can be clicked to view the details on what happened with the automation during that specific step. It traces the complete run of an automation. The above screenshot shows a previous run of an automation. The automation is displayed using an interactive graph, highlighting which path the automation took. Each node in the graph can be clicked to view the details on what happened with the automation during that specific step. It traces the complete run of an automation.
The debugging screen is split into four features, the first being the Step Details which provides all details for each step of the automation. The second feature is the Trace Timeline which the screenshot above shows and where the automation can be followed on a timeline. The next is Related logbook entries, as the name says a logbook for all the entries related to the specific trace. The last two features are Automation Config and optionally Blueprint Config for the automation YAML code. 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.
- **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.
- **Related logbook entries**, shows a logbook for all the entries related to the specific trace.
- **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.
Automations created in YAML must have an [`id`](/docs/automation/yaml/#migrating-your-yaml-automations-to-automationsyaml) assigned in order for debugging traces to be stored. Automations created in YAML must have an [`id`](/docs/automation/yaml/#migrating-your-yaml-automations-to-automationsyaml) assigned in order for debugging traces to be stored.
#### Traces ### Trace configuration
The last 5 traces are recorded for all automations. It is possible to change this by adding the following code to your automation. The last 5 traces are recorded for all automations. It is possible to change this by adding the following code to your automation.
{% raw %}
```yaml ```yaml
trace: trace:
stored_traces: 1 stored_traces: 20
``` ```
[template]: /docs/configuration/templating/ {% endraw %}
## Testing your automation ## Testing templates
It is generally a difficult task to test an automation, especially if it includes several triggers and some conditions. If your automation uses [templates](/docs/configuration/templating/) in any part, you can do the following to make sure it works as expected:
Please note that if you click on **Trigger** of an automation in the frontend, **only the `action` part will be executed** by Home Assistant. That means you **can't** test your trigger or condition part that way. It also means that if your automation uses some data from triggers, it won't work properly as well just because `trigger` is not defined in this scenario. 1. Go to {% my developer_template title="**Developer tools** > **Template**" %} tab.
All this makes that Trigger feature pretty limited and nearly useless for debugging purposes so you need to find another way.
Make sure you check and adapt to your circumstances appropriate examples from Automation Trigger, Conditions and Actions.
It is also useful to go to **{% my server_controls title="Developer Tools -> YAML" %}** and click on **Check Configuration** button in Configuration validation section to make sure there are no syntax errors before restarting Home Assistant. In order for **Check configuration** to be visible, you must enable **Advanced Mode** on {% my profile title="your user profile" %}.
If your automation uses templates in any part, you can do the following to make sure it works as expected:
1. Go to **{% my developer_template title="Developer tools -> Template" %}** tab.
2. Create all variables (sources) required for your template as described at the end of [this](https://www.home-assistant.io/docs/configuration/templating/#processing-incoming-data) paragraph. 2. Create all variables (sources) required for your template as described at the end of [this](https://www.home-assistant.io/docs/configuration/templating/#processing-incoming-data) paragraph.
3. Copy your template code and paste it in Template editor straight after your variables. 3. Copy your template code and paste it in Template editor straight after your variables.
4. If necessary, change your sources' value and check if the template works as you want and does not generate any errors. 4. If necessary, change your sources' value and check if the template works as you want and does not generate any errors.

View File

@ -91,4 +91,4 @@ Learn more about blueprints by [reading our tutorial on creating a blueprint](/d
## Troubleshooting missing automations ## Troubleshooting missing automations
When you're creating automations using blueprints and they don't appear in the UI, make sure that you add back `automation: !include automations.yaml` from the default configuration to your `configuration.yaml`. When you're creating automations using blueprints and they don't appear in the UI, make sure that you add back `automation: !include automations.yaml` from the default configuration to your {% term "`configuration.yaml`" %}.

View File

@ -7,7 +7,7 @@ Automations are created in Home Assistant via the UI, but are stored in a YAML f
The UI will write your automations to `automations.yaml`. This file is managed by the UI and should not be edited manually. The UI will write your automations to `automations.yaml`. This file is managed by the UI and should not be edited manually.
It is also possible to write your automations directly inside `configuration.yaml` or other YAML files. You can do this by adding a labeled `automation` block to your `configuration.yaml`: It is also possible to write your automations directly inside {% term "`configuration.yaml`" %} or other YAML files. You can do this by adding a labeled `automation` block to your `configuration.yaml`:
```yaml ```yaml
# The configuration required for the UI to work # The configuration required for the UI to work
@ -128,7 +128,7 @@ Mode | Description
## YAML example ## YAML example
Example of a YAML based automation that you can add to `configuration.yaml`. Example of a YAML based automation that you can add to {% term "`configuration.yaml`" %}.
{% raw %} {% raw %}

View File

@ -3,7 +3,7 @@ title: "Database"
description: "Details about the database used by Home Assistant." description: "Details about the database used by Home Assistant."
--- ---
Home Assistant uses databases to store {% term events %} and parameters for history and tracking. The default database used is [SQLite](https://www.sqlite.org/) and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `<path to config dir>/home-assistant_v2.db`); however, other databases can be used. If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder` integration](/integrations/recorder/). Home Assistant uses databases to store {% term events %} and parameters for history and tracking. The default database used is [SQLite](https://www.sqlite.org/) and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `<path to config dir>/home-assistant_v2.db`); however, other databases can be used. If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder`](/integrations/recorder/) integration.
To work with SQLite database manually from the command-line, you will need an [installation](https://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](https://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands. To work with SQLite database manually from the command-line, you will need an [installation](https://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](https://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands.
First load your database with `sqlite3`: First load your database with `sqlite3`:

View File

@ -1,6 +1,17 @@
--- ---
title: "About blueprints" title: "About blueprints"
description: "Introduction to blueprints." description: "Introduction to blueprints."
related:
- docs: /docs/blueprint/schema/
title: About the blueprint schema
- docs: /docs/blueprint/selectors/
title: About the blueprint selectors
- docs: /docs/automation/using_blueprints/
title: Using blueprints in automations
- docs: /docs/blueprint/tutorial/
title: "Tutorial: Create an automation blueprint"
- title: "Blueprint community forum"
url: /get-blueprints
--- ---
This section gives a high-level introduction to blueprints. To view a description of the YAML-schema used to create a valid blueprint, refer to the section [About the blueprint schema](/docs/blueprint/schema/). This section gives a high-level introduction to blueprints. To view a description of the YAML-schema used to create a valid blueprint, refer to the section [About the blueprint schema](/docs/blueprint/schema/).
@ -13,12 +24,4 @@ Imagine you want to control lights based on motion. A blueprint provides the gen
Blueprints are shared by the community in the [blueprint community forum][blueprint-forums]. Blueprints are shared by the community in the [blueprint community forum][blueprint-forums].
### Related information [blueprint-forums]: /get-blueprints
- [About the blueprint schema](/docs/blueprint/schema/)
- [About the blueprint selectors](/docs/blueprint/selectors/)
- [Using blueprints in automations](/docs/automation/using_blueprints/)
- [Tutorial: Create an automation blueprint](/docs/blueprint/tutorial/)
- [Blueprint community forum][blueprint-forums]
[blueprint-forums]: /get-blueprints

View File

@ -1,6 +1,17 @@
--- ---
title: "About the blueprint schema" title: "About the blueprint schema"
description: "Introduction to the blueprint schema." description: "Introduction to the blueprint schema."
related:
- docs: /docs/blueprint/
title: About blueprints
- docs: /docs/blueprint/selectors/
title: Blueprint selectors
- docs: /docs/automation/using_blueprints/
title: Using blueprints in automations
- docs: /docs/blueprint/tutorial/
title: "Tutorial: Create an automation blueprint"
- title: "Blueprint community forum"
url: /get-blueprints
--- ---
## The blueprint schema ## The blueprint schema
@ -68,34 +79,12 @@ homeassistant:
required: false required: false
input: input:
description: > description: >
A dictionary of defined user inputs. These are the input fields that the A dictionary of defined user inputs or sections. These are the input fields that the
consumer of your blueprint can provide using YAML definition, or via consumer of your blueprint can provide using YAML definition, or via
a configuration form in the UI. a configuration form in the UI. Sections provide a way to visually group a set of
related inputs (see below).
type: map type: map
required: false required: false
keys:
name:
description: The name of the input field.
type: string
required: false
description:
description: >
A short description of the input field. Keep this short and descriptive.
The description can include [Markdown](https://commonmark.org/help/).
type: string
required: false
selector:
description: >
The [selector](/docs/blueprint/selectors/) to use for this input. A
selector defines how the input is displayed in the frontend UI.
type: selector
required: false
default:
description: >
The default value of this input, in case the input is not provided
by the user of this blueprint.
type: any
required: false
{% endconfiguration %} {% endconfiguration %}
### Blueprint inputs ### Blueprint inputs
@ -107,6 +96,34 @@ These inputs can be of any type (string, boolean, list, dictionary). They can ha
a default value and also provide a [selector](/docs/blueprint/selectors/) that a default value and also provide a [selector](/docs/blueprint/selectors/) that
ensures a matching input field in the user interface. ensures a matching input field in the user interface.
A blueprint input has the following configuration:
{% configuration %}
name:
description: The name of the input field.
type: string
required: false
description:
description: >
A short description of the input field. Keep this short and descriptive.
The description can include [Markdown](https://commonmark.org/help/).
type: string
required: false
selector:
description: >
The [selector](/docs/blueprint/selectors/) to use for this input. A
selector defines how the input is displayed in the frontend UI.
type: selector
required: false
default:
description: >
The default value of this input, in case the input is not provided
by the user of this blueprint.
type: any
required: false
{% endconfiguration %}
Each input field can be referred to, outside of the blueprint metadata, using Each input field can be referred to, outside of the blueprint metadata, using
the `!input` custom YAML tag. the `!input` custom YAML tag.
@ -129,6 +146,70 @@ It is then up to the user to find out what to enter there. Blueprints that come
A blueprint can have as many inputs as you like. A blueprint can have as many inputs as you like.
### Blueprint input sections
One or more input sections can be added under the main `input` key. Each section visually groups the inputs in that section,
allows an optional description, and optionally allows for collapsing those inputs.
A section is differentiated from an input by the presence of an additional `input` key within that section.
<div class='note warning'>
Input sections are a new feature in version 2024.6. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions.
</div>
The full configuration for a section is below:
{% configuration %}
name:
description: A name for the section. If omitted the key of the section is used.
type: string
required: false
icon:
description: An icon to display next to the name of the section.
type: string
required: false
description:
description: >
An optional description of this section, which will be displayed at the top of the section.
The description can include [Markdown](https://commonmark.org/help/).
type: string
required: false
collapsed:
description: If `true`, the section will be collapsed by default. Useful for optional or less important inputs. All collapsed inputs must also have a defined `default` before they can be hidden.
type: boolean
default: false
required: false
input:
description: >
A dictionary of defined user inputs within this section.
type: map
required: true
{% endconfiguration %}
The following example shows a blueprint with some inputs in a section:
```yaml
blueprint:
name: Example sections blueprint
description: Example showing a section
input:
base_input:
name: An input not in the section
my_section:
name: My Section
icon: mdi:cog
description: These options control a specific feature of this blueprint
input:
my_input:
name: Example input
my_input_2:
name: 2nd example input
```
### Blueprint inputs in templates ### Blueprint inputs in templates
The inputs are available as custom YAML tags, but not as template variables. The inputs are available as custom YAML tags, but not as template variables.
@ -202,12 +283,4 @@ action:
target: !input light_target target: !input light_target
``` ```
### Related information
- [About blueprints](/docs/blueprint/)
- [Blueprint selectors](/docs/blueprint/selectors/)
- [Using blueprints in automations](/docs/automation/using_blueprints/)
- [Tutorial: Create an automation blueprint &raquo;](/docs/blueprint/tutorial/)
- [Blueprint community forum][blueprint-forums]
[blueprint-built-in]: https://github.com/home-assistant/core/tree/dev/homeassistant/components/automation/blueprints [blueprint-built-in]: https://github.com/home-assistant/core/tree/dev/homeassistant/components/automation/blueprints
[blueprint-forums]: /get-blueprints

View File

@ -18,7 +18,6 @@ The following selectors are currently available:
- [Action selector](#action-selector) - [Action selector](#action-selector)
- [Add-on selector](#add-on-selector) - [Add-on selector](#add-on-selector)
- [Area selector](#area-selector) - [Area selector](#area-selector)
- [Example area selectors](#example-area-selectors)
- [Attribute selector](#attribute-selector) - [Attribute selector](#attribute-selector)
- [Assist pipeline selector](#assist-pipeline-selector) - [Assist pipeline selector](#assist-pipeline-selector)
- [Backup location selector](#backup-location-selector) - [Backup location selector](#backup-location-selector)
@ -32,22 +31,21 @@ The following selectors are currently available:
- [Date selector](#date-selector) - [Date selector](#date-selector)
- [Date \& time selector](#date--time-selector) - [Date \& time selector](#date--time-selector)
- [Device selector](#device-selector) - [Device selector](#device-selector)
- [Example device selector](#example-device-selector)
- [Duration selector](#duration-selector) - [Duration selector](#duration-selector)
- [Entity selector](#entity-selector) - [Entity selector](#entity-selector)
- [Example entity selector](#example-entity-selector) - [Floor selector](#floor-selector)
- [Icon selector](#icon-selector) - [Icon selector](#icon-selector)
- [Label selector](#label-selector)
- [Language selector](#language-selector) - [Language selector](#language-selector)
- [Location selector](#location-selector) - [Location selector](#location-selector)
- [Media selector](#media-selector) - [Media selector](#media-selector)
- [Number selector](#number-selector) - [Number selector](#number-selector)
- [Example number selectors](#example-number-selectors)
- [Object selector](#object-selector) - [Object selector](#object-selector)
- [QR code selector](#qr-code-selector)
- [RGB color selector](#rgb-color-selector) - [RGB color selector](#rgb-color-selector)
- [Select selector](#select-selector) - [Select selector](#select-selector)
- [State selector](#state-selector) - [State selector](#state-selector)
- [Target selector](#target-selector) - [Target selector](#target-selector)
- [Example target selectors](#example-target-selectors)
- [Template selector](#template-selector) - [Template selector](#template-selector)
- [Text selector](#text-selector) - [Text selector](#text-selector)
- [Theme selector](#theme-selector) - [Theme selector](#theme-selector)
@ -210,7 +208,7 @@ living_room
- kitchen - kitchen
``` ```
### Example area selectors ### Example area selectors <!-- omit from toc -->
An example area selector only shows areas that provide one or more lights or An example area selector only shows areas that provide one or more lights or
switches provided by the [ZHA](/integrations/zha) integration. switches provided by the [ZHA](/integrations/zha) integration.
@ -273,7 +271,7 @@ assist_pipeline:
## Backup location selector ## Backup location selector
This can only be used on an installation with a Supervisor (Operating System or This can only be used on an installation with a Supervisor (Operating System or
Supervised). For installations of type Home Assistant Core or Container, an error Supervised). For installations of type {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %}, an error
will be displayed. will be displayed.
The backup location selector shows a list of places a backup could go, depending The backup location selector shows a list of places a backup could go, depending
@ -417,20 +415,6 @@ language:
The output of this selector is the ID of the conversation agent. The output of this selector is the ID of the conversation agent.
## Date selector
The date selector shows a date input that allows the user to specify a date.
![Screenshot of the Date selector](/images/blueprints/selector-date.png)
This selector does not have any other options; therefore, it only has its key.
```yaml
date:
```
The output of this selector will contain the date in Year-Month-Day
(`YYYY-MM-DD`) format, for example, `2022-02-22`.
## Country selector ## Country selector
@ -458,6 +442,21 @@ no_sort:
The output of this selector is an ISO 3166 country code. The output of this selector is an ISO 3166 country code.
## Date selector
The date selector shows a date input that allows the user to specify a date.
![Screenshot of the Date selector](/images/blueprints/selector-date.png)
This selector does not have any other options; therefore, it only has its key.
```yaml
date:
```
The output of this selector will contain the date in Year-Month-Day
(`YYYY-MM-DD`) format, for example, `2022-02-22`.
## Date & time selector ## Date & time selector
The date selector shows a date and time input that allows the user to specify a The date selector shows a date and time input that allows the user to specify a
@ -579,7 +578,7 @@ faadde5365842003e8ca55267fe9d1f4
- 3da77cb054352848b9544d40e19de562 - 3da77cb054352848b9544d40e19de562
``` ```
### Example device selector ### Example device selector <!-- omit from toc -->
An example entity selector that, will only show devices that are: An example entity selector that, will only show devices that are:
@ -715,7 +714,7 @@ light.living_room
- light.kitchen - light.kitchen
``` ```
### Example entity selector ### Example entity selector <!-- omit from toc -->
An example entity selector that, will only show entities that are: An example entity selector that, will only show entities that are:
@ -735,6 +734,141 @@ entity:
device_class: motion device_class: motion
``` ```
## Floor selector
The floor selector shows a floor finder that can pick
floors based on the selector configuration. The value of the input will be the
floor ID. If `multiple` is set to `true`, the value is a list of floor IDs.
A floor selector can filter the list of floors based on the properties of the
devices and entities assigned to the areas on those floors.
For example, the floor list could be limited to floors with entities
provided by the [ZHA](/integrations/zha) integration, based on the areas they are in.
In its most basic form, this selector doesn't require any options.
It will show all floors.
![Screenshot of a floor selector](/images/blueprints/selector-floor.png)
```yaml
floor:
```
{% configuration floor %}
device:
description: >
When device options are provided, the list of floors is filtered by floors
that have at least one device matching the given conditions. Can be
either an object or a list of objects.
type: list
required: false
keys:
integration:
description: >
Can be set to an integration domain. Limits the list of floors that
have devices by this integration domain. For example,
[`zha`](/integrations/zha).
type: string
required: false
manufacturer:
description: >
When set, the list only includes floors that have devices by the set
manufacturer name.
type: string
required: false
model:
description: >
When set, the list only includes floors that have devices which have
the set model.
type: string
required: false
entity:
description: >
When entity options are provided, the list only includes floors
that at least have one entity that matches the given conditions. Can be
either an object or a list of objects.
type: list
required: false
keys:
integration:
description: >
Can be set to an integration domain. Limits the list of floors that
have entities by the set integration domain. For example,
[`zha`](/integrations/zha).
type: string
required: false
domain:
description: >
When set, the list only includes floors that have entities of certain domains,
for example, [`light`](/integrations/light) or
[`binary_sensor`](/integrations/binary_sensor). Can be either a string
with a single domain, or a list of string domains to limit the selection to.
type: [string, list]
required: false
device_class:
description: >
When set, the list only includes floors that have entities with a certain
device class, for example, `motion` or `window`. Can be either a string
with a single device_class, or a list of string device_class to limit
the selection.
type: [device_class, list]
required: false
supported_features:
description: >
When set, the list only includes floors that have entities with a certain
supported feature, for example, `light.LightEntityFeature.TRANSITION`
or `climate.ClimateEntityFeature.TARGET_TEMPERATURE`. Should be a list
of features.
type: list
required: false
multiple:
description: >
Allows selecting multiple floors. If set to `true`, the resulting value of
this selector will be a list instead of a single string value.
type: boolean
default: false
required: false
{% endconfiguration %}
The output of this selector is the floor ID, or (in case `multiple` is set to
`true`) a list of floor IDs.
```yaml
# Example floor selector output result, when multiple is set to false
first_floor
# Example floor selector output result, when multiple is set to true
- first_floor
- second_floor
```
### Example floor selectors <!-- omit from toc -->
An example floor selector only shows floors that have one or more lights or
switches provided by the [ZHA](/integrations/zha) integration.
```yaml
floor:
entity:
integration: zha
domain:
- light
- switch
```
Another example using the floor selector, which only shows floors that
have one or more remote controls provided by the [deCONZ](/integrations/deconz)
integration. Multiple floors can be selected.
```yaml
floor:
multiple: true
device:
- integration: deconz
manufacturer: IKEA of Sweden
model: TRADFRI remote control
```
## Icon selector ## Icon selector
The icon selector shows an icon picker that allows the user to select an icon. The icon selector shows an icon picker that allows the user to select an icon.
@ -753,6 +887,43 @@ placeholder:
The output of this selector is a string containing the selected icon, The output of this selector is a string containing the selected icon,
for example: `mdi:bell`. for example: `mdi:bell`.
## Label selector
The label selector shows a label finder that can pick labels. The value of the
input is the label ID. If `multiple` is set to `true`, the value is a list
of label IDs.
![Screenshot of the label selector](/images/blueprints/selector-label.png)
In its most basic form, this selector doesn't require any options.
It will show all labels.
```yaml
label:
```
{% configuration text %}
multiple:
description: >
Allows selecting multiple labels. If set to `true`, the resulting value of
this selector will be a list instead of a single string value.
type: boolean
default: false
required: false
{% endconfiguration %}
The output of this selector is the label ID, or (in case `multiple` is set to
`true`) a list of label IDs.
```yaml
# Example label selector output result, when multiple is set to false
energy_saving
# Example label selector output result, when multiple is set to true
- energy_saving
- christmas_decorations
```
## Language selector ## Language selector
The language selector allows a user to pick a language from a list of languages. The language selector allows a user to pick a language from a list of languages.
@ -908,7 +1079,7 @@ mode:
The output of this selector is a number, for example: `42` The output of this selector is a number, for example: `42`
### Example number selectors ### Example number selectors <!-- omit from toc -->
An example number selector that allows a user a percentage, directly in a An example number selector that allows a user a percentage, directly in a
regular number input box. regular number input box.
@ -948,6 +1119,39 @@ object:
The output of this selector is a YAML object. The output of this selector is a YAML object.
## QR code selector
The QR code selector shows a QR code. It has no return value.
![Screenshot of a QR code selector](/images/blueprints/selector-qr-code.png)
The QR code's data must be configured, and optionally, the scale, and error correction level can be set.
The scale makes the QR code bigger or smaller.
{% configuration qr_code %}
data:
description: The data that should be represented in the QR code.
type: any
required: true
scale:
description: The scale factor to use, this will make the QR code bigger or smaller.
type: integer
required: false
default: 4
error_correction_level:
description: The error correction level of the QR code, with a higher error correction level the QR code can be scanned even when some pieces are missing. Can be "low", "medium", "quartile" or "high".
type: string
required: false
default: medium
{% endconfiguration %}
```yaml
qr_code:
data: "https://home-assistant.io"
scale: 5
error_correction_level: quartile
```
## RGB color selector ## RGB color selector
The RGB color selector allows the user to select an color from a color picker The RGB color selector allows the user to select an color from a color picker
@ -1174,7 +1378,7 @@ action:
</div> </div>
### Example target selectors ### Example target selectors <!-- omit from toc -->
An example target selector that only shows targets that at least provide one An example target selector that only shows targets that at least provide one
or more lights, provided by the [ZHA](/integrations/zha) integration. or more lights, provided by the [ZHA](/integrations/zha) integration.
@ -1324,4 +1528,4 @@ The output of this selector is a list of triggers. For example:
- platform: numeric_state - platform: numeric_state
entity_id: "sensor.outside_temperature" entity_id: "sensor.outside_temperature"
below: 20 below: 20
``` ```

View File

@ -1,6 +1,22 @@
--- ---
title: "Creating an automation blueprint" title: "Creating an automation blueprint"
description: "Tutorial on creating an automation blueprint." description: "Tutorial on creating an automation blueprint."
related:
- docs: /docs/configuration/
title: "Editing the configuration file"
- docs: /docs/configuration/yaml/
- docs: /docs/automation/yaml/
title: "YAML used in automations"
- docs: /docs/scripts/
title: Scripts
- docs: /docs/blueprint/selectors/
title: Blueprint selectors
- docs: /docs/blueprint/schema/
title: Blueprint schema
- docs: /docs/blueprint/
title: About blueprints
- docs: /docs/automation/using_blueprints/
title: Using automation blueprints
--- ---
<div class='note'> <div class='note'>
@ -121,7 +137,7 @@ For more information on blueprint inputs, refer to the documentation of the [blu
With the bare minimum metadata added, your blueprint is ready to use. With the bare minimum metadata added, your blueprint is ready to use.
Open your `configuration.yaml` and add the following: Open your {% term "`configuration.yaml`" %} and add the following:
```yaml ```yaml
automation tutorial: automation tutorial:
@ -186,8 +202,7 @@ blueprint:
selector: selector:
target: target:
entity: entity:
filter: - domain: light
- domain: light
``` ```
By limiting our blueprint to working with lights and motion sensors, we unlock a couple of benefits: the UI will be able to limit suggested values to lights and motion sensors instead of all devices. It will also allow the user to pick an area to control the lights in. By limiting our blueprint to working with lights and motion sensors, we unlock a couple of benefits: the UI will be able to limit suggested values to lights and motion sensors instead of all devices. It will also allow the user to pick an area to control the lights in.
@ -218,8 +233,7 @@ blueprint:
selector: selector:
target: target:
entity: entity:
filter: - domain: light
- domain: light
trigger: trigger:
- platform: state - platform: state
@ -273,17 +287,3 @@ For this tutorial, we're going to share it on GitHub Gists. This is a good optio
### Share on the Blueprint Exchange ### Share on the Blueprint Exchange
If you follow the [Rules and format for posting](/get-blueprints), you can share your blueprint on the Home Assistant Blueprint Exchange forum. This option is accessible to the general Home Assistant community but recommended only for your original blueprints. Please don't post this tutorial to the Blueprint Exchange, but instead, remember this as an option for releasing your real blueprints. If you follow the [Rules and format for posting](/get-blueprints), you can share your blueprint on the Home Assistant Blueprint Exchange forum. This option is accessible to the general Home Assistant community but recommended only for your original blueprints. Please don't post this tutorial to the Blueprint Exchange, but instead, remember this as an option for releasing your real blueprints.
## Related topics
**Prerequisites**
- [Editing the configuration file](/docs/configuration/)
- [YAML](/docs/configuration/yaml/), and specifically, [YAML used in automations](/docs/automation/yaml/)
- [Scripts](/docs/scripts/)
**Blueprints**
- [Blueprint selectors](/docs/blueprint/selectors/)
- [Blueprint schema](/docs/blueprint/schema/)
- [About blueprints](/docs/blueprint/)
- [Using automation blueprints](/docs/automation/using_blueprints/)

View File

@ -1,45 +1,90 @@
--- ---
title: "Configuration.yaml" title: "Configuration.yaml"
description: "Configuring Home Assistant via text files." description: "Configuring Home Assistant via text files."
related:
- docs: /docs/configuration/yaml/
title: YAML syntax
- docs: /docs/configuration/secrets
title: Storing credentials in `secrets.yaml` file
- docs: /common-tasks/os/#backups
title: Creating and restoring backups
- docs: /integrations/backup/docs/tools/dev-tools/#reloading-the-yaml-configuration
title: Creating backups for Home Assistant Container and Core
- docs: /docs/tools/dev-tools/#reloading-the-yaml-configuration
title: Reloading the YAML configuration from developer tools
- docs: /common-tasks/os/#configuring-access-to-files
title: Configuring file access on the Operating System
- docs: /common-tasks/supervised/#configuring-access-to-files
title: Configuring file access on Supervised
- docs: docs/configuration/troubleshooting/
title: Troubleshooting the configuration
--- ---
While you can configure most of Home Assistant directly from the user interface under {% my config %}, some parts need you to edit `configuration.yaml`. This file contains {% term integrations %} to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality. While you can configure most of Home Assistant from the user interface, for some integrations, you need to edit the `configuration.yaml` file. This file contains {% term integrations %} to be loaded along with their configurations. Throughout the documentation, you will find snippets that you can add to your configuration file to enable specific functionality.
If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml). <p class='img'>
<img src='/images/docs/configuration/config-yaml_via-file-editor.png' alt='Screenshot of an example of a configuration.yaml file, accessed using the File editor add-on on a Home Assistant Operating System installation.'>
Example of a configuration.yaml file, accessed using the File editor add-on on a Home Assistant Operating System installation.
</p>
## Editing `configuration.yaml` ## Editing `configuration.yaml`
The easiest option to edit `configuration.yaml` is to use the {% my supervisor_addon title="Studio Code Server add-on" addon="a0d7b954_vscode" %}. This add-on runs VS Code, which offers live syntax checking and auto-fill of various Home Assistant entities. See [here](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on) for details. If unavailable on your system, use {% my supervisor_addon title="File Editor add-on" addon="core_configurator" %} instead. Again, details can be found [here](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on). How you edit your `configuration.yaml` file depends on your editor preferences and the [installation method](/installation/#advanced-installation-methods) you used to set up Home Assistant.
If you prefer to use a file editor on your computer, use the {% my supervisor_addon title="Samba add-on" addon="core_samba" %} to access the files as a network share. More details can be found [here](/common-tasks/supervised/#installing-and-using-the-samba-add-on). ### To set up access to the files and prepare an editor
The path to your configuration directory can be found in the Home Assistant {% term frontend %} by going to {% my system_health title="Settings > System > Repairs > System information from the top right menu" %} 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/#advanced-installation-methods). If you use {% term "Home Assistant Operating System" %} or {% term "Home Assistant Supervised" %}, you can use editor add-ons, for example, but not if you use {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %}.
![Show system menu option](/images/screenshots/System_information_menu.png) 1. To set up file access, follow the steps for your [installation method](/installation/#advanced-installation-methods):
Right under the version you are running, you will find what path Home Assistant has loaded the configuration from. - [Configure file access on the Operating System](/common-tasks/os/#configuring-access-to-files):
![Screenshot showing the top of the system information panel](/images/screenshots/System_information.png) - If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on).
- Alternatively, use the [Studio Code Server add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor.
- If you prefer to use a file editor on your computer, use the [Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on).
- [Configure file access on Supervised](/common-tasks/supervised/#configuring-access-to-files):
- Using the [File editor add-on](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on).
- Using the [Studio Code Server add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on).
- Using the [Samba add-on](/common-tasks/supervised/#installing-and-using-the-samba-add-on).
_If you use Home Assistant Container, you can find `configuration.yaml` in the config folder that you mounted in your container._ 2. To look up the path to your configuration directory, go to {% my system_health title="**Settings** > **System** > **Repairs**" %}.
- Select the three dots menu and select **System information**.
_If you use Home Assistant Operating System, you can find `configuration.yaml` in the `/config` folder of the installation._ ![Show system information option](/images/screenshots/System_information_menu.png)
_If you use Home Assistant Core, you can find `configuration.yaml` in the config folder passed to the `hass` command (default is `~/.homeassistant`)._ 3. Find out the location of the **Configuration directory**.
## Reloading changes ![Screenshot showing the top of the system information panel](/images/screenshots/system_information.png)
- Unless you changed the file structure, the default is as follows: -
- {% term "Home Assistant Operating System" %}: the `configuration.yaml` is in the `/config` folder of the installation.
- {% term "Home Assistant Container" %}: the `configuration.yaml` is in the config folder that you mounted in your container.
- {% term "Home Assistant Core" %}: the `configuration.yaml` is in the config folder passed to the `hass` command (default is `~/.homeassistant`).
Most integrations in Home Assistant that do not interact with {% term devices %} or {% term services %} can reload changes made to their configuration in `configuration.yaml`. To do this, go to {% my server_controls title="Developer Tools > YAML" %} and scroll down to the YAML configuration reloading section (alternatively, hit "c" anywhere in the UI and search for it). ## Validating the configuration
If you can't see your integration listed there, you will need to restart Home Assistant for changes to take effect. 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.
<div class='note'> The method for running a configuration check depends on your [installation type](/installation/#advanced-installation-methods). Check the common tasks for your installation type:
To test any changes to your configuration files from the command line, check out the common tasks for [operating system](/common-tasks/os/#configuration-check), [supervised](/common-tasks/supervised/#configuration-check), [container](/common-tasks/container/#configuration-check), [core](/common-tasks/core/#configuration-check) for how to do that. Configuration changes can also be tested using the UI by navigating to {% my server_controls title="Developer Tools > YAML" %} and clicking "Check Configuration". For the button to be visible, you must enable "Advanced Mode" on your {% my profile title="User Profile" %}. - [Configuration check on Operating System](/common-tasks/os/#configuration-check)
- [Configuration check on Supervised](/common-tasks/supervised/#configuration-check)
- [Configuration check on Container](/common-tasks/container/#configuration-check)
- [Configuration check on Core](/common-tasks/core/#configuration-check)
</div> ## Reloading the configuration to apply changes
## Migrating to a new system For configuration changes to become effective, the configuration must be reloaded. Most integrations in Home Assistant (that do not interact with {% term devices %} or {% term services %}) can reload changes made to their configuration in `configuration.yaml` without needing to restart Home Assistant.
The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the _Upload backup_ menu option of the _Backups_ menu. Then, a restore of the uploaded backup on the new system concludes the migration. 1. Under **Settings**, select the three dots menu (top right), select **Restart Home Assistant** > **Quick reload**.
If you run the container or core installation methods, you will need to manually make a backup of your configuration folder. Be aware that some of the files you need start with `.`, which is hidden by default from both `ls` (in SSH), in Windows Explorer, and macOS Finder. You'll need to ensure that you're viewing all files before you copy them. ![Settings, three dot menu, restart Home Assistant](/images/docs/configuration/settings_restart_ha.png)
2. If you find that your changes were not applied, you need to restart.
- Select **Restart Home Assistant**.
- Note: This interrupts automations and scripts.
![Reload and restart buttons](/images/docs/configuration/reload_restart.png)
## Troubleshooting the configuration
If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml).

View File

@ -1,117 +1,32 @@
--- ---
title: "Setup basic information" title: "Setup basic information"
description: "Setting up the basic info of Home Assistant." description: "Setting up the basic info of Home Assistant."
related:
- docs: /integrations/homeassistant/
- docs: /docs/configuration/
--- ---
As part of the default onboarding process, Home Assistant can detect your location from IP address geolocation. Home Assistant will automatically select a unit system and time zone based on this location. You may adjust this during onboarding, or afterwards at {% my general title="Settings > System > General" %}, network related configuration is found under {% my network title="Settings > System > Network" %}. As part of the default onboarding process, Home Assistant can detect your location from IP address geolocation. Home Assistant will automatically select a unit system and time zone based on this location. If you didn't adjust this directly during onboarding, you can do it later.
If you prefer YAML, you can add the following information to your `configuration.yaml`: <p class='img'>
<img class="no-shadow" src='/images/docs/configuration/general-settings.png' alt='Screenshot showing General settings page'>
Screenshot showing the General settings page.
</p>
```yaml The general settings described here are managed by the [Home Assistant Core integration](/integrations/homeassistant/). If you are interested in the services offered by this integration, check out the integration documentation.
homeassistant:
name: Home
latitude: 32.87336
longitude: 117.22743
elevation: 430
unit_system: metric
currency: USD
country: US
time_zone: "America/Los_Angeles"
external_url: "https://www.example.com"
internal_url: "http://homeassistant.local:8123"
allowlist_external_dirs:
- "/usr/var/dumping-ground"
- "/tmp"
allowlist_external_urls:
- "http://images.com/image1.png"
media_dirs:
media: "/media"
recordings: "/mnt/recordings"
```
<div class='note'> ## Editing the general settings
You will not be able to edit anything in {% my general title="Settings > System > General" %} in the UI if you are using YAML configuration for any of the following: name, latitude, longitude, elevation, unit_system, temperature_unit, time_zone, external_url, internal_url, country, currency. Additionally, some options are only visible after "Advanced Mode" is enabled on your {% my profile title="User Profile" %}. To change the general settings that were defined during onboarding, follow these steps:
</div> 1. Go to {% my general title="**Settings** > **System** > **General**" %} and make your changes.
2. To change network-related configuration, such as the network name, go to {% my network title="**Settings** > **System** > **Network**" %}.
3. If some of the settings are not visible, you may need to enable **Advanced mode**.
- In the bottom left, select your username to go to your {% my profile title="**User profile**" %}, and enable **Advanced mode**.
4. **Troubleshooting**: If any of the settings are grayed out and can't be edited, this is because they are defined in the {% term "`configuration.yaml`" %} file.
- If you prefer editing the settings in the UI, you have to delete these entries from the {% term "`configuration.yaml`" %} file.
- For more information about the general settings in YAML, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/).
{% configuration %} ![Setting fields are grayed out because the configuration settings stored in configuration.yaml file](/images/docs/configuration/general-settings-stored-in-config-yaml.png)
name:
description: Name of the location where Home Assistant is running.
required: false
type: string
latitude:
description: Latitude of your location required to calculate the time the sun rises and sets.
required: false
type: float
longitude:
description: Longitude of your location required to calculate the time the sun rises and sets.
required: false
type: float
elevation:
description: Altitude above sea level in meters. Impacts sunrise data.
required: false
type: integer
unit_system:
description: "`metric` for Metric, `us_customary` for US Customary. This also sets temperature_unit, Celsius for Metric and Fahrenheit for US Customary"
required: false
type: string
temperature_unit:
description: "Override temperature unit set by unit_system. `C` for Celsius, `F` for Fahrenheit."
required: false
type: string
time_zone:
description: "Pick your time zone from the column **TZ** of [Wikipedia's list of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)"
required: false
type: string
currency:
description: "Pick your currency code from the column **Code** of [Wikipedia's list of ISO 4217 active codes](https://en.wikipedia.org/wiki/ISO_4217#Active_codes)"
required: false
type: string
default: "EUR"
external_url:
description: "The URL that Home Assistant is available on from the internet. For example: `https://example.duckdns.org:8123`. Note that this setting may only contain a protocol, hostname and port; using a path is not supported."
required: false
type: string
internal_url:
description: "The URL that Home Assistant is available on from your local network. For example: `http://homeassistant.local:8123`. Note that this setting may only contain a protocol, hostname and port; using a path is not supported."
required: false
type: string
customize:
description: "[Customize](/docs/configuration/customizing-devices/) entities."
required: false
type: string
customize_domain:
description: "[Customize](/docs/configuration/customizing-devices/) all entities in a domain."
required: false
type: string
customize_glob:
description: "[Customize](/docs/configuration/customizing-devices/) entities matching a pattern."
required: false
type: string
allowlist_external_dirs:
description: List of folders that can be used as sources for sending files.
required: false
type: list
allowlist_external_urls:
description: List of external URLs that can be fetched. URLs can match specific resources (e.g., `http://10.10.10.12/images/image1.jpg`) or a relative path that allows access to resources within it (e.g., `http://10.10.10.12/images` would allow access to anything under that path)
required: false
type: list
media_dirs:
description: A mapping of local media sources and their paths on disk.
required: false
type: map
language:
description: "Default language used by Home Assistant. This may, for example, influence the language used by voice assistants. The language should be specified as an RFC 5646 language tag, and must be a language which Home Assistant is translated to."
required: false
type: string
default: "en"
country:
description: "Country in which Home Assistant is running. This may, for example, influence radio settings to comply with local regulations. The country should be specified as an ISO 3166.1 alpha-2 code. Pick your country from the column **Code** of [Wikipedia's list of ISO 31661 alpha-2 officially assigned code codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)"
required: false
type: string
{% endconfiguration %}
## Reload core service 5. To apply the changes, follow the steps on [reloading the configuration](/docs/configuration/#reloading-configuration-changes).
Home Assistant offers a service to reload the core configuration while Home Assistant is running called {% my developer_call_service service="homeassistant.reload_core_config" %}. This allows you to change any of the above sections and see it being applied without having to restart Home Assistant. To call this service, go to the "{% my developer_services %}" tab under {% my developer_services title="Developer Tools" %}, select the {% my developer_call_service service="homeassistant.reload_core_config" %} service and click the "CALL SERVICE" button. Alternatively, you can press the "Location & Customizations" button under {% my server_controls title="Developer Tools > YAML" %}.

View File

@ -1,129 +1,40 @@
--- ---
title: "Customizing entities" title: "Customizing entities"
description: "Simple customization for entities." description: "Simple customization for entities."
related:
- docs: /integrations/homeassistant/
- docs: /docs/configuration/
title: configuration.yaml file
- docs: /docs/configuration/troubleshooting/
- docs: /docs/organizing/labels/
--- ---
## Changing the entity ID ## Customizing an entity
You can use the UI to change the entity ID and friendly name of supported entities. To do this: After adding a new device, you might find the automatically assigned entity ID too technical and the entity lacking a friendly name. You can personalize these elements to better fit your naming conventions or modify other attributes like the icon.
1. Select the {% term entity %}, either from the frontend or by selecting the info button next to the entity in the Developer Tools "States" tab. To change entity attributes, follow these steps:
2. Select the cog icon in the right corner of the entity's dialog
![Entity dialog box.](/images/docs/configuration/customizing-entity-dialog.png)
3. Enter the new name or the new entity ID (remember not to change the domain of the entity - the part before the `.`)
![Settings for entity.](/images/docs/configuration/customizing-entity.png)
4. Select *Update*
If your entity is not supported, or you cannot customize what you need via this method, please see below for more options. 1. Go to {% my entities title="**Settings** > **Devices & services** > **Entities**" %} and select the entity from the list.
2. In the top right corner, select the cog icon.
## Customizing entities ![Entity dialog box with cog icon.](/images/docs/configuration/customizing-entity-dialog.png)
By default, all of your devices will be visible and have a default icon determined by their domain. You can customize the look and feel of your front page by altering some of these parameters. This can be done by overriding attributes of specific entities. 3. Enter or edit the attributes:
- For example, the entity ID here could be shortened to `binary_sensor.living_room_motion_1`.
- Do not change the domain of the entity - the part before the `.` (binary_sensor, in this example).
- You can use lowercase letters, numbers, and underscores.
- The ID must not start or end with an underscore.
- Enter or edit the friendly name.
- If needed, from the **Shown as** menu, you can select a different [device class](/integrations/homeassistant/#device-class).
- If you like, add a [label](/docs/organizing/labels/).
### Possible values ![Settings for entity.](/images/docs/configuration/customizing-entity.png)
{% configuration customize %} 4. To apply the changes, select **Update**.
friendly_name: 5. If you have used this entity in automations and scripts, you need to rename the entity ID there, too.
description: Name of the entity as displayed in the UI. - Go to {% my automations title="**Settings** > **Automations & Scenes**" %} open the respective tab and find your automation or script.
required: false
type: string
entity_picture:
description: URL to use as picture for entity.
required: false
type: string
icon:
description: "Any icon from [Material Design Icons](https://pictogrammers.com/library/mdi/). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release."
required: false
type: string
assumed_state:
description: For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting `assumed_state` to `false` you will get the default switch icon.
required: false
type: boolean
default: true
device_class:
description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). It does not set the `unit_of_measurement`.
required: false
type: device_class
default: None
unit_of_measurement:
description: Defines the units of measurement, if any. This will also influence the graphical presentation in the history visualization as continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values.
required: false
type: string
default: None
initial_state:
description: Sets the initial state for automations, `on` or `off`.
required: false
type: boolean
default: None
{% endconfiguration %}
### Device class ### Customizing an entity in YAML
Device class is currently supported by the following platforms: If your entity is not supported, or you could not customize what you need via the user interface, you need to edit the settings in your {% term "`configuration.yaml`" %} file. For a detailed description of the entity configuration variables and [device class](/integrations/homeassistant/#device-class) information, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/).
- [Binary sensor](/integrations/binary_sensor/)
- [Button](/integrations/button/)
- [Cover](/integrations/cover/)
- [Humidifier](/integrations/humidifier/)
- [Media player](/integrations/media_player/)
- [Number](/integrations/number/)
- [Sensor](/integrations/sensor/)
- [Switch](/integrations/switch/)
### Manual customization
<div class='note'>
If you implement `customize`, `customize_domain`, or `customize_glob` you must make sure it is done inside of `homeassistant:` or it will fail.
</div>
```yaml
homeassistant:
name: Home
unit_system: metric
# etc
customize:
# Add an entry for each entity that you want to overwrite.
thermostat.family_room:
entity_picture: https://example.com/images/nest.jpg
friendly_name: Nest
switch.wemo_switch_1:
friendly_name: Toaster
entity_picture: /local/toaster.jpg
switch.wemo_switch_2:
friendly_name: Kitchen kettle
icon: mdi:kettle
switch.rfxtrx_switch:
assumed_state: false
media_player.my_media_player:
source_list:
- Channel/input from my available sources
# Customize all entities in a domain
customize_domain:
light:
icon: mdi:home
automation:
initial_state: "on"
# Customize entities matching a pattern
customize_glob:
"light.kitchen_*":
icon: mdi:description
"scene.month_*_colors":
icon: mdi:other
```
### Reloading customize
Home Assistant offers a service to reload the core configuration while Home Assistant is running. This allows you to change your customize section and see your changes being applied without having to restart Home Assistant.
To reload customizations, navigate to Developer Tools > YAML and then press the "Reload Location & Customizations" button. If you don't see this, enable Advanced Mode on your user profile page first.
You can also use the [Quick bar](/docs/tools/quick-bar/#command-palette), and choose "Reload Location & Customizations".
Alternatively, you can reload via service call. Navigate to Developer Tools > Services tab, select `homeassistant.reload_core_config` from the dropdown and press the "Call Service" button.
<div class='note warning'>
New customize information will be applied the next time the state of the entity gets updated.
</div>

View File

@ -19,7 +19,7 @@ The package configuration can include: `switch`, `light`, `automation`, `groups`
It can be specified inline or in a separate YAML file using `!include`. It can be specified inline or in a separate YAML file using `!include`.
Inline example, main `configuration.yaml`: Inline example, main {% term "`configuration.yaml`" %}:
```yaml ```yaml
homeassistant: homeassistant:
@ -34,7 +34,7 @@ homeassistant:
... ...
``` ```
Include example, main `configuration.yaml`: Include example, main {% term "`configuration.yaml`" %}:
```yaml ```yaml
homeassistant: homeassistant:
@ -74,7 +74,7 @@ Integrations inside packages can only specify platform entries using configurati
## Create a packages folder ## Create a packages folder
One way to organize packages is to create a folder named "packages" in your Home Assistant configuration directory. In the packages directory, you can store any number of packages in a YAML file. This entry in your `configuration.yaml` will load all YAML-files in this _packages_ folder and its subfolders: One way to organize packages is to create a folder named "packages" in your Home Assistant configuration directory. In the packages directory, you can store any number of packages in a YAML file. This entry in your {% term "`configuration.yaml`" %} will load all YAML-files in this _packages_ folder and its subfolders:
```yaml ```yaml
homeassistant: homeassistant:

View File

@ -1,6 +1,11 @@
--- ---
title: "Remote access" title: "Remote access"
description: "Setting up remote access for Home Assistant." description: "Setting up remote access for Home Assistant."
related:
- docs: /docs/configuration/securing/
title: Securing your instance
- url: https://www.nabucasa.com/config/remote/
title: Home Assistant Cloud - remote access
--- ---
If you're interested in logging in to Home Assistant while away, you'll have to make your instance remotely accessible. Below are a few options to do this. If you're interested in logging in to Home Assistant while away, you'll have to make your instance remotely accessible. Below are a few options to do this.
@ -33,6 +38,14 @@ If you cannot access your Home Assistant installation remotely, remember to chec
<div class='note'> <div class='note'>
Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the [set up encryption using Let's Encrypt](/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) blog post or this [detailed guide](/docs/ecosystem/certificates/lets_encrypt/) to using Let's Encrypt with Home Assistant. Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details, please check the [set up encryption using Let's Encrypt](/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) blog post or this [detailed guide](https://community.home-assistant.io/t/certificate-authority-and-self-signed-certificate-for-ssl-tls/196970) to using Let's Encrypt with Home Assistant.
</div> </div>
## Adding a remote URL to Home Assistant
To set the URL under which your Home Assistant can be accessed from outside your local network, follow these steps:
1. In the bottom left, select your username to go to your {% my profile title="**User profile**" %}, and make sure **Advanced mode** is enabled.
2. Go to {% my network title="**Settings** > **System** > **Network**" %}.
3. Under **Home Assistant URL**, enter the external URL that you previously set up for your instance.

View File

@ -1,15 +1,22 @@
--- ---
title: "Storing secrets" title: "Storing secrets"
description: "Storing secrets outside of your configuration.yaml." description: "Storing secrets outside of your configuration.yaml."
related:
- docs: /docs/configuration/
title: configuration.yaml file
- docs: /docs/configuration/splitting_configuration/
title: Splitting the configuration
- docs: /docs/configuration/securing/
title: Securing your instance
--- ---
The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secret` you can remove any private information from your configuration files. This separation can also help you to keep easier track of your passwords and API keys, as they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple YAML files if you [split up your configuration](/docs/configuration/splitting_configuration/). The {% term "`configuration.yaml`" %} file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secret` you can remove any private information from your configuration files. This separation can also help you to keep easier track of your passwords and API keys, as they are all stored at one place and no longer spread across the {% term "`configuration.yaml`" %} file or even multiple YAML files if you [split up your configuration](/docs/configuration/splitting_configuration/).
## Using `secrets.yaml` ## Using `secrets.yaml`
The workflow for moving private information to `secrets.yaml` is very similar to the [splitting of the configuration](/docs/configuration/splitting_configuration/). Create a `secrets.yaml` file in your Home Assistant [configuration directory](/docs/configuration/). The workflow for moving private information to `secrets.yaml` is very similar to the [splitting of the configuration](/docs/configuration/splitting_configuration/). Create a `secrets.yaml` file in your Home Assistant [configuration directory](/docs/configuration/).
The entries for password and API keys in the `configuration.yaml` file usually looks like the example below. The entries for password and API keys in the {% term "`configuration.yaml`" %} file usually looks like the example below.
```yaml ```yaml
rest: rest:
@ -40,9 +47,9 @@ rest_password: "YOUR_PASSWORD"
When you start splitting your configuration into multiple files, you might end up with configuration in sub folders. Secrets will be resolved in this order: When you start splitting your configuration into multiple files, you might end up with configuration in sub folders. Secrets will be resolved in this order:
- A `secrets.yaml` located in the same folder as the YAML file referencing the secret, - A `secrets.yaml` located in the same folder as the YAML file referencing the secret,
- next, parent folders will be searched for a `secrets.yaml` file with the secret, stopping at the folder with the main `configuration.yaml`. - next, parent folders will be searched for a `secrets.yaml` file with the secret, stopping at the folder with the main {% term "`configuration.yaml`" %}.
To see where secrets are being loaded from, you can either add an option to your `secrets.yaml` file or use the `check_config` script. The latter is only available for Home Assistant Core installations given it's available through [`hass`](/docs/tools/hass/). To see where secrets are being loaded from, you can either add an option to your `secrets.yaml` file or use the `check_config` script. The latter is only available for {% term "Home Assistant Core" %} installations given it's available through [`hass`](/docs/tools/hass/).
*Option 1*: Print where secrets are retrieved from to the Home Assistant log by adding the following to `secrets.yaml`: *Option 1*: Print where secrets are retrieved from to the Home Assistant log by adding the following to `secrets.yaml`:

View File

@ -1,6 +1,15 @@
--- ---
title: "Securing" title: "Securing"
description: "Instructions on how to secure your Home Assistant installation." description: "Instructions on how to secure your Home Assistant installation."
related:
- docs: /docs/configuration/
- docs: /docs/configuration/secrets/
title: Secrets.yaml file
- docs: /cloud/
title: Home Assistant Cloud
- url: https://nabucasa.com/config/
title: Nabu Casa
--- ---
One major advantage of Home Assistant is that it is not dependent on cloud services. Even if you are only using Home Assistant on a local network, you should take steps to secure your instance. One major advantage of Home Assistant is that it is not dependent on cloud services. Even if you are only using Home Assistant on a local network, you should take steps to secure your instance.
@ -9,9 +18,9 @@ One major advantage of Home Assistant is that it is not dependent on cloud servi
Here's the summary of what you *must* do to secure your Home Assistant system: Here's the summary of what you *must* do to secure your Home Assistant system:
- Centralize sensitive data in [secrets](/docs/configuration/secrets/) (but do remember to back them up) - Centralize sensitive data in [secrets](/docs/configuration/secrets/) (but do remember to back them up).
- **Note**: Storing secrets in `secrets.yaml` does not encrypt them. - **Note**: Storing secrets in `secrets.yaml` does not encrypt them.
- Regularly keep the system up to date - Regularly keep the system up to date.
## Remote access ## Remote access
@ -23,9 +32,9 @@ To expose your instance to the internet, use a [VPN](https://pivpn.io), or an [S
### Extras for manual installations ### Extras for manual installations
Besides the above we advise that you consider the following to improve security: Besides the above, we advise that you consider the following to improve security:
- For systems that use SSH set `PermitRootLogin no` in your sshd configuration (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services. - For systems that use SSH, set `PermitRootLogin no` in your sshd configuration (usually `/etc/ssh/sshd_config`) and use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services.
- Lock down the host following good practice guidance, for example: - Lock down the host following good practice guidance, for example:
- [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html) (this also applies to Raspberry Pi OS) - [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html) (this also applies to Raspberry Pi OS)
- [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index), [CIS Red Hat Enterprise Linux 7 Benchmark](https://www.cisecurity.org/cis-benchmarks/) - [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index), [CIS Red Hat Enterprise Linux 7 Benchmark](https://www.cisecurity.org/cis-benchmarks/)

View File

@ -1,17 +1,32 @@
--- ---
title: "Splitting up the configuration" title: "Splitting up the configuration"
description: "Splitting the configuration.yaml into several files." description: "Splitting the configuration.yaml into several files."
related:
- docs: /docs/configuration/
title: configuration.yaml file
- docs: /examples/#example-configurationyaml
title: Example configuration files by the community
- docs: /docs/configuration/packages
title: Using packages to organize configuration files
--- ---
So you've been using Home Assistant for a while now and your `configuration.yaml` file brings people to tears or you simply want to start off with the distributed approach, here's how to split the `configuration.yaml` into more manageable (read: humanly readable) pieces. So you've been using Home Assistant for a while now and your {% term "`configuration.yaml`" %} file brings people to tears because it has become so large. Or, you simply want to start off with the distributed approach. Here's how to split the {% term "`configuration.yaml`" %} into more manageable (read: human-readable) pieces.
First off, several community members have sanitized (read: without API keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/examples/#example-configurationyaml). ## Example configuration files for inspiration
As commenting code doesn't always happen, please read on for the details. First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example files here](/examples/#example-configurationyaml).
Now despite the logical assumption that the `configuration.yaml` will be replaced by this process it will in fact remain, albeit in a much less cluttered form. As commenting code doesn't always happen, please read on to learn in detail how configuration files can be structured.
In this lighter version we will still need what could be called the core snippet: ## Analyzing the configuration files
In this section, we are going use some example configuration files and look at their structure and format in more detail.
Now you might think that the {% term "`configuration.yaml`" %} will be replaced during the splitting process. However, it will in fact remain, albeit in a much less cluttered form.
### The core configuration file
In this lighter version, we will still need what could be called the core snippet:
```yaml ```yaml
homeassistant: homeassistant:
@ -27,9 +42,11 @@ homeassistant:
customize: !include customize.yaml customize: !include customize.yaml
``` ```
### Indentation, includes, comments, and modularization
Note that each line after `homeassistant:` is indented two (2) spaces. Since the configuration files in Home Assistant are based on the YAML language, indentation and spacing are important. Also note that seemingly strange entry under `customize:`. Note that each line after `homeassistant:` is indented two (2) spaces. Since the configuration files in Home Assistant are based on the YAML language, indentation and spacing are important. Also note that seemingly strange entry under `customize:`.
`!include customize.yaml` is the statement that tells Home Assistant to insert the contents of `customize.yaml` at that point. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks. `!include customize.yaml` is the statement that tells Home Assistant to insert the parsed contents of `customize.yaml` at that point. The contents of the included file must be yaml data that is valid at the location it is included. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks.
Now before we start splitting out the different components, let's look at the other integrations (in our example) that will stay in the base file: Now before we start splitting out the different components, let's look at the other integrations (in our example) that will stay in the base file:
@ -51,9 +68,20 @@ mqtt:
state_topic: "test/some_topic2" state_topic: "test/some_topic2"
``` ```
As with the core snippet, indentation makes a difference. The integration headers (`mqtt:`) should be fully left aligned (aka no indent), and the key (`sensor:`) should be indented two (2) spaces. The list `-` under the key `sensor` should be indented another two (2) spaces followed by a single space. The `mqtt` sensor list contains two (2) configurations containing two (2) keys each. As with the core snippet, indentation makes a difference:
While some of these integrations can technically be moved to a separate file they are so small or "one off's" where splitting them off is superfluous. Also, you'll notice the # symbol (hash/pound). This represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact. - The integration headers (`mqtt:`) should be fully left aligned (aka no indent).
- The key (`sensor:`) should be indented two (2) spaces.
- The list `-` under the key `sensor` should be indented another two (2) spaces followed by a single space.
- The `mqtt` sensor list contains two (2) configurations, with two (2) keys each.
#### Comments
The # symbol (hash/pound) represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored by the software. It is for humans only. Comments allow breaking up files for readability, as well as turning off features while leaving the entry intact.
#### Modularization and granularity
While some of these integrations could technically be moved to a separate file, they are so small or "one off's" where splitting them off is superfluous.
Now, lets assume that a blank file has been created in the Home Assistant configuration directory for each of the following: Now, lets assume that a blank file has been created in the Home Assistant configuration directory for each of the following:
@ -68,7 +96,7 @@ customize.yaml
`automation.yaml` will hold all the automation integration details. `zone.yaml` will hold the zone integration details and so forth. These files can be called anything but giving them names that match their function will make things easier to keep track of. `automation.yaml` will hold all the automation integration details. `zone.yaml` will hold the zone integration details and so forth. These files can be called anything but giving them names that match their function will make things easier to keep track of.
Inside the base configuration file add the following entries: Inside the base configuration file, add the following entries:
```yaml ```yaml
automation: !include automation.yaml automation: !include automation.yaml
@ -78,9 +106,15 @@ switch: !include switch.yaml
device_tracker: !include device_tracker.yaml device_tracker: !include device_tracker.yaml
``` ```
Nesting `!include`s (having an `!include` within a file that is itself `!include`d) will also work. #### Include statements and packages to split files
Some integrations support multiple top-level `!include`s, this includes integrations defining an IoT domain, e.g. `light`, `switch`, `sensor` as well as the `automation`, `script` and `template` integrations, if you give a different label to each one. Configuration for other integrations can instead be split up by using packages. To learn more about packages, see the [Packages](/docs/configuration/packages) page. Nesting `!include` statements (having an `!include` within a file that is itself `!include`d) will also work.
Some integrations support multiple top-level `!include` statements. This includes integrations defining an IoT domain. For example, `light`, `switch`, or `sensor`; as well as the `automation`, `script`, and `template` integrations, if you give a different label to each one.
Configuration for other integrations can instead be split up by using packages. To learn more about packages, see the [Packages](/docs/configuration/packages) page.
#### Top level keys
Example of multiple top-level keys for the `light` platform. Example of multiple top-level keys for the `light` platform.
@ -189,11 +223,11 @@ 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, 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.
## Debugging configuration files ## Debugging configuration files
If you have many configuration files, Home Assistant provides a CLI that allows you to see how it interprets them, each installation type has its own section in the common-tasks about this: If you have many configuration files, Home Assistant provides a CLI that allows you to see how it interprets them. 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)

View File

@ -16,8 +16,9 @@ All states will always have an entity id, a state and a timestamp when last upda
| `state.domain` | Domain of the entity. Example: `light`. | | `state.domain` | Domain of the entity. Example: `light`. |
| `state.object_id` | Object ID of entity. Example: `kitchen`. | | `state.object_id` | Object ID of entity. Example: `kitchen`. |
| `state.name` | Name of the entity. Based on `friendly_name` attribute with fall back to object ID. Example: `Kitchen Ceiling`. | | `state.name` | Name of the entity. Based on `friendly_name` attribute with fall back to object ID. Example: `Kitchen Ceiling`. |
| `state.last_updated` | Time the state was written to the state machine in UTC time. Note that writing the exact same state including attributes will not result in this field being updated. Example: `2017-10-28 08:13:36.715874+00:00`. | | `state.last_changed` | Time the state changed in the state machine in UTC time. This is not updated if only state attributes change. Example: `2017-10-28 08:13:36.715874+00:00`. |
| `state.last_changed` | Time the state changed in the state machine in UTC time. This is not updated when there are only updated attributes. Example: `2017-10-28 08:13:36.715874+00:00`. | | `state.last_reported`| Time the state was written to the state machine in UTC time. This timestamp is updated regardless of any change to the state or a state attribute. Example: `2017-10-28 08:13:36.715874+00:00`. |
| `state.last_updated` | Time the state or state attributes changed in the state machine in UTC time. This is not updated if neither state nor state attributes changed. Example: `2017-10-28 08:13:36.715874+00:00`. |
| `state.attributes` | A dictionary with extra attributes related to the current state. | | `state.attributes` | A dictionary with extra attributes related to the current state. |
| `state.context` | A dictionary with extra attributes related to the context of the state. | | `state.context` | A dictionary with extra attributes related to the context of the state. |
@ -41,8 +42,8 @@ When an attribute contains spaces, you can retrieve it like this: `state_attr('s
Context is used to tie {% term events %} and {% term states %} together in Home Assistant. Whenever an {% term automation %} or user interaction causes states to change, a new context is assigned. This context will be attached to all events and states that happen as result of the change. Context is used to tie {% term events %} and {% term states %} together in Home Assistant. Whenever an {% term automation %} or user interaction causes states to change, a new context is assigned. This context will be attached to all events and states that happen as result of the change.
| Field | Description | | Field | Description |
| ----- | ------------------------------------------------------------------- | | ------------ | ------------------------------------------------------------------- |
| context_id | Unique identifier for the context. | | `context_id` | Unique identifier for the context. |
| user_id | Unique identifier of the user that started the change. Will be `None` if action was not started by a user (ie. started by an automation) | | `user_id` | Unique identifier of the user that started the change. Will be `None` if the action was not started by a user (for example, started by an automation). |
| parent_id | Unique identifier of the parent context that started the change, if available. For example, if an automation is triggered, the context of the trigger will be set as parent. | | `parent_id` | Unique identifier of the parent context that started the change, if available. For example, if an automation is triggered, the context of the trigger will be set as parent. |

View File

@ -325,6 +325,32 @@ List of lights that are on with a brightness of 255:
{% endraw %} {% endraw %}
### State translated
Not supported in [limited templates](#limited-templates).
The `state_translated` function returns a translated state of an entity using a language that is currently configured in the [general settings](https://my.home-assistant.io/redirect/general/).
#### State translated examples
{% raw %}
```text
{{ states("sun.sun") }} # below_horizon
{{ state_translated("sun.sun") }} # Below horizon
{{ "sun.sun" | state_translated }} # Below horizon
```
```text
{{ states("binary_sensor.movement_backyard") }} # on
{{ state_translated("binary_sensor.movement_backyard") }} # Detected
{{ "binary_sensor.movement_backyard" | state_translated }} # Detected
```
{% endraw %}
### Working with groups ### Working with groups
Not supported in [limited templates](#limited-templates). Not supported in [limited templates](#limited-templates).
@ -432,6 +458,51 @@ The same thing can also be expressed as a test:
{% endraw %} {% endraw %}
### Floors
- `floors()` returns the full list of floor IDs.
- `floor_id(lookup_value)` returns the floor ID for a given device ID, entity ID, area ID, or area name. Can also be used as a filter.
- `floor_name(lookup_value)` returns the floor name for a given device ID, entity ID, area ID, or floor ID. Can also be used as a filter.
- `floor_areas(floor_name_or_id)` returns the list of area IDs tied to a given floor ID or name. Can also be used as a filter.
#### Floors examples
{% raw %}
```text
{{ floors() }} # ['floor_id']
```
```text
{{ floor_id('First floor') }} # 'first_floor'
```
```text
{{ floor_id('my_device_id') }} # 'second_floor'
```
```text
{{ floor_id('sensor.sony') }} # 'first_floor'
```
```text
{{ floor_name('first_floor') }} # 'First floor'
```
```text
{{ floor_name('my_device_id') }} # 'Second floor'
```
```text
{{ floor_name('sensor.sony') }} # 'First floor'
```
```text
{{ floor_areas('first_floor') }} # ['living_room', 'kitchen']
```
{% endraw %}
### Areas ### Areas
- `areas()` returns the full list of area IDs - `areas()` returns the full list of area IDs
@ -482,10 +553,12 @@ The same thing can also be expressed as a test:
{% endraw %} {% endraw %}
### Integrations ### Entities for an integration
- `integration_entities(integration)` returns a list of entities that are associated with a given integration, such as `hue` or `zwave_js`. - `integration_entities(integration)` returns a list of entities that are associated with a given integration, such as `hue` or `zwave_js`.
- `integration_entities(title)` if you have multiple instances set-up for an integration, you can also use the title you've set for the integration in case you only want to target a specific device bridge. - `integration_entities(config_entry_title)` if you have multiple entries set-up for an integration, you can also use the title you've set for the integration in case you only want to target a specific entry.
If there is more than one entry with the same title, the entities for all the matching entries will be returned, even if the entries are for different integrations. It's not possible to search for entities of an untitled integration.
#### Integrations examples #### Integrations examples
@ -501,6 +574,78 @@ The same thing can also be expressed as a test:
{% endraw %} {% endraw %}
### Labels
- `labels()` returns the full list of label IDs, or those for a given area ID, device ID, or entity ID.
- `label_id(lookup_value)` returns the label ID for a given label name.
- `label_name(lookup_value)` returns the label name for a given label ID.
- `label_areas(label_name_or_id)` returns the list of area IDs tied to a given label ID or name.
- `label_devices(label_name_or_id)` returns the list of device IDs tied to a given label ID or name.
- `label_entities(label_name_or_id)` returns the list of entity IDs tied to a given label ID or name.
Each of the label template functions can also be used as a filter.
#### Labels examples
{% raw %}
```text
{{ labels() }} # ['christmas_decorations', 'energy_saver', 'security']
```
```text
{{ labels("living_room") }} # ['christmas_decorations', 'energy_saver']
```
```text
{{ labels("my_device_id") }} # ['security']
```
```text
{{ labels("light.christmas_tree") }} # ['christmas_decorations']
```
```text
{{ label_id('Energy saver') }} # 'energy_saver'
```
```text
{{ label_name('energy_saver') }} # 'Energy saver'
```
```text
{{ label_areas('security') }} # ['driveway', 'garden', 'porch']
```
```text
{{ label_devices('energy_saver') }} # ['deadbeefdeadbeefdeadbeefdeadbeef']
```
```text
{{ label_entities('security') }} # ['camera.driveway', 'binary_sensor.motion_garden', 'camera.porch']
```
{% endraw %}
### Issues
- `issues()` returns all open issues as a mapping of (domain, issue_id) tuples to the issue object.
- `issue(domain, issue_id)` returns a specific issue for the provided domain and issue_id.
#### Issues examples
{% raw %}
```text
{{ issues() }} # { ("homeassistant", "deprecated_yaml_ping"): {...}, ("cloud", "legacy_subscription"): {...} }
```
```text
{{ issue('homeassistant', 'python_version') }} # {"breaks_in_ha_version": "2024.4", "domain": "homeassistant", "issue_id": "python_version", "is_persistent": False, ...}
```
{% endraw %}
### Immediate if (iif) ### Immediate if (iif)
A common case is to conditionally return a value based on another value. A common case is to conditionally return a value based on another value.
@ -587,12 +732,16 @@ For example, if you wanted to select a field from `trigger` in an automation bas
{% endraw %} {% endraw %}
- `as_datetime()` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. - `as_datetime(value, default)` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. When the input is already a datetime object it will be returned as is. in case the input is a datetime.date object, midnight will be added as time. This function can also be used as a filter.
- `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter. - `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
- `as_local()` converts datetime object to local time. This function can also be used as a filter. - `as_local()` converts datetime object to local time. This function can also be used as a filter.
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. - `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
- `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_. - `time_since(datetime, precision)` converts a datetime object into its human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
- Using `relative_time()` will cause templates to be refreshed at the start of every new minute. If the datetime is in the future, returns 0 seconds.
A precision of 0 returns all available units, default is 1.
- `time_until(datetime, precision)` converts a datetime object into a human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
If the datetime is in the past, returns 0 seconds.
A precision of 0 returns all available units, default is 1.
- `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks. - `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks.
{% raw %} {% raw %}
@ -751,7 +900,7 @@ Examples:
Not supported in [limited templates](#limited-templates). Not supported in [limited templates](#limited-templates).
- `distance()` will measure the distance in kilometers between home, entity, coordinates. - `distance()` measures the distance between home, an entity, or coordinates. The unit of measurement (kilometers or miles) depends on the system's configuration settings.
- `closest()` will find the closest entity. - `closest()` will find the closest entity.
#### Distance examples #### Distance examples
@ -916,7 +1065,10 @@ The numeric functions and filters raise an error if the input is not a valid num
- `round(1, "half", default)` will always round to the nearest .5 value. `precision` should be 1 for this mode - `round(1, "half", default)` will always round to the nearest .5 value. `precision` should be 1 for this mode
- Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values. - Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values.
- Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values. - Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values.
- Filter `value_one|bitwise_xor(value_two)` perform a bitwise xor(\^) operation with two values.
- Filter `ord` will return for a string of length one an integer representing the Unicode code point of the character when the argument is a Unicode object, or the value of the byte when the argument is an 8-bit string. - Filter `ord` will return for a string of length one an integer representing the Unicode code point of the character when the argument is a Unicode object, or the value of the byte when the argument is an 8-bit string.
- Filter `multiply(arg)` will convert the input to a number and multiply it by `arg`. Useful in list operations in conjunction with `map`.
- Filter `add(arg)` will convert the input to a number and add it to `arg`. Useful in list operations in conjunction with `map`.
### Complex type checking ### Complex type checking

View File

@ -1,6 +1,10 @@
--- ---
title: "Troubleshooting your configuration" title: "Troubleshooting your configuration"
description: "Common problems with tweaking your configuration and their solutions." description: "Common problems with tweaking your configuration and their solutions."
related:
- docs: /docs/configuration/
- docs: /docs/configuration/customizing-devices/
title: Changing entity name and ID
--- ---
It can happen that you run into trouble while configuring Home Assistant. Perhaps an integration is not showing up or is acting strangely. This page will discuss a few of the most common problems. It can happen that you run into trouble while configuring Home Assistant. Perhaps an integration is not showing up or is acting strangely. This page will discuss a few of the most common problems.
@ -17,7 +21,7 @@ If you have incorrect entries in your configuration files you can use the config
### Problems with the configuration ### Problems with the configuration
One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. One of the most common problems with Home Assistant is an invalid {% term "`configuration.yaml`" %} or other configuration file.
- Home Assistant provides a CLI that allows you to see how it interprets them, each installation type has its own section in the common-tasks about this: - Home Assistant provides a CLI that allows you to see how it interprets them, 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)
@ -25,7 +29,7 @@ One of the most common problems with Home Assistant is an invalid `configuration
- [Core](/common-tasks/core/#configuration-check) - [Core](/common-tasks/core/#configuration-check)
- [Supervised](/common-tasks/supervised/#configuration-check) - [Supervised](/common-tasks/supervised/#configuration-check)
- The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. - The configuration files, including {% term "`configuration.yaml`" %} must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8.
- You can verify your configuration's YAML structure using [this online YAML parser](https://yaml-online-parser.appspot.com/) or [YAML Validator](https://codebeautify.org/yaml-validator/). - You can verify your configuration's YAML structure using [this online YAML parser](https://yaml-online-parser.appspot.com/) or [YAML Validator](https://codebeautify.org/yaml-validator/).
- To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltproject.io/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltproject.io/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well).
@ -96,7 +100,9 @@ The only characters valid in entity names are:
- Numbers - Numbers
- Underscores - Underscores
If you create an entity with other characters then Home Assistant may not generate an error for that entity. However you will find that attempts to use that entity will generate errors (or possibly fail silently). The entity name must not start or end with an underscore. If you create an entity with other characters from the UI, Home Assistant validates the name. If you change the name directly in the YAML file, then Home Assistant may not generate an error for that entity. However, attempts to use that entity will generate errors (or possibly fail silently).
For instructions on how to change an entity name, refer to the section on [customizing entities](/docs/configuration/customizing-devices/).
## Debug logs and diagnostics ## Debug logs and diagnostics
@ -123,3 +129,14 @@ After you download logs, you will also want to download the diagnostics for the
<img src='/images/docs/configuration/download-diagnostics.png' alt='Example of Download Diagnostics'> <img src='/images/docs/configuration/download-diagnostics.png' alt='Example of Download Diagnostics'>
Example of Download Diagnostics. Example of Download Diagnostics.
</p> </p>
### Handling unexpected restarts or crashes
Suppose you find that Home Assistant unexpectedly restarts or crashes; it's likely that you have a misbehaving integration impacting system stability. Home Assistant has a built-in debug option that can help find implementation errors. It can also block many unsafe thread operations from crashing the system. Enabling debug has a slight performance impact on the system and is not recommended for long-term use. To enable debug, add the following to your {% term "`configuration.yaml`" %}:
```yaml
homeassistant:
debug: true
```
Once debug is enabled, periodically check [Home Assistant System Logs](https://my.home-assistant.io/redirect/logs) for new messages.

View File

@ -1,13 +1,30 @@
--- ---
title: "YAML" title: "YAML syntax"
description: "Details about YAML to configure Home Assistant." description: "Details about the YAML syntax used to configure Home Assistant."
related:
- docs: /docs/configuration/
title: configuration.yaml file
- docs: /docs/configuration/secrets/
title: Storing private data in separate file
- docs: /docs/automation/yaml/
title: Automation.yaml
- docs: /docs/configuration/troubleshooting/
title: Troubleshooting the configuration files
- docs: /docs/configuration/#validating-the-configuration
title: Validating the configuration
- url: https://developers.home-assistant.io/docs/documenting/yaml-style-guide/
title: YAML Style Guide for Home Assistant developers
--- ---
Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. YAML might take a while to get used to but is powerful in allowing you to express complex configurations. Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. While most integrations can be configured through the UI, some integrations require you to edit your [`configuration.yaml`](/docs/configuration/) file to specify its settings.
While more and more integrations are configured through the UI, for some, you will add code in your [`configuration.yaml`](/docs/configuration/) file to specify its settings. ## YAML Style Guide
The following example entry assumes that you would like to set up the [notify integration](/integrations/notify) with the [pushbullet platform](/integrations/pushbullet). This page gives a high-level introduction to the YAML syntax used in Home Assistant. For a more detailed description and more examples, refer to the [YAML Style Guide for Home Assistant developers](https://developers.home-assistant.io/docs/documenting/yaml-style-guide/).
## A first example
The following YAML example entry assumes that you would like to set up the [notify integration](/integrations/notify) with the [pushbullet platform](/integrations/pushbullet).
```yaml ```yaml
notify: notify:
@ -21,22 +38,20 @@ notify:
The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. **Beware that if you specify duplicate keys, the last value for a key is used**. The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. **Beware that if you specify duplicate keys, the last value for a key is used**.
## Indentation in YAML
In YAML, indentation is important for specifying relationships. Indented lines are nested inside lines that are one level higher. In the above example, `platform: pushbullet` is a property of (nested inside) the `notify` integration. In YAML, indentation is important for specifying relationships. Indented lines are nested inside lines that are one level higher. In the above example, `platform: pushbullet` is a property of (nested inside) the `notify` integration.
Getting the right indentation can be tricky if you're not using an editor with a fixed-width font. Tabs are not allowed to be used for indentation. The convention is to use 2 spaces for each level of indentation. Getting the right indentation can be tricky if you're not using an editor with a fixed-width font. Tabs are not allowed to be used for indentation. The convention is to use 2 spaces for each level of indentation.
To check if your YAML syntax is correct before loading it into Home Assistant, you can use the third-party service [YAML Validator](https://codebeautify.org/yaml-validator/) (not maintained by the Home Assistant community). ## Comments
<div class='note'> Strings of text following a `#` are comments. They are ignored by the system. Comments explain in plain language what a particular code block is supposed to do. For future-you or someone else looking at the file.
Pay attention to not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in either a [separate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this security problem. ### Example with comment and nesting
</div>
Strings of text following a `#` are comments and are ignored by the system.
The next example shows an [input_select](/integrations/input_select) integration that uses a block collection for the values of options. The next example shows an [input_select](/integrations/input_select) integration that uses a block collection for the values of options.
The other properties (like `name:`) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. The other properties (like `name:`) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here, `threat` is the name of the input_select. The values for it are everything nested below it.
```yaml ```yaml
input_select: input_select:
@ -51,6 +66,8 @@ input_select:
initial: 0 initial: 0
``` ```
### Example of nested mapping
The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors).
```yaml ```yaml
@ -65,8 +82,8 @@ sensor:
### Environment variables ### Environment variables
On Home Assistant Core installations, you can include values from your system's environment variables with `!env_var`. On {% term "Home Assistant Core" %} installations, you can include values from your system's environment variables with `!env_var`.
Note that this will only work for Home Assistant Core installations, in a scenario where it is possible to specify these. Note that this will only work for {% term "Home Assistant Core" %} installations, in a scenario where it is possible to specify these.
Regular Home Assistant users are recommended to use `!include` statements instead. Regular Home Assistant users are recommended to use `!include` statements instead.
```yaml ```yaml
@ -120,3 +137,9 @@ Not quoting the value may generate an error such as:
```txt ```txt
not a valid value for dictionary value @ data not a valid value for dictionary value @ data
``` ```
## Validating YAML syntax
With all these indents and rules, it is easy to make a mistake. The best way to check if your YAML syntax is correct (validate) depends on the editor you use. We can't list them all here.
- If you edit the files directly in Home Assistant, refer to the section: [Validating the configuration](/docs/configuration/#validating-the-configuration)

View File

@ -15,7 +15,7 @@ Think of this in a parallel to speed and distance: Power is the speed you are go
Therefore Energy (kiloWatt-hour) is not an average of the Power you are consuming over a given period of time (the unit of the average power would be Watt or kiloWatt again). Energy is the integral (mathematical operation) of the Power function. Therefore Energy (kiloWatt-hour) is not an average of the Power you are consuming over a given period of time (the unit of the average power would be Watt or kiloWatt again). Energy is the integral (mathematical operation) of the Power function.
This difference is very important as you need to use the proper entities in our Energy Panel. This difference is very important as you need to use the proper entities in our Energy dashboard.
## Creating an Energy Sensor out of a Power Sensor ## Creating an Energy Sensor out of a Power Sensor
@ -29,9 +29,9 @@ If you are using a 3rd party device (e.g. not reading directly from your utility
To accomplish such, you can use the [utility_meter integration](/integrations/utility_meter/). With this integration, you define as many tariffs as required (in accordance with your utility provider contract) and HA will be able to differentiate energy consumptions in each of the tariffs. Please note that each utility provider has its own time schedules for peak and off-peak and you are required to create an automation that switches the utility_meter entity from one tariff to the other. To accomplish such, you can use the [utility_meter integration](/integrations/utility_meter/). With this integration, you define as many tariffs as required (in accordance with your utility provider contract) and HA will be able to differentiate energy consumptions in each of the tariffs. Please note that each utility provider has its own time schedules for peak and off-peak and you are required to create an automation that switches the utility_meter entity from one tariff to the other.
## The energy panel is not visible ## The energy dashboard is not visible
If you do not see the Energy panel in the sidebar, make sure you have not removed [`default_config:`](/integrations/default_config/) from your `configuration.yaml`. If you have, you will need to add the `energy:` integration manually. If you do not see the Energy dashboard in the sidebar, make sure you have not removed [`default_config:`](/integrations/default_config/) from your {% term "`configuration.yaml`" %}. If you have, you will need to add the `energy:` integration manually.
## Troubleshooting missing entities ## Troubleshooting missing entities

View File

@ -31,4 +31,4 @@ We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to devel
#### Read the Gas Meter using a magnetometer #### Read the Gas Meter using a magnetometer
[Diaphragm gas meters](https://en.wikipedia.org/wiki/Gas_meter#Diaphragm/bellows_meters) are the most common type of gas meter, and their movement can frequently be observed with a magnetometer. The [QMC5883L](https://esphome.io/components/sensor/qmc5883l.html) is a common and inexpensive option that ESPHome supports. Many posts on the forums of users having luck with this method, such as [this one](https://community.home-assistant.io/t/water-gas-meter-monitoring-via-magnetometer-sine-wave-to-pulse-issue/245904). [Diaphragm/bellows gas meters](https://en.wikipedia.org/wiki/Gas_meter#Diaphragm/bellows_meters) are the most common type of gas meter, seen in almost all residential installations, and their movement can frequently be observed with a magnetometer. The [QMC5883L](https://esphome.io/components/sensor/qmc5883l.html) and [HMC5883L](https://esphome.io/components/sensor/hmc5883l.html) are common and inexpensive options that ESPHome supports. A project that makes it easy to use these magnetometers and calibrate them is [this water-gas-meter project on GitHub](https://github.com/tronikos/esphome-magnetometer-water-gas-meter).

View File

@ -19,6 +19,6 @@ 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. 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).
<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;'>

View File

@ -5,32 +5,66 @@ description: "Learn how to add information about your water usage to Home Assist
Home Assistant allows you to track your water usage in the home energy management too. Home Assistant allows you to track your water usage in the home energy management too.
Although water is not strictly "energy", it is still a valuable resource to track and monitor as it is often tightly coupled with energy usage (like gas). Additionally, it can help you reduce your ecological footprint by using less water. Although water usage is not strictly "energy", it is still a valuable resource to track and monitor as it is often tightly coupled with energy usage (like gas). Additionally, it can help you reduce your ecological footprint by using less water.
## Hardware ### Home water meters
Home Assistant will need to know the amount of water that is being consumed in order to be able to track it. Several hardware options are available to do this. There are several ways to measure water usage in your home. Multiple methods exist for reading your water usage. Older water meters typically feature a common arrow or only display total consumption. For these meters, you may require an [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) with an ESP32 camera. While effective, this solution can be tedious to set up as it leans towards a DIY approach.
Newer water meters are equipped with a rotary disk that can be read using two methods. The first method utilizes light sensors, while the second method employs proximity sensors. The proximity sensor detects changes in the magnetic field, with each rotation of the disk representing one liter of water used. Meanwhile, the light sensor method operates on an autocorrelation technique, providing accuracy down to 100 milliliters instead of the traditional one-liter step.
For most water meters, the rotary encoder disk suffices the light sensor version. However, some older or specialized meters may necessitate the use of a proximity meter instead.
Home Assistant also has integrations build into the platform that connect with existing products
## Home Assistant integrations
Home Assistant will need to know the amount of water that is being consumed to be able to track usage. Several [water metering (fluid flow rate sensor device)](https://en.wikipedia.org/wiki/Water_metering) hardware options are available to do this. Depending on your setup, the required hardware is provided by your public water utility company, or you may need to buy your own.
Some hardware with water meters may also provide additional practical functions or sensors, such as [valve](/integrations/valve), for example, for controlling water shutoff, or temperature and pressure (to enable freeze alarms).
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:
- [Flo](/integrations/flo) - [Flo](/integrations/flo)
- [Flume](/integrations/flume) - [Flume](/integrations/flume)
- [HomeWizard Energy](/integrations/homewizard) - [HomeWizard Energy](/integrations/homewizard)
- [StreamLabs](/integrations/streamlabswater)
- [Suez Water](/integrations/suez_water)
Alternatively, the following shops sell ESPHome-based devices, that use a proximity sensor to detect a rotating magnet in your water meter and use that pulse to count each liter of water used. There are also products for water usage monitoring that are based on existing common IoT protocol standards:
- [S0tool](https://huizebruin.github.io/s0tool/) ("Made for ESPHome" approved) - [Z-Wave](/integrations/zwave_js)
- [Zigbee](/integrations/zha)
- [Matter (BETA)](/integrations/matter)
## Community-made sensors
If your water meter lacks a rotary disk, magnetic disk, or coil. There are alternative solutions available to seamlessly integrate water monitoring into your smart home setup:
- [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/
If you have a Culligan Water Softener, you may be able to interface with the inbuilt `DEBUG PORT` and receive water usage stats including `Gallons` (gal), `Gallons Per Minute` (gal/min), and `Gallons to Recharge` (gal):
- [cullAssistant](https://github.com/LelandSindt/cullAssistant) (ESPHome)
Alternatively, the following shops sell ESPHome-based devices that use a 3-phase light sensor to detect a rotating disk in your water meter and convert this to the amount of water used in milliliters (ml):
- [Muino water meter reader](https://watermeter.muino.nl/) (ESPHome)
Alternatively, the following shops sell ESPHome-based devices, that use a proximity sensor to detect a rotating magnet in your water meter and use that pulse to count each liter of water used:
- [S0tool](https://s0tool.nl/) ("Made for ESPHome" approved)
- [Waterlezer dongle](https://smart-stuff.nl/product/esphome-waterlezer-dongle/) (Dutch) - [Waterlezer dongle](https://smart-stuff.nl/product/esphome-waterlezer-dongle/) (Dutch)
- [Slimme Watermeter Gateway](https://smartgateways.nl/product/slimme-watermeter-gateway/) (Dutch) - [Slimme Watermeter Gateway](https://smartgateways.nl/product/slimme-watermeter-gateway/) (Dutch)
- [watermeterkit.nl](https://watermeterkit.nl/) (Dutch) - [watermeterkit.nl](https://watermeterkit.nl/) (Dutch)
Alternatively, the following shops sell ESPHome-based devices that use a 3-phase light sensor to detect a rotating disk in your water meter and convert this to the amount of water used in milliliters (ml). ## DIY
- [Muino water meter reader](https://watermeter.muino.nl/)
Maybe you like to build one yourself? Maybe you like to build one yourself?
- Pieter Brinkman has quite a [nice blog article on how to create your own water sensor](https://www.pieterbrinkman.com/2022/02/02/build-a-cheap-water-usage-sensor-using-esphome-home-assistant-and-a-proximity-sensor/) using ESPHome, or [build a water meter](https://www.ztatz.nl/p1-monitor-watermeter/) that works with the [P1 Monitor](/integrations/p1_monitor) integration. - Pieter Brinkman has quite a [nice blog article on how to create your own water sensor](https://www.pieterbrinkman.com/2022/02/02/build-a-cheap-water-usage-sensor-using-esphome-home-assistant-and-a-proximity-sensor/) using ESPHome, or [build a water meter](https://www.ztatz.nl/p1-monitor-watermeter/) that works with the [P1 Monitor](/integrations/p1_monitor) integration.
- [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg) - [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg)
- [watermeter](https://github.com/nohn/watermeter) running classic OCR and statistical pattern recognition on any system supporting Docker - [watermeter](https://github.com/nohn/watermeter) running classic OCR and statistical pattern recognition on any system supporting Docker
- [Muino water meter reader 3-phase](https://muino.nl/product/3-phase-muino-light-sensor-encoder/) Using the 3-phase sensor technique, a battery-powered version can be possible with this sensor.
- [Read water meter with magnetometer](https://github.com/tronikos/esphome-magnetometer-water-gas-meter) using [QMC5883L](https://esphome.io/components/sensor/qmc5883l.html) or [HMC5883L](https://esphome.io/components/sensor/hmc5883l.html), common and inexpensive magnetometers. This should be compatible with all the water meters the Flume water sensor is compatible with, which is [compatible](https://help.flumewater.com/en/articles/1618594-is-the-flume-device-compatible-with-all-water-meters) with about 95% of water meters in the United States.
If you manually integrate your sensors, for example, using the [MQTT](/integrations/mqtt) or [RESTful](/integrations/rest) integrations: Make sure you set and provide the `device_class`, `state_class`, and `unit_of_measurement` for those sensors. If you manually integrate your sensors, for example, using the [MQTT](/integrations/mqtt) or [RESTful](/integrations/rest) integrations: Make sure you set and provide the `device_class`, `state_class`, and `unit_of_measurement` for those sensors.

View File

@ -1,93 +0,0 @@
---
title: "Browsers"
description: "Browser compatibility list"
---
Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. The "Release" column contains the release number which was tested. This doesn't mean that older or newer releases will not work.
If a browser is listed as working but you are still having problems, it is possible that some add-on or extension may be the problem. Some add-ons or extension are known to cause issue with the frontend, but it's not possible to test them all.
If you are having issues with the frontend displaying correctly, you should disable all your add-ons or extensions and enable them one at a time. At last but not least, consider restarting your browser.
We would appreciate if you help to keep this page up-to-date and add feedback.
## Microsoft Windows
| Browser | Release | State | Comments |
| :------------------------ |:---------------|:-----------|:-------------------------|
| Internet Explorer ([IE]) | 11 | Not supported | Does not support promises. |
| Microsoft [Edge] | deli. Win 10 | works | Streaming updates not working. |
| [Chrome] | 61.0.3163.100 | works | |
| [Firefox] | 62.0.3 | works | |
| [Iridium] | 48.2 | works | |
| [Opera] | 42.0.2393.351 | works | |
## macOS
| Browser | Release | State | Comments |
| :-------------------- |:---------------|:-----------|:-------------------------|
| [Safari] | | works | Not working with Safari Technology Preview 112 beta |
## Linux
| Browser | Release | State | Comments |
| :-------------------- |:---------------|:-----------|:-------------------------|
| [Firefox] | 62.0 | works | |
| [Midori] | 0.5.11 | works | |
| [Chromium] | 69.0.3497.81 | works | |
| [Conkeror] | 1.0.2 | works | |
| [Tor Browser] | 7.0.8 | works | |
| [Konqueror] | | unknown | |
| [Uzbl] | 0.9.0 | works | |
| [Opera] | 42.0.2393.351 | works | |
| [Lynx] | 2.12 | fails | loads empty page |
| [elinks] | | fails | page with manifest and import |
| [w3m] | 0.5.3 | fails | display the icon shown while loading HA |
| [Epiphany] | 3.18.5 | works | |
| [surf] | 0.7 | works | |
| [Chrome] | 71.0.3578.98 | works | |
| [Waterfox] | 56.2.6 | fails | |
## Android
| Browser | Release | State | Comments |
| :-------------------- |:---------------|:-----------|:-------------------------|
| [Chrome] | 50.0.2661.89 | works | Can also be added to desktop |
| [Firefox] | 46.0.1 | works | Can also be added to desktop |
| [Opera] | 42.0.2246.112628 | works | Can also be added to desktop |
## iOS
| Browser | Release | State | Comments |
| :-------------------- |:---------------|:-----------|:-------------------------|
| [Safari] | | works | Can also be added to desktop. Not working in iOS 14 beta 5. |
| [Chrome] | | works | Not working in iOS 14 beta 5. |
There are reports that devices running with iOS prior to iOS 10, especially old iPads, are having trouble. Devices running iOS 14 beta 5, you will not be able to interact with Home Assistant controls.
## webOS
| Browser | Release | State | Comments |
| :-------------------- |:---------------|:-----------|:-------------------------|
| [LG webOS TV Built-in]| webOS 04.80.03 | works | including magic remote |
[Chrome]: https://www.google.com/chrome/
[Chromium]: https://www.chromium.org/
[Conkeror]: http://conkeror.org/
[Edge]: https://www.microsoft.com/en-us/edge
[elinks]: http://elinks.or.cz/
[Epiphany]: https://wiki.gnome.org/Apps/Web
[Firefox]: https://www.mozilla.org/en-US/firefox/
[IE]: https://support.microsoft.com/en-us/help/17621/internet-explorer-downloads
[Iridium]: https://iridiumbrowser.de/
[Konqueror]: https://konqueror.org/
[Lynx]: https://lynx.browser.org/
[Midori]: https://astian.org/en/midori-browser/
[Opera]: https://www.opera.com/
[Safari]: https://www.apple.com/safari/
[surf]: https://surf.suckless.org/
[Tor Browser]: https://www.torproject.org/
[Uzbl]: https://www.uzbl.org/
[w3m]: https://w3m.sourceforge.net/
[Waterfox]: https://www.waterfox.net
[LG webOS TV Built-In]: https://www.lg.com/uk/support/help-library/details-on-enjoying-internet-browsing-on-your-lg-webos-tv-CT00008334-1435838149474

View File

@ -1,15 +1,22 @@
--- ---
title: "I'm locked out!" title: "I'm locked out!"
description: "Options for regaining access" description: "Options for regaining access"
related:
- docs: /common-tasks/os/#listing-all-users-from-the-command-line
title: Listing all usernames via command line
- url: https://yellow.home-assistant.io/guides/factory-reset/
title: Reset the Yellow
- url: https://green.home-assistant.io/guides/reset/
title: Reset the Green
--- ---
The sections below deal with recovering from a situation where you are not able to sign in, The sections below deal with recovering from a situation where you are not able to sign in,
or need to recover your data. or need to recover your data.
## Forgot user name ## Forgot username
If youve forgotten your username, ask the owner to help you. If youve forgotten your username, ask the owner to help you.
If you are the owner and have forgotten your user name, then you need to [prepare the system to start a new onboarding process](/docs/locked_out/#to-prepare-the-system-to-start-a-new-onboarding-process). If you are using the {% term "Home Assistant Operating System" %} and have access to the Home Assistant server, you can connect a terminal and enter the `auth list` command. This command lists all users that are registered on your Home Assistant.
## Forgot password ## Forgot password
@ -49,9 +56,9 @@ Use this procedure only if the following conditions are met:
- [Using the terminal](https://green.home-assistant.io/guides/use-terminal/) - [Using the terminal](https://green.home-assistant.io/guides/use-terminal/)
- If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Green in the step above. - If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Green in the step above.
2. Once you have opened the Home Assistant command line, enter the following command: 2. Once you have opened the Home Assistant command line, enter the following command:
- Note: `existing_user` is a placeholder. Replace it with your user name. - Note: `existing_user` is a placeholder. Replace it with your username.
- Note: `new_password` is a placeholder. Replace it with your new password. - Note: `new_password` is a placeholder. Replace it with your new password.
- **Command**: `auth reset --username existing_user --password new_password` - **Command**: `ha auth reset --username existing_user --password new_password`
- **Troubleshooting**: If you see the message `zsh: command not found: auth`, you likely did not enter the command in the serial console connected to the device itself, but in the terminal within Home Assistant. - **Troubleshooting**: If you see the message `zsh: command not found: auth`, you likely did not enter the command in the serial console connected to the device itself, but in the terminal within Home Assistant.
3. You can now log in to Home Assistant using this new password. 3. You can now log in to Home Assistant using this new password.

View File

@ -0,0 +1,55 @@
---
title: "Grouping your assets"
description: "Grouping your assets makes it easier to find them and allows you to target groups in automations."
related:
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/floors/
title: Floors
- docs: /docs/organizing/labels/
title: Labels
- docs: /docs/organizing/categories/
title: Categories
---
Once you have more devices, you may want to target entire groups of devices in automations. It also becomes more challenging to find items in lists. There are a few tools to group your assets: [Areas](#areas), [floors](#floors), [labels](#labels), and [categories](#categories).
| Taxonomy | Automation target | Entity can have multiple |
| -------- | ----------------- | ------------------------ |
| Area | ✅ | ❌ |
| Floor | ✅ | ❌ |
| Label | ✅ | ✅ |
| Category | ❌ | ❌ |
## Area
- Groups {% term devices %} and {% term entities %}.
- Can be assigned to one floor.
- Reflects a physical area (or room) in your home.
- Can be used in automations: Allows targeting an entire group of devices with a service call. For example, turning off all the lights in the living room.
- Areas can also be used to automatically generate cards, such as the [Area card](/dashboards/area/).
## Floor
- Groups areas.
- {% term Devices %} and {% term entities %} cannot be assigned to floors, but to areas only.
- Can have multiple areas.
- Can be used in automations and scripts as a target for actions. For example, to turn off all the lights on the downstairs floor when you go to bed.
<img class="no-shadow" src='/images/organizing/floors.png' alt='Screenshots showing areas settings page, which now also shows the areas grouped by floor.'>
## Labels
- Can be assigned to areas, devices, entities, automations, scenes, scripts, and helpers.
- Can be used in automations and scripts as a target for actions and services.
- Labels can also be used to filter data in tables. For example, you can filter the list of devices to show only devices with the label `heavy energy usage` or turn these devices off when there is not a lot of solar energy available.
<img class="no-shadow" src='/images/organizing/labels.png' alt='Screenshots showing the new labels assigned to automations.'>
## Category
- Groups items in a table.
- Categories are unique for each table. The automations page can have different categories than the scene, scripts, or helpers settings page.
<img class="no-shadow" src='/images/organizing/categories.png' alt='Screenshots the new categories. Automations are grouped into their categories, making it easier to get an overview or to filter them.'>

View File

@ -0,0 +1,90 @@
---
title: "Areas"
description: "Group your devices and entities in areas and group areas in floors."
related:
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/
- docs: /docs/organizing/labels/
title: Labels
- docs: /docs/organizing/categories/
title: Categories
- docs: /docs/configuration/templating/#areas
title: Using areas in template
---
An area in Home Assistant is a logical grouping of {% term devices %} and {% term entities %} that are meant to match areas (or rooms) in the physical world of your home. For example, the "Living room" area groups devices and entities in your living room. Areas allow you to target an entire group of devices with a service call. For example, turning off all the lights in the living room.
Areas can be assigned to floors. Areas can also be used to automatically generate cards, such as the [Area card](/dashboards/area/).
## Creating an area
Follow these steps to create a new area from the **Areas** view.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and select **Create area**.
2. In the dialog, enter the area details:
- Give the area a **Name** (required).
- Add an icon (We use [Material icons](https://pictogrammers.com/library/mdi/)).
- Assign the area to a floor.
- If you have not created floors yet, you can [create a new one](/docs/organizing/floors/#creating-a-floor).
- The number can be negative. For example for underground floors.
- This number can later be used for sorting.
- Add an image representing that area.
- Add an **Alias**.
- Aliases are alternative names used in [voice assistants](/voice_control/aliases/) to refer to an area, entity, or floor.
![Create area dialog](/images/organizing/create_area_01.png)
3. Select **Add**.
**Result**: A new area is created.
## Assigning areas to floors and add labels
If an area has not yet been assigned to a floor, it is shown in the **Unassigned areas** section. Follow these steps to assign an area to a floor.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and select **Create area**.
2. On the area card, select the pencil icon.
3. In the dialog, select the floor and add labels, if you like.
## Assigning an area to multiple items
You can assign an area to multiple items at once in the automation, scene, script, and device pages.
1. Depending on what you want to assign, go to one of the following pages:
- For automations, scripts, or scenes {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
- For devices, go to {% my devices title="**Settings** > **Devices & services** > **Devices**" %}.
2. In the list, [select all the items](/docs/organizing/filtering#selecting-multiple-items-in-a-table) you want to assign to an area.
![Screenshot showing how to assign multiple devices to an area](/images/organizing/area_assign_devices.png)
3. In the top right corner, select **Move to area** and select the target area from the list.
## Editing an area
Follow these steps to edit an area.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and on the area card, select the pencil icon.
2. In the dialog, adjust the area details you want to change:
- Edit the area **Name**.
- Add an icon (We use [Material icons](https://pictogrammers.com/library/mdi/)).
- Assign the area to a floor.
- If you have not created floors yet, you can [create a new one](/docs/organizing/floors/#creating-a-floor).
- The number can be negative. For example for underground floors.
- This number can later be used for sorting.
- Add an image representing that area.
- Add an **Alias**.
- Aliases are alternative names used in [voice assistants](/voice_control/aliases/) to refer to an area, entity, or floor.
## Deleting an area
Follow these steps to delete an area. It will be removed from all the floors it was assigned to. All the devices that were assigned to this area will become unassigned.
If you used this area in automations or script as targets, or with voice assistant, these will no longer work.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and select the area card.
2. In the top right corner, select the three dot menu. Then, select **Delete**.
![Delete area](/images/organizing/area_delete.png)
3. If you used this area in automations or script as targets, or with voice assistant, they will no longer work.
- You can adjust or delete the related scripts or automations.
4. If you still had devices in that area, they are no longer assigned to any room.
- If you have moved the devices, you can now reassign them to a new area.

View File

@ -0,0 +1,56 @@
---
title: "Categories"
description: "Use categories to group and filter your table items"
related:
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/floors/
title: Floors
- docs: /docs/organizing/labels/
title: Labels
---
Categories let you group and filter items in a table. Like labels, categories allow grouping irrespective of the items physical location. For example, on the automations page, you can create the categories “Notifications” or “NFC tags” to view your automations grouped or filtered. These categories group automations on the automation page, but have no effect anywhere else. Categories are unique for each table. The automations page can have different categories than the scene, scripts, or helpers settings page.
## Creating a category
Follow these steps to create a new category.
1. Go to {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
2. In the top left, select the **Filters** button.
![Select the filter button](/images/organizing/filters_01.png)
3. Select **Category**, then **Add category**.
4. Enter a name, select an icon and select **Add**.
**Result**: A new category is created.
## Assigning a category
1. Go to {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
2. To assign a category to a single item:
- Find the item in the list and select the three dots menu.
- Select **Assign category** and select the category from the list.
- If the category is not in the list, select **Add new category** and make a new one.
3. To assign a category to multiple items:
- Select the <img height="28px" src="/images/organizing/multiselect_icon.png" alt="Multiselect icon"/> button.
- From the list, select all the items to which you want to apply a category.
- In the top right corner, select **Move to category**.
- Then, select the category from the list.
4. Once categories are applied, the table items are grouped by those categories.
- The example shows 2 categories: Coffee and housekeeping.
![Group table items by category](/images/organizing/category_02.png)
## Editing or deleting a category
To rename or delete a category, follow these steps:
1. Go to {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
2. In the top left, select the **Filters** button.
![Select the filter button](/images/organizing/filters_01.png)
3. In the list, find the category you want to edit and select the three dot menu next to it.
4. Select **Edit category** or **Delete category**.
![Screenshot showing the edit and delete buttons for categories](/images/organizing/edit-delete-category.png)

View File

@ -0,0 +1,62 @@
---
title: "Filtering your assets"
description: "Filter for items in tables."
related:
- docs: /docs/organizing/floors/
title: Floors
- docs: /docs/organizing/labels/
title: Labels
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/categories/
title: Categories
- docs: /docs/organizing/
title: Grouping your assets
- docs: /common-tasks/general/
title: Enabling or disabling entities and automations
---
When working with tables, you can select multiple items to apply an action. If you have [grouped](/docs/organizing/) items by assigning them to floors, areas, labels, or directories, you can also filter your data accordingly.
## Selecting multiple items in a table
1. In your table, select the <img height="28px" src="/images/organizing/multiselect_icon.png" alt="Multiselect icon"/> button.
![Screenshots point out the enable selection mode button in the toolbar of the tables in Home Assistant](/images/blog/2024-04/enable-selection-mode.png)
2. In the list, select the items of interest.
![Selecting multiple elements in a list](/images/organizing/multiselect_01.png)
3. You can now apply changes to all selected elements, such as [applying labels](/docs/organzing/labels/) or [enabling or disabling entities and automations](/common-tasks/general/).
## Filtering items in a table
You can filter a table so that only items matching certain criteria are shown.
1. In the top left corner above the table, select the **Filters** button.
![Select the filter button](/images/organizing/filters_01.png)
2. In the filters panel, select your filter criteria.
- You can filter for [floors](/docs/organizing/floors/), [areas](/docs/organizing/areas/), [labels](/docs/organizing/labels/), and [categories](/docs/organizing/categories/) if you have previously defined them.
- The list of available criteria depends on the type of table.
![Screenshots showing the filter panel that tables can have, allowing you to easily find what you are looking for](/images/organizing/filter-panel.png)
## Grouping and sorting items in a table
You can group items in a table according to certain criteria. The number of shown items stays the same. No items will be hidden.
1. In the top right above the table, select the **Group by** button.
2. The items will be grouped according to the criteria you chose.
- The list of available criteria depends on the type of table.
- The example shows a list of devices, grouped by manufacturer.
- In contrast, the entities table does not allow grouping by manufacturer, but by entity domains.
![Select the Group by button](/images/organizing/table_group_01.png)
3. To sort the items, select the **Sort by** button.
4. To get a better overview, you can collapse groups in the list.
![Collapse groups](/images/organizing/table_group_collapse.png)

View File

@ -0,0 +1,50 @@
---
title: "Floors"
description: "Group your areas per floor"
related:
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/
- docs: /docs/organizing/labels/
title: Labels
- docs: /docs/configuration/templating/#floors
title: Using floors in templates
- docs: /voice_control/aliases/
title: Using floor alias for voice assistants
---
A floor in Home Assistant is a logical grouping of areas meant to match your home's physical floors. Devices and entities
cannot be assigned to floors directly but to areas. Floors can be used in automations and scripts as a target for actions. For example, to turn off all the lights on the downstairs floor when you go to bed.
## Creating a floor
Follow these steps to create a new floor.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and select **Create floor**.
2. In the dialog, enter the floor details:
- Give the floor a **Name** (required).
- Add a floor **Level**.
- The number can be negative. For example for underground floors.
- This number can later be used for sorting.
- Add an icon (We use [Material icons](https://pictogrammers.com/library/mdi/)).
- Add an **Alias**.
- Aliases are alternative names used in [voice assistants](/voice_control/aliases/) to refer to an entity, area, or floor.
![Create floor dialog](/images/organizing/create_floor_01.png)
3. Select **Add**.
**Result**: A new floor is created.
![Create floor dialog](/images/organizing/create_floor_02.png)
4. You can now [assign areas to that floor](/docs/organizing/areas/#assigning-areas-to-floors-and-add-labels).
## Deleting a floor
Follow these steps to delete a floor. Areas that are assigned to a floor will become unassigned. Automations and scripts or voice assistants that used a floor as a target will no longer work as they no longer have a target.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %}.
2. Next to the floor, select the three dots menu and select **Delete floor**.
![Screenshot showing the dialog to delete a floor](/images/organizing/floor_delete.png)
3. If you have automations, scripts, or voice assistants that used floors as a target, you will need to update these.

View File

@ -0,0 +1,73 @@
---
title: "Labels"
description: "Label your areas, devices, entities, automations, scripts, and helpers. Then, filter by label or run an automation on all entities with that label."
related:
- docs: /docs/organizing/areas/
title: Areas
- docs: /docs/organizing/floors/
title: Floors
- docs: /docs/organizing/categories/
title: Categories
- docs: /docs/configuration/templating/#labels
title: Using labels in templates
---
Labels in Home Assistant allow grouping elements irrespective of their physical location or type. Labels can be assigned to areas, devices, entities, automations, scenes, scripts, and helpers. Labels can be used in automations and scripts as a target for actions and services. Labels can also be used to filter data. For example, you can filter the list of devices to show only devices with the label `heavy energy usage` or turn these devices off when there is not a lot of solar energy available.
## Creating a label
Follow these steps to create a new label from the **Labels** view.
1. Go to {% my labels title="**Settings** > **Areas, labels & zones**" %} and on top, select the **Labels** tab.
2. Select the **Create label** button.
3. In the dialog, enter the label details:
- Give the label a **Name** (required).
- Add an icon (We use [Material icons](https://pictogrammers.com/library/mdi/)).
- Add a **Color**.
![Create label dialog](/images/organizing/create_label_01.png)
4. Select **Create**.
**Result**: A new label is created.
## Applying labels
Follow these steps to apply a label
1. To apply a label to an area:
- Go to {% my areas title="**Settings** > **Areas, labels & zones**" %}.
- On the area card, select the pencil icon.
- Select one or more labels or select **Add new label** to create a new one.
2. To apply a label to a device, entity, or helper:
- Go to **{% my integrations title="Settings > Devices & Services" %}** and open the respective tab.
- Select the <img height="28px" src="/images/organizing/multiselect_icon.png" alt="Multiselect icon"/> button.
- From the list, select all the list entries to which you want to apply a label.
- In the top right corner, select **Add label**. Then, select the labels from the list.
![Apply label](/images/organizing/labels_add_05.png)
3. To apply a label to an automation, scene, or script:
- Go to {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
- Select the <img height="28px" src="/images/organizing/multiselect_icon.png" alt="Multiselect icon"/> button.
- From the list, select all the list entries to which you want to apply a label.
- In the top right corner, select the three dots menu, then select **Add label**. Then, select the labels from the list.
## Deleting a label
Follow these steps to delete a label. It will be removed from all the list entries it was applied to.
If you used this label in automations or script as targets, you need to adjust those.
1. Go to {% my labels title="**Settings** > **Areas, labels & zones**" %} and on top, select the **Labels** tab.
2. In the list of labels, find the label you want to delete and select the three dots menu.
3. Select **Delete**.
4. If you used this label in automations or script as targets, you need to adjust those.
## Removing labels
1. Go to the data table that contains the element from which you want to remove the label:
- Go to **{% my integrations title="Settings > Devices & Services" %}** and open the respective tab.
- Or, go to {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
2. Select the <img height="28px" src="/images/organizing/multiselect_icon.png" alt="Multiselect icon"/> button.
- From the list, select all the items from which you want to remove a label.
- In the top right corner, select the three dots menu, then select **Add label**.
- Then, deselect the checkbox for the label you want to remove.

View File

@ -9,7 +9,7 @@ The Integration Quality Scale scores each integration based on the code quality
## No score ## No score
This integration passes the bare minimum requirements. That's the level of most integrations when they are introduced into Home Assistant. It doesn't mean that they are bad or buggy, just that you need to configure them with an entry in your `configuration.yaml` file. This integration passes the bare minimum requirements. That's the level of most integrations when they are introduced into Home Assistant. It doesn't mean that they are bad or buggy, just that you need to configure them with an entry in your {% term "`configuration.yaml`" %} file.
## Silver 🥈 ## Silver 🥈

View File

@ -7,11 +7,13 @@ no_toc: true
Scripts are a sequence of {% term actions %} that Home Assistant will execute. Scripts are available as an entity through the standalone [Script integration] but can also be embedded in {% term automations %} and [Alexa/Amazon Echo] configurations. Scripts are a sequence of {% term actions %} that Home Assistant will execute. Scripts are available as an entity through the standalone [Script integration] but can also be embedded in {% term automations %} and [Alexa/Amazon Echo] configurations.
When the script is executed within an automation the `trigger` variable is available. See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data). When the script is executed within an {% term automation %}, the `trigger` variable is available. See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).
The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted. ## Script syntax
All actions support an optional `alias`. The script syntax basic structure is a list of key/value maps that contain {% term actions %}. If a script contains only 1 {% term action %}, the wrapping list can be omitted.
All {% term actions %} support an optional `alias`.
```yaml ```yaml
# Example script integration containing script syntax # Example script integration containing script syntax
@ -31,9 +33,9 @@ script:
{{ page.content | markdownify | toc_only }} {{ page.content | markdownify | toc_only }}
## Call a Service ## Call a service
The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the [service calls page]. The most important one is the action to call a {% term service %}. This can be done in various ways. For all the different possibilities, have a look at the [service calls page].
```yaml ```yaml
- alias: "Bedroom lights on" - alias: "Bedroom lights on"
@ -44,9 +46,9 @@ The most important one is the action to call a service. This can be done in vari
brightness: 100 brightness: 100
``` ```
### Activate a Scene ### Activate a scene
Scripts may also use a shortcut syntax for activating scenes instead of calling the `scene.turn_on` service. Scripts may also use a shortcut syntax for activating {% term scenes %} instead of calling the `scene.turn_on` service.
```yaml ```yaml
- scene: scene.morning_living_room - scene: scene.morning_living_room
@ -54,7 +56,7 @@ Scripts may also use a shortcut syntax for activating scenes instead of calling
## Variables ## Variables
The variables action allows you to set/override variables that will be accessible by templates in actions after it. See also [script variables] for how to define variables accessible in the entire script. The variables {% term action %} allows you to set/override variables that will be accessible by templates in {% term action %} after it. See also [script variables] for how to define variables accessible in the entire script.
{% raw %} {% raw %}
@ -91,11 +93,11 @@ Variables can be templated.
{% endraw %} {% endraw %}
### Scope of Variables ### Scope of variables
Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block. Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block.
Inside the `if` sequence the `variables` action will only alter the `people` variable for that sequence. Inside the `if` sequence the `variables` {% term action %} will only alter the `people` variable for that sequence.
{% raw %} {% raw %}
@ -125,13 +127,13 @@ sequence:
{% endraw %} {% endraw %}
## Test a Condition ## Test a condition
While executing a script you can add a condition in the main sequence to stop further execution. When a condition does not return `true`, the script will stop executing. There are many different conditions which are documented at the [conditions page]. While executing a script you can add a condition in the main sequence to stop further execution. When a condition does not return `true`, the script will stop executing. For documentation on the many different conditions refer to the [conditions page].
<div class='note'> <div class='note'>
The `condition` action only stops executing the current sequence block. When it is used inside a [repeat](#repeat-a-group-of-actions) action, only the current iteration of the `repeat` loop will stop. When it is used inside a [choose](#choose-a-group-of-actions) action, only the actions within that `choose` will stop. The `condition` {% term action %} only stops executing the current sequence block. When it is used inside a [repeat](#repeat-a-group-of-actions) action, only the current iteration of the `repeat` loop will stop. When it is used inside a [choose](#choose-a-group-of-actions) action, only the {% term actions %} within that `choose` will stop.
</div> </div>
@ -184,6 +186,7 @@ Delays are useful for temporarily suspending your script and start it at a later
```yaml ```yaml
# Supports milliseconds, seconds, minutes, hours, days # Supports milliseconds, seconds, minutes, hours, days
# Can be used in combination, at least one required # Can be used in combination, at least one required
# When using milliseconds, consider that delay as *at least* X milliseconds. It won´t be exact.
# Waits 1 minute # Waits 1 minute
- delay: - delay:
minutes: 1 minutes: 1
@ -204,11 +207,11 @@ All forms accept templates.
## Wait ## Wait
These actions allow a script to wait for entities in the system to be in a certain state as specified by a template, or some event to happen as expressed by one or more triggers. These {% term actions %} allow a script to wait for entities in the system to be in a certain state as specified by a template, or some event to happen as expressed by one or more triggers.
### Wait for a template ### Wait for a template
This action evaluates the template, and if true, the script will continue. If not, then it will wait until it is true. This {% term action %} evaluates the template, and if true, the script will continue. If not, then it will wait until it is true.
The template is re-evaluated whenever an entity ID that it references changes state. If you use non-deterministic functions like `now()` in the template it will not be continuously re-evaluated, but only when an entity ID that is referenced is changed. If you need to periodically re-evaluate the template, reference a sensor from the [Time and Date](/integrations/time_date/) integration that will update minutely or daily. The template is re-evaluated whenever an entity ID that it references changes state. If you use non-deterministic functions like `now()` in the template it will not be continuously re-evaluated, but only when an entity ID that is referenced is changed. If you need to periodically re-evaluate the template, reference a sensor from the [Time and Date](/integrations/time_date/) integration that will update minutely or daily.
@ -224,7 +227,7 @@ The template is re-evaluated whenever an entity ID that it references changes st
### Wait for a trigger ### Wait for a trigger
This action can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger variables](/docs/automation/trigger#trigger-variables), [variables](#variables) and [script variables] are passed to the trigger. This {% term action %} can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger variables](/docs/automation/trigger#trigger-variables), [variables](#variables) and [script variables] are passed to the trigger.
{% raw %} {% raw %}
```yaml ```yaml
@ -324,9 +327,9 @@ This can be used to take different actions based on whether or not the condition
``` ```
{% endraw %} {% endraw %}
## Fire an Event ## Fire an event
This action allows you to fire an event. Events can be used for many things. It could trigger an 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 logbook.
```yaml ```yaml
- alias: "Fire LOGBOOK_ENTRY event" - alias: "Fire LOGBOOK_ENTRY event"
@ -356,7 +359,7 @@ The `event_data` accepts templates.
### Raise and Consume Custom Events ### Raise and Consume Custom Events
The following automation example shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The action part could be inside a script or an automation. The following {% term automation %} example shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The {% term action %} part could be inside a script or an {% term automation %}.
```yaml ```yaml
- alias: "Fire Event" - alias: "Fire Event"
@ -370,7 +373,7 @@ The following automation example shows how to raise a custom event called `event
state: "on" state: "on"
``` ```
The following automation example shows how to capture the custom event `event_light_state_changed` with an [Event Automation Trigger](/docs/automation/trigger#event-trigger), and retrieve corresponding `entity_id` that was passed as the event trigger data, see [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data) for more details. The following {% term automation %} example shows how to capture the custom event `event_light_state_changed` with an [Event Automation Trigger](/docs/automation/trigger#event-trigger), and retrieve corresponding `entity_id` that was passed as the event trigger data, see [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data) for more details.
{% raw %} {% raw %}
@ -389,7 +392,7 @@ The following automation example shows how to capture the custom event `event_li
## Repeat a group of actions ## Repeat a group of actions
This action allows you to repeat a sequence of other actions. Nesting is fully supported. This {% term action %} allows you to repeat a sequence of other {% term actions %}. Nesting is fully supported.
There are three ways to control how many times the sequence will be run. There are three ways to control how many times the sequence will be run.
### Counted repeat ### Counted repeat
@ -566,7 +569,7 @@ For example:
### Repeat loop variable ### Repeat loop variable
A variable named `repeat` is defined within the repeat action (i.e., it is available inside `sequence`, `while` & `until`.) A variable named `repeat` is defined within the repeat {% term action %} (i.e., it is available inside `sequence`, `while` & `until`.)
It contains the following fields: It contains the following fields:
field | description field | description
@ -577,7 +580,7 @@ field | description
## If-then ## If-then
This action allow you to conditionally (`if`) run a sequence of actions (`then`) This {% term action %} allow you to conditionally (`if`) run a sequence of actions (`then`)
and optionally supports running other sequence when the condition didn't and optionally supports running other sequence when the condition didn't
pass (`else`). pass (`else`).
@ -600,13 +603,13 @@ script:
message: "Skipped cleaning, someone is home!" message: "Skipped cleaning, someone is home!"
``` ```
This action supports nesting, however, if you find yourself using nested if-then This {% term action %} supports nesting, however, if you find yourself using nested if-then
actions in the `else` part, you may want to consider using actions in the `else` part, you may want to consider using
[choose](#choose-a-group-of-actions) instead. [choose](#choose-a-group-of-actions) instead.
## Choose a Group of Actions ## Choose a group of actions
This action allows you to select a sequence of other actions from a list of sequences. This {% term action %} allows you to select a sequence of other {% term actions %} from a list of sequences.
Nesting is fully supported. Nesting is fully supported.
Each sequence is paired with a list of conditions. (See the [conditions page] for available options and how multiple conditions are handled.) The first sequence whose conditions are all true will be run. Each sequence is paired with a list of conditions. (See the [conditions page] for available options and how multiple conditions are handled.) The first sequence whose conditions are all true will be run.
@ -614,7 +617,7 @@ An _optional_ `default` sequence can be included which will be run only if none
An _optional_ `alias` can be added to each of the sequences, excluding the `default` sequence. An _optional_ `alias` can be added to each of the sequences, excluding the `default` sequence.
The `choose` action can be used like an "if/then/elseif/then.../else" statement. The first `conditions`/`sequence` pair is like the "if/then", and can be used just by itself. Or additional pairs can be added, each of which is like an "elif/then". And lastly, a `default` can be added, which would be like the "else." The `choose` {% term action %} can be used like an "if/then/elseif/then.../else" statement. The first `conditions`/`sequence` pair is like the "if/then", and can be used just by itself. Or additional pairs can be added, each of which is like an "elif/then". And lastly, a `default` can be added, which would be like the "else."
{% raw %} {% raw %}
@ -696,7 +699,7 @@ automation:
More `choose` can be used together. This is the case of an IF-IF. More `choose` can be used together. This is the case of an IF-IF.
The following example shows how a single automation can control entities that aren't related to each other but have in common the same trigger. The following example shows how a single {% term automation %} can control entities that aren't related to each other but have in common the same trigger.
When the sun goes below the horizon, the `porch` and `garden` lights must turn on. If someone is watching the TV in the living room, there is a high chance that someone is in that room, therefore the living room lights have to turn on too. The same concept applies to the `studio` room. When the sun goes below the horizon, the `porch` and `garden` lights must turn on. If someone is watching the TV in the living room, there is a high chance that someone is in that room, therefore the living room lights have to turn on too. The same concept applies to the `studio` room.
@ -751,15 +754,57 @@ automation:
{% endraw %} {% endraw %}
## Grouping actions
The `sequence` {% term action %} allows you to group multiple {% term actions %}
together. Each action will be executed in order, meaning the next action will
only be executed after the previous action has been completed.
Grouping actions in a sequence can be useful when you want to be able to
collapse related groups in the user interface for organizational purposes.
Combined with the [`parallel`](#parallelizing-actions) action, it can also be
used to run multiple groups of actions in a sequence in parallel.
In the example below, two separate groups of actions are executed in sequence,
one for turning on devices, the other for sending notifications. Each group of
actions is executed in order, this includes the actions in each group and the
groups themselves. In total, four actions are executed, one after the other.
```yaml
automation:
- trigger:
- platform: state
entity_id: binary_sensor.motion
to: "on"
action:
- alias: "Turn on devices"
sequence:
- service: light.turn_on
target:
entity_id: light.ceiling
- service: siren.turn_on
target:
entity_id: siren.noise_maker
- alias: "Send notifications"
sequence:
- service: notify.person1
data:
message: "The motion sensor was triggered!"
- service: notify.person2
data:
message: "Oh oh, someone triggered the motion sensor..."
```
## Parallelizing actions ## Parallelizing actions
By default, all sequences of actions in Home Assistant run sequentially. This By default, all sequences of {% term actions %} in Home Assistant run sequentially. This
means the next action is started after the current action has been completed. means the next {% term action %} is started after the current action has been completed.
This is not always needed, for example, if the sequence of actions doesn't rely This is not always needed, for example, if the sequence of actions doesn't rely
on each other and order doesn't matter. For those cases, the `parallel` action on each other and order doesn't matter. For those cases, the `parallel` action
can be used to run the actions in the sequence in parallel, meaning all can be used to run the {% term actions %} in the sequence in parallel, meaning all
the actions are started at the same time. the {% term actions %} are started at the same time.
The following example shows sending messages out at the same time (in parallel): The following example shows sending messages out at the same time (in parallel):
@ -802,32 +847,32 @@ script:
<div class='note'> <div class='note'>
Running actions in parallel can be helpful in many cases, but use it with Running {% term actions %} in parallel can be helpful in many cases, but use it with
caution and only if you need it. caution and only if you need it.
There are some caveats (see below) when using parallel actions. There are some caveats (see below) when using parallel actions.
While it sounds attractive to parallelize, most of the time, just the regular While it sounds attractive to parallelize, most of the time, just the regular
sequential actions will work just fine. sequential {% term actions %} will work just fine.
</div> </div>
Some of the caveats of running actions in parallel: Some of the caveats of running {% term actions %} in parallel:
- There is no order guarantee. The actions will be started in parallel, but - There is no order guarantee. The {% term actions %} will be started in parallel, but
there is no guarantee that they will be completed in the same order. there is no guarantee that they will be completed in the same order.
- If one action fails or errors, the other actions will keep running until - If one {% term action %} fails or errors, the other {% term actions %} will keep running until
they too have finished or errored. they too have finished or errored.
- Variables created/modified in one parallelized action are not available - Variables created/modified in one parallelized {% term action %} are not available
in another parallelized action. Each step in a parallelized has its own scope. in another parallelized {% term action %}. Each step in a parallelized has its own scope.
## Stopping a script sequence ## Stopping a script sequence
It is possible to halt a script sequence at any point and return script responses It is possible to halt a script sequence at any point and return script responses
using the `stop` action. using the `stop` {% term action %}.
The `stop` action takes a text as input explaining the reason for halting the The `stop` {% term action %} takes a text as input explaining the reason for halting the
sequence. This text will be logged and shows up in the automations and sequence. This text will be logged and shows up in the {% term automations %} and
script traces. script traces.
`stop` can be useful to halt a script halfway through a sequence when, `stop` can be useful to halt a script halfway through a sequence when,
@ -847,7 +892,7 @@ response data must contains a mapping of key/value pairs.
``` ```
There is also an `error` option, to indicate we are stopping because of There is also an `error` option, to indicate we are stopping because of
an unexpected error. It stops the sequence as well, but marks the automation an unexpected error. It stops the sequence as well, but marks the {% term automation %}
or script as failed to run. or script as failed to run.
```yaml ```yaml
@ -857,20 +902,20 @@ or script as failed to run.
## Continuing on error ## Continuing on error
By default, a sequence of actions will be halted when one of the actions in By default, a sequence of {% term actions %} will be halted when one of the {% term actions %} in
that sequence encounters an error. The automation or script will be halted, that sequence encounters an error. The {% term automation %} or script will be halted,
an error is logged, and the automation or script run is marked as errored. an error is logged, and the {% term automation %} or script run is marked as errored.
Sometimes these errors are expected, for example, because you know the service Sometimes these errors are expected, for example, because you know the service
you call can be problematic at times, and it doesn't matter if it fails. you call can be problematic at times, and it doesn't matter if it fails.
You can set `continue_on_error` for those cases on such an action. You can set `continue_on_error` for those cases on such an {% term action %}.
The `continue_on_error` is available on all actions and is set to The `continue_on_error` is available on all {% term actions %} and is set to
`false`. You can set it to `true` if you'd like to continue the action `false`. You can set it to `true` if you'd like to continue the {% term action %}
sequence, regardless of whether that action encounters an error. sequence, regardless of whether that {% term action %} encounters an error.
The example below shows the `continue_on_error` set on the first action. If The example below shows the `continue_on_error` set on the first {% term action %}. If
it encounters an error; it will continue to the next action. it encounters an error; it will continue to the next {% term action %}.
```yaml ```yaml
- alias: "If this one fails..." - alias: "If this one fails..."
@ -891,8 +936,8 @@ or errors that Home Assistant does not handle.
## Disabling an action ## Disabling an action
Every individual action in a sequence can be disabled, without removing it. Every individual {% term action %} in a sequence can be disabled, without removing it.
To do so, add `enabled: false` to the action. For example: To do so, add `enabled: false` to the {% term action %}. For example:
```yaml ```yaml
# Example script with a disabled action # Example script with a disabled action
@ -914,6 +959,55 @@ script:
entity_id: light.ceiling entity_id: light.ceiling
``` ```
Actions can also be disabled based on limited templates or blueprint inputs.
{% raw %}
```yaml
blueprint:
input:
input_boolean:
name: Boolean
selector:
boolean:
action:
- delay: 0:35
enabled: !input input_boolean
```
{% endraw %}
## Respond to a conversation
The `set_conversation_response` script {% term action %} allows returning a custom response
when an {% term automation %} is triggered by a conversation engine, for example a voice
assistant. The conversation response can be templated.
{% raw %}
```yaml
# Example of a templated conversation response resulting in "Testing 123"
- variables:
my_var: "123"
- set_conversation_response: "{{ 'Testing ' + my_var }}":
```
{% endraw %}
The response is handed to the conversation engine when the {% term automation %} finishes. If
the `set_conversation_response` is executed multiple times, the most recent
response will be handed to the conversation engine. To clear the response, set it
to `None`:
```yaml
# Example of a clearing a conversation response
set_conversation_response: ~
```
If the {% term automation %} was not triggered by a conversation engine, the response
will not be used by anything.
[Script integration]: /integrations/script/ [Script integration]: /integrations/script/
[automations]: /docs/automation/action/ [automations]: /docs/automation/action/
[Alexa/Amazon Echo]: /integrations/alexa/ [Alexa/Amazon Echo]: /integrations/alexa/

View File

@ -165,7 +165,7 @@ condition:
## Numeric state condition ## Numeric state condition
This type of condition attempts to parse the state of the specified entity or the attribute of an entity as a number, and triggers if the value matches the thresholds. This type of condition attempts to parse the state of the specified entity or the attribute of an entity as a number, and triggers if the value matches the thresholds (strictly below/above, so equal excluded).
If both `below` and `above` are specified, both tests have to pass. If both `below` and `above` are specified, both tests have to pass.
@ -218,8 +218,8 @@ condition:
below: 25 below: 25
``` ```
Number helpers (`input_number` entities), `number` and `sensor` entities that Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities
contain a numeric value, can be used in the `above` and `below` that contain a numeric value, can be used in the `above` and `below`
options to make the condition more dynamic. options to make the condition more dynamic.
```yaml ```yaml
@ -711,3 +711,37 @@ condition:
entity_id: sun.sun entity_id: sun.sun
state: "above_horizon" state: "above_horizon"
``` ```
Conditions can also be disabled based on limited templates or blueprint inputs.
{% raw %}
```yaml
blueprint:
input:
input_boolean:
name: Boolean
selector:
boolean:
input_number:
name: Number
selector:
number:
min: 0
max: 100
trigger_variables:
_enable_number: !input input_number
condition:
- condition: state
entity_id: sun.sun
state: "above_horizon"
enabled: !input input_boolean
- condition: state
entity_id: sun.sun
state: "below_horizon"
enabled: "{{ _enable_number < 50 }}"
```
{% endraw %}

View File

@ -28,7 +28,7 @@ Instead of targeting an entity, you can also target an {% term area %} or {% ter
This is done with the `target` key. This is done with the `target` key.
A `target` is a map that contains at least one of the following: `area_id`, `device_id`, `entity_id`. A `target` is a map that contains at least one of the following: `area_id`, `device_id`, `entity_id`.
Each of these can be a list. Each of these can be a list. The values should be lower-cased.
The following example uses a single service call to turn on the lights in the The following example uses a single service call to turn on the lights in the
living room area, 2 additional light devices and 2 additional light entities: living room area, 2 additional light devices and 2 additional light entities:
@ -80,7 +80,7 @@ entity_id: switch.ac
### Using the Services Developer Tool ### Using the Services Developer Tool
You can use the Services Developer Tool to test data to pass in a service call. You can use the Services Developer Tool to test data to pass in a service call.
For example, you may test turning on or off a 'group' (See [groups] for more info) For example, you may test turning on or off a 'group' (See [groups](/integrations/group/) for more info)
To turn a group on or off, pass the following info: To turn a group on or off, pass the following info:

View File

@ -1,9 +1,12 @@
--- ---
title: "check_config" title: "check_config"
description: "Script to perform a check of the current configuration" description: "Script to perform a check of the current configuration"
related:
- docs: /docs/configuration/#validating-the-configuration
title: Validating the configuration
--- ---
Test any changes to your `configuration.yaml` file before launching Home Assistant. This {% term script %} allows you to test changes without the need to restart Home Assistant. Test any changes to your {% term "`configuration.yaml`" %} file before launching Home Assistant. This script allows you to test changes without the need to restart Home Assistant.
```bash ```bash
hass --script check_config hass --script check_config

View File

@ -10,8 +10,8 @@ The dashboard contains a section called **Developer tools**.
Screenshot of Home Assistant's developer tools. Screenshot of Home Assistant's developer tools.
</p> </p>
| Section |Description | | Section | Description |
| ---------- |---------------------------------------------------------------------| | ---------- | ------------------------------------------------------------------- |
| YAML | Lets you validate the configuration and trigger a reload or restart | | YAML | Lets you validate the configuration and trigger a reload or restart |
| States | Sets the representation of an entity | | States | Sets the representation of an entity |
| Services | Calls services from integrations | | Services | Calls services from integrations |
@ -24,7 +24,27 @@ Screenshot of Home Assistant's developer tools.
The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, updating states, raising events, and publishing messages in MQTT). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the sections in detail. The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, updating states, raising events, and publishing messages in MQTT). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the sections in detail.
## States ## YAML tab
The YAML tab provides buttons to trigger a check of configuration files and to reload the configuration. Reloading is needed to apply changes that you've made to the configuration.
It is almost the same as the option under **Settings** > three dot menu (top right) > **Restart Home Assistant** > **Quick reload**. The only difference is that **Quick reload** reloads all the configuration, whereas this YAML tab allows you to only reload one specific configuration at a time.
### Reloading the YAML configuration
For configuration changes to become effective, the configuration must be reloaded. Most integrations in Home Assistant (that do not interact with {% term devices %} or {% term services %}) can reload changes made to their configuration in {% term "`configuration.yaml`" %} without needing to restart Home Assistant.
1. Go to {% my server_controls title="**Developer Tools** > **YAML**" %} and scroll down to the YAML configuration reloading section (alternatively, hit ["c"](/docs/tools/quick-bar/) anywhere in the UI and search for "reload").
- You are presented with a list of integrations, such as **Automations** or **Conversation**.
![Reload configuration changes](/images/docs/configuration/reloading_config.png)
2. Depending on what you find in the list, you can proceed with either reloading or you need to restart Home Assistant:
- If the integration is listed, select it to reload the settings.
- For example, if you've changed the [General settings](/docs/configuration/basic/), you can select **Location & customizations** to apply those changes.
- If the integration is not listed, you need to **Restart** Home Assistant for changes to take effect.
## States tab
This section shows all the available entities, their corresponding state and the attribute values. The state and the attribute information is what Home Assistant sees at run time. To update the entity with a new state, or a new attribute value, click on the entity, scroll to the top, and modify the values, and click on “SET STATE” button. This section shows all the available entities, their corresponding state and the attribute values. The state and the attribute information is what Home Assistant sees at run time. To update the entity with a new state, or a new attribute value, click on the entity, scroll to the top, and modify the values, and click on “SET STATE” button.
@ -35,7 +55,7 @@ For example, changing the `light.bedroom` state from `off` to `on` does not turn
The table containing all entities can be filtered for each column. The used search is a wildcard search meaning that if you input "office" in the entity column filter, every entity whose ID matches "\*office\*" will be shown. You can also add your own wildcards in the search input (e.g., "office\*light"). The table containing all entities can be filtered for each column. The used search is a wildcard search meaning that if you input "office" in the entity column filter, every entity whose ID matches "\*office\*" will be shown. You can also add your own wildcards in the search input (e.g., "office\*light").
The attribute filter supports separate filters for attribute names and values, separated by a colon ":". So the filter "location:3" will result in the table showing all entities that have an attribute name that contains "location" and whose attribute value contains "3". The attribute filter supports separate filters for attribute names and values, separated by a colon ":". So the filter "location:3" will result in the table showing all entities that have an attribute name that contains "location" and whose attribute value contains "3".
## Services ## Services tab
This section is used to call Services that are available in the ServiceRegistry. This section is used to call Services that are available in the ServiceRegistry.
@ -48,6 +68,7 @@ A Service may also require additional input to be passed. It is commonly referre
When an entity is selected from the Entity dropdown, it automatically populates service data with the corresponding `entity_id`. The service data YAML can then be modified to pass additional \[optional\] parameters. The following is an illustration on how to call a `light.turn_on` service. When an entity is selected from the Entity dropdown, it automatically populates service data with the corresponding `entity_id`. The service data YAML can then be modified to pass additional \[optional\] parameters. The following is an illustration on how to call a `light.turn_on` service.
To turn on a light bulb, use the following steps: To turn on a light bulb, use the following steps:
1. Select `light.turn_on` from the Service dropdown 1. Select `light.turn_on` from the Service dropdown
2. Select the entity (typically the light bulb) from the Entity dropdown (if no entity_id is selected, it turns on ALL lights) 2. Select the entity (typically the light bulb) from the Entity dropdown (if no entity_id is selected, it turns on ALL lights)
3. If an entity is selected, the service data is populated with basic YAML that will be passed to the service. Additional data can also be passed by updating the YAML as below. 3. If an entity is selected, the service data is populated with basic YAML that will be passed to the service. Additional data can also be passed by updating the YAML as below.
@ -58,7 +79,7 @@ brightness: 255
rgb_color: [255, 0, 0] rgb_color: [255, 0, 0]
``` ```
## Template editor ## Template editor tab
The template editor provides a way to quickly test templates prior to placing them into automations and scripts. A code editor is on the left side and your real-time output is displayed in the preview on the right side. The template editor provides a way to quickly test templates prior to placing them into automations and scripts. A code editor is on the left side and your real-time output is displayed in the preview on the right side.
@ -66,7 +87,7 @@ By default, this will contain sample code that illustrates how templates can be
For more information about Jinja2, visit [Jinja2 documentation](https://jinja.palletsprojects.com/en/latest/templates/), and also read templating document [here](/docs/configuration/templating). For more information about Jinja2, visit [Jinja2 documentation](https://jinja.palletsprojects.com/en/latest/templates/), and also read templating document [here](/docs/configuration/templating).
## Events ## Events tab
In the Events section, you can either fire an event on the event bus or subscribe to an event type in order to view the event data JSON. In the Events section, you can either fire an event on the event bus or subscribe to an event type in order to view the event data JSON.
@ -118,7 +139,7 @@ Event 0 fired 9:53 AM:
} }
``` ```
## Statistics ## Statistics tab
The **Statistics** tab shows a list of long-term statistic entities. If the long term statistics is not working for an entity, a **Fix Issue** link is shown. Select it to view a description of the issue. There might also be an option to fix the issue. The **Statistics** tab shows a list of long-term statistic entities. If the long term statistics is not working for an entity, a **Fix Issue** link is shown. Select it to view a description of the issue. There might also be an option to fix the issue.
@ -130,15 +151,16 @@ icon. Use date & time to search for the incorrect data point and adjust the valu
![Screenshot showing adjusting the long-term statistic history value](/images/blog/2022-04/adjust-statistics.png) ![Screenshot showing adjusting the long-term statistic history value](/images/blog/2022-04/adjust-statistics.png)
## Assist ## Assist tab
The **Assist** tab lets you see how Home Assistant's Assist processes a sentence. The **Assist** tab lets you see how Home Assistant's Assist processes a sentence.
If no matching intent is found, then Assist is unable to interpret the sentence. If a matching intent was found, information is provided on the action that will be performed on which entities. The example below shows how the following sentence was parsed: *what lights are on in the office*. If no matching intent is found, then Assist is unable to interpret the sentence. If a matching intent was found, information is provided on the action that will be performed on which entities. The example below shows how the following sentence was parsed: *what lights are on in the office*.
- Assist found a matching intent: *HassGetState*. - Assist found a matching intent: *HassGetState*.
- It found entities matching the domain: *lights*. - It found entities matching the domain: *lights*.
- The lights have the state *on*. - The lights have the state *on*.
- The lights are in the area *office*. - The lights are in the area *office*.
- The targets are the narrowed-down entities in scope. - The targets are the narrowed-down entities in scope.
![Example use of assist developer tools](/images/docs/developer-tools/Assist.png) ![Example use of assist developer tools](/images/docs/developer-tools/Assist.png)

Some files were not shown because too many files have changed in this diff Show More