Merge branch 'rc' into current

This commit is contained in:
Franck Nijhof 2024-10-02 20:01:59 +02:00
commit 24b7bfbd0d
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
344 changed files with 8618 additions and 3975 deletions

View File

@ -15,6 +15,7 @@ source/_integrations/acmeda.markdown @atmurray
source/_integrations/acomax.markdown @starkillerOG 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/ads.markdown @mrpasztoradam
source/_integrations/advantage_air.markdown @Bre77 source/_integrations/advantage_air.markdown @Bre77
source/_integrations/aemet.markdown @Noltari source/_integrations/aemet.markdown @Noltari
source/_integrations/aep_ohio.markdown @tronikos source/_integrations/aep_ohio.markdown @tronikos
@ -51,6 +52,7 @@ source/_integrations/androidtv.markdown @JeffLIrion @ollo69
source/_integrations/androidtv_remote.markdown @tronikos @Drafteed source/_integrations/androidtv_remote.markdown @tronikos @Drafteed
source/_integrations/anova.markdown @Lash-L source/_integrations/anova.markdown @Lash-L
source/_integrations/anthemav.markdown @hyralex source/_integrations/anthemav.markdown @hyralex
source/_integrations/anthropic.markdown @Shulyaka
source/_integrations/anwb_energie.markdown @klaasnicolaas source/_integrations/anwb_energie.markdown @klaasnicolaas
source/_integrations/aosmith.markdown @bdr99 source/_integrations/aosmith.markdown @bdr99
source/_integrations/apache_kafka.markdown @bachya source/_integrations/apache_kafka.markdown @bachya
@ -62,6 +64,7 @@ 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/aprilaire.markdown @chamberlain2007
source/_integrations/aprs.markdown @PhilRW source/_integrations/aprs.markdown @PhilRW
source/_integrations/aps.markdown @tronikos
source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH
source/_integrations/aquacell.markdown @Jordi1990 source/_integrations/aquacell.markdown @Jordi1990
source/_integrations/aranet.markdown @aschmitz @thecode @anrijs source/_integrations/aranet.markdown @aschmitz @thecode @anrijs
@ -70,6 +73,7 @@ source/_integrations/arris_tg2492lg.markdown @vanbalken
source/_integrations/arve.markdown @ikalnyi source/_integrations/arve.markdown @ikalnyi
source/_integrations/aseko_pool_live.markdown @milanmeu source/_integrations/aseko_pool_live.markdown @milanmeu
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
source/_integrations/assist_satellite.markdown @home-assistant/core @synesthesiam
source/_integrations/asuswrt.markdown @kennedyshead @ollo69 source/_integrations/asuswrt.markdown @kennedyshead @ollo69
source/_integrations/atag.markdown @MatsNL source/_integrations/atag.markdown @MatsNL
source/_integrations/aten_pe.markdown @mtdcr source/_integrations/aten_pe.markdown @mtdcr
@ -124,12 +128,13 @@ source/_integrations/bryant_evolution.markdown @danielsmyers
source/_integrations/bsblan.markdown @liudger source/_integrations/bsblan.markdown @liudger
source/_integrations/bswitch.markdown @jafar-atili source/_integrations/bswitch.markdown @jafar-atili
source/_integrations/bt_smarthub.markdown @typhoon2099 source/_integrations/bt_smarthub.markdown @typhoon2099
source/_integrations/bthome.markdown @Ernst79 source/_integrations/bthome.markdown @Ernst79 @thecode
source/_integrations/bticino.markdown @cgtobi source/_integrations/bticino.markdown @cgtobi
source/_integrations/bubendorff.markdown @cgtobi source/_integrations/bubendorff.markdown @cgtobi
source/_integrations/buienradar.markdown @mjj4791 @ties @Robbie1221 source/_integrations/buienradar.markdown @mjj4791 @ties @Robbie1221
source/_integrations/button.markdown @home-assistant/core source/_integrations/button.markdown @home-assistant/core
source/_integrations/calendar.markdown @home-assistant/core source/_integrations/calendar.markdown @home-assistant/core
source/_integrations/cambridge_audio.markdown @noahhusby
source/_integrations/camera.markdown @home-assistant/core 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
@ -168,6 +173,7 @@ source/_integrations/dacia.markdown @epenet
source/_integrations/daikin.markdown @fredrike source/_integrations/daikin.markdown @fredrike
source/_integrations/date.markdown @home-assistant/core source/_integrations/date.markdown @home-assistant/core
source/_integrations/datetime.markdown @home-assistant/core source/_integrations/datetime.markdown @home-assistant/core
source/_integrations/deako.markdown @sebirdman @balake @deakolights
source/_integrations/debugpy.markdown @frenck source/_integrations/debugpy.markdown @frenck
source/_integrations/deconz.markdown @Kane610 source/_integrations/deconz.markdown @Kane610
source/_integrations/default_config.markdown @home-assistant/core source/_integrations/default_config.markdown @home-assistant/core
@ -201,8 +207,9 @@ source/_integrations/dormakaba_dkey.markdown @emontnemery
source/_integrations/downloader.markdown @erwindouna 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
source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox @erwindouna source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox @erwindouna
source/_integrations/duke_energy.markdown @hunterjm
source/_integrations/duotecno.markdown @cereal2nd source/_integrations/duotecno.markdown @cereal2nd
source/_integrations/duquesne_light.markdown @tronikos source/_integrations/duquesne_light.markdown @tronikos
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo
@ -217,6 +224,7 @@ source/_integrations/efergy.markdown @tkdrob
source/_integrations/egardia.markdown @jeroenterheerdt source/_integrations/egardia.markdown @jeroenterheerdt
source/_integrations/electrasmart.markdown @jafar-atili source/_integrations/electrasmart.markdown @jafar-atili
source/_integrations/electric_kiwi.markdown @mikey0000 source/_integrations/electric_kiwi.markdown @mikey0000
source/_integrations/elevenlabs.markdown @sorgfresser
source/_integrations/elgato.markdown @frenck 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
@ -287,6 +295,7 @@ source/_integrations/fronius.markdown @farmio
source/_integrations/frontend.markdown @home-assistant/frontend 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/fujitsu_fglair.markdown @crevetor
source/_integrations/fully_kiosk.markdown @cgarwood source/_integrations/fully_kiosk.markdown @cgarwood
source/_integrations/fyta.markdown @dontinelli source/_integrations/fyta.markdown @dontinelli
source/_integrations/garages_amsterdam.markdown @klaasnicolaas source/_integrations/garages_amsterdam.markdown @klaasnicolaas
@ -311,9 +320,10 @@ source/_integrations/goodwe.markdown @mletenay @starkillerOG
source/_integrations/google.markdown @allenporter source/_integrations/google.markdown @allenporter
source/_integrations/google_assistant.markdown @home-assistant/cloud source/_integrations/google_assistant.markdown @home-assistant/cloud
source/_integrations/google_assistant_sdk.markdown @tronikos source/_integrations/google_assistant_sdk.markdown @tronikos
source/_integrations/google_cloud.markdown @lufton source/_integrations/google_cloud.markdown @lufton @tronikos
source/_integrations/google_generative_ai_conversation.markdown @tronikos source/_integrations/google_generative_ai_conversation.markdown @tronikos
source/_integrations/google_mail.markdown @tkdrob source/_integrations/google_mail.markdown @tkdrob
source/_integrations/google_photos.markdown @allenporter
source/_integrations/google_sheets.markdown @tkdrob 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
@ -358,6 +368,7 @@ source/_integrations/homematic.markdown @pvizeli
source/_integrations/homematicip_cloud.markdown @hahn-th 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/html5.markdown @alexyao2015
source/_integrations/http.markdown @home-assistant/core source/_integrations/http.markdown @home-assistant/core
source/_integrations/huawei_lte.markdown @scop @fphammerle source/_integrations/huawei_lte.markdown @scop @fphammerle
source/_integrations/hue.markdown @balloob @marcelveldt source/_integrations/hue.markdown @balloob @marcelveldt
@ -400,13 +411,14 @@ source/_integrations/intellifire.markdown @jeeftor
source/_integrations/intesishome.markdown @jnimmo source/_integrations/intesishome.markdown @jnimmo
source/_integrations/ios.markdown @robbiet480 source/_integrations/ios.markdown @robbiet480
source/_integrations/iotawatt.markdown @gtdiehl @jyavenard source/_integrations/iotawatt.markdown @gtdiehl @jyavenard
source/_integrations/iotty.markdown @pburgio source/_integrations/iotty.markdown @pburgio @shapournemati-iotty
source/_integrations/iperf3.markdown @rohankapoorcom 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/iron_os.markdown @tr4nt0r source/_integrations/iron_os.markdown @tr4nt0r
source/_integrations/isal.markdown @bdraco source/_integrations/isal.markdown @bdraco
source/_integrations/iskra.markdown @iskramis
source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair
source/_integrations/ismartwindow.markdown @starkillerOG source/_integrations/ismartwindow.markdown @starkillerOG
source/_integrations/israel_rail.markdown @shaiu source/_integrations/israel_rail.markdown @shaiu
@ -451,6 +463,7 @@ source/_integrations/ld2410_ble.markdown @930913
source/_integrations/leaone.markdown @bdraco 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/lektrico.markdown @lektrico
source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
source/_integrations/lg_netcast.markdown @Drafteed @splinter98 source/_integrations/lg_netcast.markdown @Drafteed @splinter98
source/_integrations/lidarr.markdown @tkdrob source/_integrations/lidarr.markdown @tkdrob
@ -476,7 +489,7 @@ source/_integrations/luci.markdown @mzdrale
source/_integrations/luftdaten.markdown @fabaff @frenck source/_integrations/luftdaten.markdown @fabaff @frenck
source/_integrations/lupusec.markdown @majuss @suaveolent source/_integrations/lupusec.markdown @majuss @suaveolent
source/_integrations/lutron.markdown @cdheiser @wilburCForce source/_integrations/lutron.markdown @cdheiser @wilburCForce
source/_integrations/lutron_caseta.markdown @swails @bdraco @danaues @eclair4151 source/_integrations/lutron_caseta.markdown @swails @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/madeco.markdown @starkillerOG
@ -516,6 +529,7 @@ source/_integrations/mobile_app.markdown @home-assistant/core
source/_integrations/modem_callerid.markdown @tkdrob source/_integrations/modem_callerid.markdown @tkdrob
source/_integrations/modern_forms.markdown @wonderslug source/_integrations/modern_forms.markdown @wonderslug
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
source/_integrations/monarch_money.markdown @jeeftor
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/monzo.markdown @jakemartin-icl
@ -550,6 +564,7 @@ source/_integrations/nextcloud.markdown @mib1185
source/_integrations/nextdns.markdown @bieniu source/_integrations/nextdns.markdown @bieniu
source/_integrations/nfandroidtv.markdown @tkdrob source/_integrations/nfandroidtv.markdown @tkdrob
source/_integrations/nibe_heatpump.markdown @elupus source/_integrations/nibe_heatpump.markdown @elupus
source/_integrations/nice_go.markdown @IceBotYT
source/_integrations/nightscout.markdown @marciogranzotto source/_integrations/nightscout.markdown @marciogranzotto
source/_integrations/nilu.markdown @hfurubotten source/_integrations/nilu.markdown @hfurubotten
source/_integrations/nina.markdown @DeerMaximum source/_integrations/nina.markdown @DeerMaximum
@ -569,6 +584,7 @@ source/_integrations/number.markdown @home-assistant/core @Shulyaka
source/_integrations/nut.markdown @bdraco @ollo69 @pestevez source/_integrations/nut.markdown @bdraco @ollo69 @pestevez
source/_integrations/nutrichef.markdown @bdraco source/_integrations/nutrichef.markdown @bdraco
source/_integrations/nws.markdown @MatthewFlamm @kamiyo source/_integrations/nws.markdown @MatthewFlamm @kamiyo
source/_integrations/nyt_games.markdown @joostlek
source/_integrations/nzbget.markdown @chriscla source/_integrations/nzbget.markdown @chriscla
source/_integrations/obihai.markdown @dshokouhi @ejpenney source/_integrations/obihai.markdown @dshokouhi @ejpenney
source/_integrations/octoprint.markdown @rfleming71 source/_integrations/octoprint.markdown @rfleming71
@ -614,7 +630,6 @@ source/_integrations/pge.markdown @tronikos
source/_integrations/philips_js.markdown @elupus source/_integrations/philips_js.markdown @elupus
source/_integrations/pi_hole.markdown @shenxn source/_integrations/pi_hole.markdown @shenxn
source/_integrations/picnic.markdown @corneyl source/_integrations/picnic.markdown @corneyl
source/_integrations/pilight.markdown @trekky12
source/_integrations/pinecil.markdown @tr4nt0r source/_integrations/pinecil.markdown @tr4nt0r
source/_integrations/ping.markdown @jpbede source/_integrations/ping.markdown @jpbede
source/_integrations/piper.markdown @balloob @synesthesiam source/_integrations/piper.markdown @balloob @synesthesiam
@ -633,7 +648,7 @@ source/_integrations/prometheus.markdown @knyar
source/_integrations/prosegur.markdown @dgomes source/_integrations/prosegur.markdown @dgomes
source/_integrations/proximity.markdown @mib1185 source/_integrations/proximity.markdown @mib1185
source/_integrations/proxmoxve.markdown @jhollowe @Corbeno source/_integrations/proxmoxve.markdown @jhollowe @Corbeno
source/_integrations/prusalink.markdown @balloob @Skaronator source/_integrations/prusalink.markdown @balloob
source/_integrations/ps4.markdown @ktnrg45 source/_integrations/ps4.markdown @ktnrg45
source/_integrations/pse.markdown @tronikos source/_integrations/pse.markdown @tronikos
source/_integrations/psoklahoma.markdown @tronikos source/_integrations/psoklahoma.markdown @tronikos
@ -725,6 +740,7 @@ source/_integrations/sensor.markdown @home-assistant/core
source/_integrations/sensorblue.markdown @bdraco source/_integrations/sensorblue.markdown @bdraco
source/_integrations/sensorpro.markdown @bdraco source/_integrations/sensorpro.markdown @bdraco
source/_integrations/sensorpush.markdown @bdraco source/_integrations/sensorpush.markdown @bdraco
source/_integrations/sensoterra.markdown @markruys
source/_integrations/sentry.markdown @dcramer @frenck 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
@ -761,6 +777,7 @@ source/_integrations/smarther.markdown @cgtobi
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/smlight.markdown @tl-sl
source/_integrations/sms.markdown @ocalvo source/_integrations/sms.markdown @ocalvo
source/_integrations/smud.markdown @tronikos source/_integrations/smud.markdown @tronikos
source/_integrations/snapcast.markdown @luar123 source/_integrations/snapcast.markdown @luar123
@ -808,8 +825,8 @@ source/_integrations/switch.template.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 @laurence-presland source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur
source/_integrations/switcher_kis.markdown @thecode source/_integrations/switcher_kis.markdown @thecode @YogevBokobza
source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/switchmate.markdown @danielhiversen @qiz-li
source/_integrations/symfonisk.markdown @jjlawren @peterager source/_integrations/symfonisk.markdown @jjlawren @peterager
source/_integrations/syncthing.markdown @zhulik source/_integrations/syncthing.markdown @zhulik
@ -853,6 +870,7 @@ 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/touchline_sl.markdown @jnsgruk
source/_integrations/tplink.markdown @rytilahti @bdraco @sdb9696 source/_integrations/tplink.markdown @rytilahti @bdraco @sdb9696
source/_integrations/tplink_omada.markdown @MarkGodwin source/_integrations/tplink_omada.markdown @MarkGodwin
source/_integrations/tplink_tapo.markdown @rytilahti @bdraco @sdb9696 source/_integrations/tplink_tapo.markdown @rytilahti @bdraco @sdb9696
@ -865,6 +883,7 @@ source/_integrations/trafikverket_train.markdown @gjohansson-ST
source/_integrations/trafikverket_weatherstation.markdown @gjohansson-ST source/_integrations/trafikverket_weatherstation.markdown @gjohansson-ST
source/_integrations/transmission.markdown @engrbm87 @JPHutchins source/_integrations/transmission.markdown @engrbm87 @JPHutchins
source/_integrations/trend.markdown @jpbede source/_integrations/trend.markdown @jpbede
source/_integrations/triggercmd.markdown @rvmey
source/_integrations/tts.markdown @home-assistant/core source/_integrations/tts.markdown @home-assistant/core
source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck
source/_integrations/twentemilieu.markdown @frenck source/_integrations/twentemilieu.markdown @frenck
@ -926,6 +945,7 @@ source/_integrations/webhook.markdown @home-assistant/core
source/_integrations/webmin.markdown @autinerd 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/weheat.markdown @jesperraemaekers
source/_integrations/wemo.markdown @esev source/_integrations/wemo.markdown @esev
source/_integrations/whirlpool.markdown @abmantis @mkmer source/_integrations/whirlpool.markdown @abmantis @mkmer
source/_integrations/whisper.markdown @balloob @synesthesiam source/_integrations/whisper.markdown @balloob @synesthesiam
@ -936,6 +956,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/wmspro.markdown @mback2k
source/_integrations/wolflink.markdown @adamkrol93 @mtielen 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
@ -947,6 +968,7 @@ source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79
source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG
source/_integrations/xiaomi_tv.markdown @simse source/_integrations/xiaomi_tv.markdown @simse
source/_integrations/xmpp.markdown @fabaff @flowolf source/_integrations/xmpp.markdown @fabaff @flowolf
source/_integrations/yale.markdown @bdraco
source/_integrations/yale_home.markdown @bdraco source/_integrations/yale_home.markdown @bdraco
source/_integrations/yale_smart_alarm.markdown @gjohansson-ST source/_integrations/yale_smart_alarm.markdown @gjohansson-ST
source/_integrations/yalexs_ble.markdown @bdraco source/_integrations/yalexs_ble.markdown @bdraco

View File

@ -134,10 +134,9 @@ GEM
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass (3.4.25) sass (3.4.25)
sass-embedded (1.79.4-arm64-darwin) sass-embedded (1.79.4)
google-protobuf (~> 4.27)
sass-embedded (1.79.4-x86_64-linux-gnu)
google-protobuf (~> 4.27) google-protobuf (~> 4.27)
rake (>= 13)
sass-globbing (1.1.5) sass-globbing (1.1.5)
sass (>= 3.1) sass (>= 3.1)
sassc (2.1.0) sassc (2.1.0)

View File

@ -107,9 +107,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 2024 current_major_version: 2024
current_minor_version: 9 current_minor_version: 10
current_patch_version: 3 current_patch_version: 0
date_released: 2024-09-24 date_released: 2024-10-02
# 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.

View File

@ -0,0 +1,111 @@
---
type: card
title: "Heading card"
sidebar_label: Heading
description: "The Heading card structures your dashboard by providing title, icon, navigation and badges."
related:
- docs: /dashboards/actions/
title: Card actions
- docs: /dashboards/cards/
title: Dashboard cards
---
The Heading card structures your dashboard by providing title, icon and navigation. This card supports [actions](/dashboards/actions/).
<p class='img'>
<img src='/images/dashboards/heading_card.png' alt='Screenshot of heading cards'>
Screenshot of a heading card with a title, badges, and a subtitle.
</p>
```yaml
type: heading
heading: Living room
icon: mdi:sofa
badges:
- type: entity
entity_id: sensor.living_room_sensor_temperature
color: red
- type: entity
entity_id: sensor.living_room_sensor_humidity
color: deep-purple
```
{% configuration entity %}
type:
required: true
description: "`heading`"
type: string
heading:
required: false
description: Heading text
type: string
heading_style:
required: false
description: Style of the heading. Can be either `title` or `subtitle`.
type: string
default: title
icon:
required: false
description: Icon displayed before the heading text.
type: string
tap_action:
required: false
description: Action taken on card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will do nothing. If an action is configured, a chevron will appear next to the heading text.
type: map
badges:
required: false
description: Additional small badges to display entity information. See [heading badges](/dashboards/heading/#heading-badges).
type: list
{% endconfiguration %}
## Heading badges
In addition to the heading text, each heading card can show small badges. They are smaller than regular [badges](/dashboards/badges/) and don't have a background. The heading badges can display sensor information in a compact and minimal style.
```yaml
type: entity
entity: light.living_room
```
{% configuration entity %}
type:
required: true
description: "`entity`"
type: string
entity:
required: true
description: Entity ID.
type: string
name:
required: false
description: Overwrites the entity name. The name will be only displayed if `state_content` includes `name` token.
type: string
icon:
required: false
description: Overwrites the entity icon.
type: string
color:
required: false
description: Set the color when the entity is active. By default, it will not be colored. It can be set to the `state` special token to dynamically color the icon based on `state`, `domain`, and `device_class` of your entity. It also accepts [color token](/dashboards/tile/#available-colors) or hex color code.
type: string
default: none
show_icon:
required: false
description: Show the icon
type: boolean
default: "true"
show_state:
required: false
description: Show the state.
type: boolean
default: "false"
state_content:
required: false
description: >
Content to display for the state. Can be `state`, `name`, `last_changed`, `last_updated`, or any attribute of the entity. Can be either a string with a single item, or a list of string items. Default depends on the entity domain.
type: [string, list]
tap_action:
required: false
description: Action taken on card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will do nothing.
type: map
{% endconfiguration %}

View File

@ -23,7 +23,7 @@ The sections view lets you organize your cards in sections on a grid.
You can group cards without using horizontal or vertical stack cards. You can group cards without using horizontal or vertical stack cards.
<p class='img'> <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"/> <img src="/images/dashboards/section_view.png" alt="A fully populated dashboard in Sections view layout"/>
A fully populated dashboard in Sections view layout A fully populated dashboard in Sections view layout
</p> </p>
@ -49,18 +49,20 @@ Once you have created a sections view, you can populate it with sections and car
1. To add a card, select the **Add card** button. 1. To add a card, select the **Add card** button.
- Follow the [steps on adding cards](/dashboards/cards/#adding-cards-to-your-dashboard). - 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) ![Add Section button](/images/dashboards/sections_view_add-card-or-section.png)
2. To add a new section, select the **Create section** button. 2. To add a new section, select the **Create section** button.
3. To edit the section title, select the edit {% icon "mdi:edit" %} button. 3. A [heading card](/dashboards/heading) will be automatically added to the top of the section.
- If you leave the section title empty, this line will be hidden. - To edit it, select the card.
- If you don't want a heading title at the top of the section, delete this card.
- The title can be added again later, like any other card.
4. If you want this section to be visible only to specific users or under a certain condition, you can define those conditions: 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**. - On the **Visibility** tab, select **Add condition**.
- Select the type of condition, and enter the parameters. - 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 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. - If you did not define any conditions, the section is always shown, to all users.
![Define visibility](/images/dashboards/section-visibility.png) ![Define visibility](/images/dashboards/section-visibility.png)
## Deleting a section ## Deleting a section
@ -75,17 +77,17 @@ In the sections view, you can rearrange sections and cards by dragging them to a
1. To edit your dashboard, in the top right corner, select the edit {% icon "mdi:edit" %} button. 1. To edit your dashboard, in the top right corner, select the edit {% icon "mdi:edit" %} button.
2. To rearrange sections, hold the move {% icon "mdi:cursor-move" %} button and move the card. 2. To rearrange sections, hold the move {% icon "mdi:cursor-move" %} button and move the card.
<p class='img'> <p class='img'>
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-sections.gif" alt="Rearranging sections by dragging"/> <img src="/images/dashboards/section_view_rearrange_sections.gif" alt="Rearranging sections by dragging"/>
Rearranging sections by dragging Rearranging sections by dragging
</p> </p>
3. To rearrange cards, tap and hold the card and move it to your desired location. 3. To rearrange cards, tap and hold the card and move it to your desired location.
<p class='img'> <p class='img'>
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-cards.gif" alt="Rearranging cards by dragging"/> <img src="/images/dashboards/section_view_rearrange_cards.gif" alt="Rearranging cards by dragging"/>
Rearranging cards by dragging Rearranging cards by dragging
</p> </p>
## Show or hide section conditionally ## Show or hide section conditionally

View File

@ -79,6 +79,14 @@ icon_tap_action:
required: false required: false
description: Action taken on icon card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will `toggle` the entity (if possible), otherwise, show the "more-info" dialog. description: Action taken on icon card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will `toggle` the entity (if possible), otherwise, show the "more-info" dialog.
type: map type: map
icon_hold_action:
required: false
description: Action taken on icon tap-and-hold. See [action documentation](/dashboards/actions/#hold-action).
type: map
icon_double_tap_action:
required: false
description: Action taken on icon double tap. See [action documentation](/dashboards/actions/#double-tap-action).
type: map
features: features:
required: false required: false
description: Additional widgets to control your entity. See [available features](/dashboards/features). description: Additional widgets to control your entity. See [available features](/dashboards/features).

View File

@ -158,6 +158,8 @@
- term: Custom integration - term: Custom integration
definition: >- definition: >-
A custom integration is an integration that has been created by someone from the Home Assistant community and has been published for others to use at their own risk. Custom integrations are not supported by the Home Assistant project. They are not reviewed or tested by the Home Assistant development team and thus may negatively impact the stability of your Home Assistant instance. An example of a custom integration is the [Spook](https://spook.boo/) integration. A custom integration is an integration that has been created by someone from the Home Assistant community and has been published for others to use at their own risk. Custom integrations are not supported by the Home Assistant project. They are not reviewed or tested by the Home Assistant development team and thus may negatively impact the stability of your Home Assistant instance. An example of a custom integration is the [Spook](https://spook.boo/) integration.
aliases:
- custom integrations
- term: Customize - term: Customize
definition: >- definition: >-
Customization allows you to overwrite the default parameters of your devices Customization allows you to overwrite the default parameters of your devices

View File

@ -14,10 +14,10 @@ You can also perform the action to activate [a scene](/integrations/scene/) whic
```yaml ```yaml
automation: automation:
# Change the light in the kitchen and living room to 150 brightness and color red. # Change the light in the kitchen and living room to 150 brightness and color red.
trigger: triggers:
- platform: sun - trigger: sun
event: sunset event: sunset
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: entity_id:
@ -29,13 +29,13 @@ automation:
automation 2: automation 2:
# Notify me on my mobile phone of an event # Notify me on my mobile phone of an event
trigger: triggers:
- platform: sun - trigger: sun
event: sunset event: sunset
offset: -00:30 offset: -00:30
variables: variables:
notification_action: notify.paulus_iphone notification_action: notify.paulus_iphone
action: actions:
# Actions are scripts so can also be a list of actions # Actions are scripts so can also be a list of actions
- action: "{{ notification_action }}" - action: "{{ notification_action }}"
data: data:
@ -53,11 +53,11 @@ Conditions can also be part of an action. You can combine multiple actions and c
```yaml ```yaml
automation: automation:
- alias: "Office at evening" - alias: "Office at evening"
trigger: triggers:
- platform: state - trigger: state
entity_id: sensor.office_occupancy entity_id: sensor.office_occupancy
to: "on" to: "on"
action: actions:
- action: notify.notify - action: notify.notify
data: data:
message: "Testing conditional actions" message: "Testing conditional actions"

View File

@ -16,11 +16,11 @@ Example of using condition:
```yaml ```yaml
automation: automation:
- alias: "Turn on office lights" - alias: "Turn on office lights"
trigger: triggers:
- platform: state - trigger: state
entity_id: sensor.office_motion_sensor entity_id: sensor.office_motion_sensor
to: "on" to: "on"
condition: conditions:
- or: - or:
- condition: numeric_state - condition: numeric_state
entity_id: sun.sun entity_id: sun.sun
@ -29,7 +29,7 @@ automation:
- condition: numeric_state - condition: numeric_state
entity_id: sensor.office_lux_sensor entity_id: sensor.office_lux_sensor
below: 10 below: 10
action: actions:
- action: scene.turn_on - action: scene.turn_on
target: target:
entity_id: scene.office_lights entity_id: scene.office_lights
@ -44,12 +44,12 @@ The `condition` option of an automation, also accepts a single condition templat
```yaml ```yaml
automation: automation:
- alias: "Turn on office lights" - alias: "Turn on office lights"
trigger: triggers:
- platform: state - trigger: state
entity_id: sensor.office_motion_sensor entity_id: sensor.office_motion_sensor
to: "on" to: "on"
condition: "{{ state_attr('sun.sun', 'elevation') < 4 }}" conditions: "{{ state_attr('sun.sun', 'elevation') < 4 }}"
action: actions:
- action: scene.turn_on - action: scene.turn_on
target: target:
entity_id: scene.office_lights entity_id: scene.office_lights

View File

@ -31,9 +31,9 @@ Some automations you only want to run every 5 minutes. This can be achieved usin
automation: automation:
- mode: single - mode: single
max_exceeded: silent max_exceeded: silent
trigger: triggers:
- ... - ...
action: actions:
- ... - ...
- delay: 300 # seconds (=5 minutes) - delay: 300 # seconds (=5 minutes)
``` ```
@ -46,8 +46,8 @@ Sometimes an automation is doing an action on a device that does not support mul
automation: automation:
- mode: queued - mode: queued
max: 25 max: 25
trigger: triggers:
- ... - ...
action: actions:
- ... - ...
``` ```

View File

@ -201,11 +201,11 @@ These are the properties available for a [Zone trigger](/docs/automation/trigger
```yaml ```yaml
# Example configuration.yaml entries # Example configuration.yaml entries
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
id: paulus_device id: paulus_device
action: actions:
- action: notify.notify - action: notify.notify
data: data:
message: > message: >
@ -215,19 +215,19 @@ automation:
This was triggered by {{ trigger.id }} This was triggered by {{ trigger.id }}
automation 2: automation 2:
trigger: triggers:
- platform: mqtt - trigger: mqtt
topic: "/notify/+" topic: "/notify/+"
action: actions:
action: > - action: >
notify.{{ trigger.topic.split('/')[-1] }} notify.{{ trigger.topic.split('/')[-1] }}
data: data:
message: "{{ trigger.payload }}" message: "{{ trigger.payload }}"
automation 3: automation 3:
trigger: triggers:
# Multiple entities for which you want to perform the same action. # Multiple entities for which you want to perform the same action.
- platform: state - trigger: state
entity_id: entity_id:
- light.bedroom_closet - light.bedroom_closet
- light.kiddos_closet - light.kiddos_closet
@ -235,27 +235,27 @@ automation 3:
to: "on" to: "on"
# Trigger when someone leaves one of those lights on for 10 minutes. # Trigger when someone leaves one of those lights on for 10 minutes.
for: "00:10:00" for: "00:10:00"
action: actions:
- action: light.turn_off - action: light.turn_off
target: target:
# Turn off whichever entity triggered the automation. # Turn off whichever entity triggered the automation.
entity_id: "{{ trigger.entity_id }}" entity_id: "{{ trigger.entity_id }}"
automation 4: automation 4:
trigger: triggers:
# When an NFC tag is scanned by Home Assistant... # When an NFC tag is scanned by Home Assistant...
- platform: event - trigger: event
event_type: tag_scanned event_type: tag_scanned
# ...By certain people # ...By certain people
context: context:
user_id: user_id:
- 06cbf6deafc54cf0b2ffa49552a396ba - 06cbf6deafc54cf0b2ffa49552a396ba
- 2df8a2a6e0be4d5d962aad2d39ed4c9c - 2df8a2a6e0be4d5d962aad2d39ed4c9c
condition: conditions:
# Check NFC tag (ID) is the one by the front door # Check NFC tag (ID) is the one by the front door
- condition: template - condition: template
value_template: "{{ trigger.event.data.tag_id == '8b6d6755-b4d5-4c23-818b-cf224d221ab7'}}" value_template: "{{ trigger.event.data.tag_id == '8b6d6755-b4d5-4c23-818b-cf224d221ab7'}}"
action: actions:
# Turn off various lights # Turn off various lights
- action: light.turn_off - action: light.turn_off
target: target:

View File

@ -31,6 +31,8 @@ An {% term automation %} can be triggered by an {% term event %}, a certain {% t
- [Sentence trigger](#sentence-trigger) - [Sentence trigger](#sentence-trigger)
- [Multiple triggers](#multiple-triggers) - [Multiple triggers](#multiple-triggers)
- [Multiple Entity IDs for the same Trigger](#multiple-entity-ids-for-the-same-trigger) - [Multiple Entity IDs for the same Trigger](#multiple-entity-ids-for-the-same-trigger)
- [Disabling a trigger](#disabling-a-trigger)
- [Merging lists of triggers](#merging-lists-of-triggers)
## Trigger ID ## Trigger ID
@ -44,14 +46,14 @@ This video tutorial explains how trigger IDs work.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: event - trigger: event
event_type: "MY_CUSTOM_EVENT" event_type: "MY_CUSTOM_EVENT"
id: "custom_event" id: "custom_event"
- platform: mqtt - trigger: mqtt
topic: "living_room/switch/ac" topic: "living_room/switch/ac"
id: "ac_on" id: "ac_on"
- platform: state # This trigger will be assigned id="2" - trigger: state # This trigger will be assigned id="2"
entity_id: entity_id:
- device_tracker.paulus - device_tracker.paulus
- device_tracker.anne_therese - device_tracker.anne_therese
@ -72,8 +74,8 @@ The second variant is setting variables that are available when attaching a trig
automation: automation:
trigger_variables: trigger_variables:
my_event: example_event my_event: example_event
trigger: triggers:
- platform: event - trigger: event
# Able to use `trigger_variables` # Able to use `trigger_variables`
event_type: "{{ my_event }}" event_type: "{{ my_event }}"
# These variables are evaluated and set when this trigger is triggered # These variables are evaluated and set when this trigger is triggered
@ -91,8 +93,8 @@ Events can be fired by integrations or via the API. There is no limitation to th
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: event - trigger: event
event_type: "MY_CUSTOM_EVENT" event_type: "MY_CUSTOM_EVENT"
# optional # optional
event_data: event_data:
@ -109,8 +111,8 @@ event that contain no, or similar, data and contexts.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: event - trigger: event
event_type: event_type:
- automation_reloaded - automation_reloaded
- scene_reloaded - scene_reloaded
@ -130,8 +132,8 @@ automation:
sub_event: ABC sub_event: ABC
node: ac node: ac
value: on value: on
trigger: triggers:
- platform: event - trigger: event
event_type: "{{ 'MY_CUSTOM_EVENT_' ~ sub_event }}" event_type: "{{ 'MY_CUSTOM_EVENT_' ~ sub_event }}"
``` ```
@ -143,8 +145,8 @@ Fires when Home Assistant starts up or shuts down.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: homeassistant - trigger: homeassistant
# Event can also be 'shutdown' # Event can also be 'shutdown'
event: start event: start
``` ```
@ -159,8 +161,8 @@ Fires when a specific message is received on given MQTT topic. Optionally can ma
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: mqtt - trigger: mqtt
topic: "living_room/switch/ac" topic: "living_room/switch/ac"
# Optional # Optional
payload: "on" payload: "on"
@ -174,8 +176,8 @@ The trigger in the example below will trigger only when the message received on
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: mqtt - trigger: mqtt
topic: "living_room/switch/ac" topic: "living_room/switch/ac"
payload: "on" payload: "on"
value_template: "{{ value_json.state }}" value_template: "{{ value_json.state }}"
@ -197,8 +199,8 @@ automation:
room: "living_room" room: "living_room"
node: "ac" node: "ac"
value: "on" value: "on"
trigger: triggers:
- platform: mqtt - trigger: mqtt
topic: "{{ room ~ '/switch/' ~ node}}" topic: "{{ room ~ '/switch/' ~ node}}"
# Optional # Optional
payload: "{{ 'state:' ~ value }}" payload: "{{ 'state:' ~ value }}"
@ -220,8 +222,8 @@ If the current state of your entity is `50` and you set the threshold to `below:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
# If given, will trigger when the value of the given attribute for the given entity changes.. # If given, will trigger when the value of the given attribute for the given entity changes..
attribute: attribute_name attribute: attribute_name
@ -245,8 +247,8 @@ When the `attribute` option is specified the trigger is compared to the given `a
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: climate.kitchen entity_id: climate.kitchen
attribute: current_temperature attribute: current_temperature
above: 23 above: 23
@ -262,8 +264,8 @@ The state of the entity can be referenced like this:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
value_template: "{{ state.state | float * 9 / 5 + 32 }}" value_template: "{{ state.state | float * 9 / 5 + 32 }}"
above: 70 above: 70
@ -277,8 +279,8 @@ Attributes of the entity can be referenced like this:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: climate.kitchen entity_id: climate.kitchen
value_template: "{{ state.attributes.current_temperature - state.attributes.temperature_set_point }}" value_template: "{{ state.attributes.current_temperature - state.attributes.temperature_set_point }}"
above: 3 above: 3
@ -297,8 +299,8 @@ However, the comparison will only be made when the entity specified in the trigg
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sensor.outside_temperature entity_id: sensor.outside_temperature
# Other entity ids can be specified for above and/or below thresholds # Other entity ids can be specified for above and/or below thresholds
above: sensor.inside_temperature above: sensor.inside_temperature
@ -310,8 +312,8 @@ The `for:` can also be specified as `HH:MM:SS` like this:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
# At least one of the following required # At least one of the following required
above: 17 above: 17
@ -329,8 +331,8 @@ You can also use templates in the `for` option.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: entity_id:
- sensor.temperature_1 - sensor.temperature_1
- sensor.temperature_2 - sensor.temperature_2
@ -338,7 +340,7 @@ automation:
for: for:
minutes: "{{ states('input_number.high_temp_min')|int }}" minutes: "{{ states('input_number.high_temp_min')|int }}"
seconds: "{{ states('input_number.high_temp_sec')|int }}" seconds: "{{ states('input_number.high_temp_sec')|int }}"
action: actions:
- action: persistent_notification.create - action: persistent_notification.create
data: data:
message: > message: >
@ -376,8 +378,8 @@ This automation triggers if either Paulus or Anne-Therese are home for one minut
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: entity_id:
- device_tracker.paulus - device_tracker.paulus
- device_tracker.anne_therese - device_tracker.anne_therese
@ -396,8 +398,8 @@ It's possible to give a list of `from` states or `to` states:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: vacuum.test entity_id: vacuum.test
from: from:
- "cleaning" - "cleaning"
@ -409,8 +411,8 @@ If you want to trigger on all state changes, but not on attribute changes, you c
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: vacuum.test entity_id: vacuum.test
to: to:
``` ```
@ -419,8 +421,8 @@ If you want to trigger on all state changes *except* specific ones, use `not_fro
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: vacuum.test entity_id: vacuum.test
not_from: not_from:
- "unknown" - "unknown"
@ -440,8 +442,8 @@ For example, this trigger only fires when the boiler has been heating for 10 min
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: climate.living_room entity_id: climate.living_room
attribute: hvac_action attribute: hvac_action
to: "heating" to: "heating"
@ -452,8 +454,8 @@ This trigger fires whenever the boiler's `hvac_action` attribute changes:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: climate.living_room entity_id: climate.living_room
attribute: hvac_action attribute: hvac_action
``` ```
@ -467,8 +469,8 @@ state for 30 seconds:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: light.office entity_id: light.office
# Must stay "on" for 30 seconds # Must stay "on" for 30 seconds
to: "on" to: "on"
@ -486,8 +488,8 @@ the time specified, but doesn't care about "playing" or "paused".
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: media_player.kitchen entity_id: media_player.kitchen
# Not "off" for 30 minutes # Not "off" for 30 minutes
from: "off" from: "off"
@ -502,8 +504,8 @@ same for `for` the time specified, regardless of the current state value.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: media_player.kitchen entity_id: media_player.kitchen
# The media player remained in its current state for 1 hour # The media player remained in its current state for 1 hour
for: "01:00:00" for: "01:00:00"
@ -515,8 +517,8 @@ You can also use templates in the `for` option.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: entity_id:
- device_tracker.paulus - device_tracker.paulus
- device_tracker.anne_therese - device_tracker.anne_therese
@ -524,7 +526,7 @@ automation:
for: for:
minutes: "{{ states('input_number.lock_min')|int }}" minutes: "{{ states('input_number.lock_min')|int }}"
seconds: "{{ states('input_number.lock_sec')|int }}" seconds: "{{ states('input_number.lock_sec')|int }}"
action: actions:
- action: lock.lock - action: lock.lock
target: target:
entity_id: lock.my_place entity_id: lock.my_place
@ -554,8 +556,8 @@ Since the duration of twilight is different throughout the year, it is recommend
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: sun - trigger: sun
# Possible values: sunset, sunrise # Possible values: sunset, sunrise
event: sunset event: sunset
# Optional time offset. This example will trigger 45 minutes before sunset. # Optional time offset. This example will trigger 45 minutes before sunset.
@ -571,13 +573,13 @@ Sometimes you may want more granular control over an automation than simply suns
```yaml ```yaml
automation: automation:
- alias: "Exterior Lighting on when dark outside" - alias: "Exterior Lighting on when dark outside"
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sun.sun entity_id: sun.sun
attribute: elevation attribute: elevation
# Can be a positive or negative number # Can be a positive or negative number
below: -4.0 below: -4.0
action: actions:
- action: switch.turn_on - action: switch.turn_on
target: target:
entity_id: switch.exterior_lighting entity_id: switch.exterior_lighting
@ -605,8 +607,8 @@ scanned using the Home Assistant Companion mobile application.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: tag - trigger: tag
tag_id: A7-6B-90-5F tag_id: A7-6B-90-5F
``` ```
@ -615,8 +617,8 @@ device/scanner by setting the `device_id`:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: tag - trigger: tag
tag_id: A7-6B-90-5F tag_id: A7-6B-90-5F
device_id: 0e19cd3cf2b311ea88f469a7512c307d device_id: 0e19cd3cf2b311ea88f469a7512c307d
``` ```
@ -625,8 +627,8 @@ Or trigger on multiple possible devices for multiple tags:
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: tag - trigger: tag
tag_id: tag_id:
- "A7-6B-90-5F" - "A7-6B-90-5F"
- "A7-6B-15-AC" - "A7-6B-15-AC"
@ -647,8 +649,8 @@ With template triggers you can also evaluate attribute changes by using is_state
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: template - trigger: template
value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}" value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}"
# If given, will trigger when template remains true for X time. # If given, will trigger when template remains true for X time.
@ -663,8 +665,8 @@ You can also use templates in the `for` option.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: template - trigger: template
value_template: "{{ is_state('device_tracker.paulus', 'home') }}" value_template: "{{ is_state('device_tracker.paulus', 'home') }}"
for: for:
minutes: "{{ states('input_number.minutes')|int(0) }}" minutes: "{{ states('input_number.minutes')|int(0) }}"
@ -692,8 +694,8 @@ A string that represents a time to fire on each day. Can be specified as `HH:MM`
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: time - trigger: time
# Military time format. This trigger will fire at 3:32 PM # Military time format. This trigger will fire at 3:32 PM
at: "15:32:00" at: "15:32:00"
``` ```
@ -712,11 +714,11 @@ The entity ID of an [input datetime](/integrations/input_datetime/).
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: binary_sensor.motion entity_id: binary_sensor.motion
to: "on" to: "on"
action: actions:
- action: climate.turn_on - action: climate.turn_on
target: target:
entity_id: climate.office entity_id: climate.office
@ -727,10 +729,10 @@ automation:
datetime: > datetime: >
{{ (now().timestamp() + 2*60*60) {{ (now().timestamp() + 2*60*60)
| timestamp_custom('%Y-%m-%d %H:%M:%S') }} | timestamp_custom('%Y-%m-%d %H:%M:%S') }}
- trigger: - triggers:
- platform: time - trigger: time
at: input_datetime.turn_off_ac at: input_datetime.turn_off_ac
action: actions:
- action: climate.turn_off - action: climate.turn_off
target: target:
entity_id: climate.office entity_id: climate.office
@ -744,26 +746,51 @@ The Entity ID of a [sensor](/integrations/sensor/) with the "timestamp" device c
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: time - trigger: time
at: sensor.phone_next_alarm at: sensor.phone_next_alarm
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.bedroom entity_id: light.bedroom
``` ```
### Multiple times ### Sensors of datetime device class with offsets
Multiple times can be provided in a list. Both formats can be intermixed. When the time is provided using a sensor of the timestamp device class, an offset can be provided. This offset will be added to (or subtracted from when negative) the sensor value.
For example, this trigger fires 5 minutes before the phone alarm goes off.
```yaml ```yaml
automation: automation:
trigger: - triggers:
- platform: time - trigger: time
at:
entity_id: sensor.phone_next_alarm
offset: -00:05:00
actions:
- service: light.turn_on
target:
entity_id: light.bedroom
```
{% important %}
When using a positive offset the trigger might never fire. This is due to the sensor changing before the offset is reached. For example, when using a phone alarm as a trigger, the sensor value will change to the new alarm time when the alarm goes off, which means this trigger will change to the new time as well.
{% endimportant %}
### Multiple times
Multiple times can be provided in a list. All formats can be intermixed.
```yaml
automation:
triggers:
- trigger: time
at: at:
- input_datetime.leave_for_work - input_datetime.leave_for_work
- "18:30:00" - "18:30:00"
- entity_id: sensor.bus_arrival
offset: "-00:10:00"
``` ```
## Time pattern trigger ## Time pattern trigger
@ -772,21 +799,21 @@ With the time pattern trigger, you can match if the hour, minute or second of th
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: time_pattern - trigger: time_pattern
# Matches every hour at 5 minutes past whole # Matches every hour at 5 minutes past whole
minutes: 5 minutes: 5
automation 2: automation 2:
trigger: triggers:
- platform: time_pattern - trigger: time_pattern
# Trigger once per minute during the hour of 3 # Trigger once per minute during the hour of 3
hours: "3" hours: "3"
minutes: "*" minutes: "*"
automation 3: automation 3:
trigger: triggers:
- platform: time_pattern - trigger: time_pattern
# You can also match on interval. This will match every 5 minutes # You can also match on interval. This will match every 5 minutes
minutes: "/5" minutes: "/5"
``` ```
@ -801,8 +828,8 @@ Persistent notification triggers are fired when a `persistent_notification` is `
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: persistent_notification - trigger: persistent_notification
update_type: update_type:
- added - added
- removed - removed
@ -817,8 +844,8 @@ Webhook trigger fires when a web request is made to the webhook endpoint: `/api/
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: webhook - trigger: webhook
webhook_id: "some_hook_id" webhook_id: "some_hook_id"
allowed_methods: allowed_methods:
- POST - POST
@ -865,8 +892,8 @@ Zone trigger fires when an entity is entering or leaving the zone. The entity ca
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: zone - trigger: zone
entity_id: person.paulus entity_id: person.paulus
zone: zone.home zone: zone.home
# Event is either enter or leave # Event is either enter or leave
@ -884,8 +911,8 @@ This isn't for use with `device_tracker` entities. For those look above at the `
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: geo_location - trigger: geo_location
source: nsw_rural_fire_service_feed source: nsw_rural_fire_service_feed
zone: zone.bushfire_alert_zone zone: zone.bushfire_alert_zone
# Event is either enter or leave # Event is either enter or leave
@ -911,8 +938,8 @@ An optional time offset can be given to have it fire a set time before or after
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: calendar - trigger: calendar
# Possible values: start, end # Possible values: start, end
event: start event: start
# The calendar entity_id # The calendar entity_id
@ -932,8 +959,8 @@ Sentences are allowed to use some basic [template syntax](https://developers.hom
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: conversation - trigger: conversation
command: command:
- "[it's ]party time" - "[it's ]party time"
- "happy (new year|birthday)" - "happy (new year|birthday)"
@ -975,12 +1002,12 @@ It is possible to specify multiple triggers for the same rule. To do so just pre
```yaml ```yaml
automation: automation:
trigger: triggers:
# first trigger # first trigger
- platform: time_pattern - trigger: time_pattern
minutes: 5 minutes: 5
# our second trigger is the sunset # our second trigger is the sunset
- platform: sun - trigger: sun
event: sunset event: sunset
``` ```
@ -990,8 +1017,8 @@ It is possible to specify multiple entities for the same trigger. To do so add m
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: state - trigger: state
entity_id: entity_id:
- sensor.one - sensor.one
- sensor.two - sensor.two
@ -1006,15 +1033,15 @@ To do so, add `enabled: false` to the trigger. For example:
```yaml ```yaml
# Example script with a disabled trigger # Example script with a disabled trigger
automation: automation:
trigger: triggers:
# This trigger will not trigger, as it is disabled. # This trigger will not trigger, as it is disabled.
# This automation does not run when the sun is set. # This automation does not run when the sun is set.
- enabled: false - enabled: false
platform: sun trigger: sun
event: sunset event: sunset
# This trigger will fire, as it is not disabled. # This trigger will fire, as it is not disabled.
- platform: time - trigger: time
at: "15:32:00" at: "15:32:00"
``` ```
@ -1039,13 +1066,38 @@ blueprint:
trigger_variables: trigger_variables:
_enable_number: !input input_number _enable_number: !input input_number
trigger: triggers:
- platform: sun - trigger: sun
event_type: sunrise event_type: sunrise
enabled: !input input_boolean enabled: !input input_boolean
- platform: sun - trigger: sun
event_type: sunset event_type: sunset
enabled: "{{ _enable_number < 50 }}" enabled: "{{ _enable_number < 50 }}"
``` ```
{% endraw %} {% endraw %}
## Merging lists of triggers
{% caution %}
This feature requires Home Assistant version 2024.10 or later. If using this in a blueprint, set the `min_version` for the blueprint to at least this version.
{% endcaution %}
In some advanced cases (like for blueprints with trigger selectors), it may be necessary to insert a second list of triggers into the main trigger list. This can be done by adding a dictionary in the main trigger list with the sole key `triggers`, and the value for that key contains a second list of triggers. These will then be flattened into a single list of triggers. For example:
```yaml
blueprint:
name: Nested Trigger Blueprint
domain: automation
input:
usertrigger:
selector:
trigger:
triggers:
- trigger: event
event_type: manual_event
- triggers: !input usertrigger
```
This blueprint automation can then be triggered either by the fixed manual_event trigger, or additionally by any triggers selected in the trigger selector. This is also applicable for `wait_for_trigger` action.

View File

@ -15,8 +15,8 @@ automation: !include automations.yaml
# Labeled automation block # Labeled automation block
automation kitchen: automation kitchen:
- trigger: - triggers:
- platform: ... - trigger: ...
``` ```
You can add as many labeled `automation` blocks as you want. You can add as many labeled `automation` blocks as you want.
@ -52,7 +52,7 @@ trace:
default: 5 default: 5
required: false required: false
variables: variables:
description: "Variables that will be available inside your templates, both in `condition` and `action`." description: "Variables that will be available inside your templates, both in `conditions` and `actions`."
required: false required: false
default: {} default: {}
type: map type: map
@ -84,7 +84,7 @@ max_exceeded:
required: false required: false
type: string type: string
default: warning default: warning
trigger: triggers:
description: "The trigger(s) which will start the automation. Multiple triggers can be added and the automation will start when any of these triggers trigger." description: "The trigger(s) which will start the automation. Multiple triggers can be added and the automation will start when any of these triggers trigger."
required: true required: true
type: list type: list
@ -102,11 +102,11 @@ trigger:
PARAMETER_NAME: PARAMETER_NAME:
description: "The value of the variable. Any YAML is valid. Templates can also be used to pass a value to the variable." description: "The value of the variable. Any YAML is valid. Templates can also be used to pass a value to the variable."
type: any type: any
condition: conditions:
description: Conditions that have to be `true` to start the automation. By default all conditions listed have to be `true`, you can use [logical conditions](/docs/scripts/conditions/#logical-conditions) to change this default behavior. description: Conditions that have to be `true` to start the automation. By default all conditions listed have to be `true`, you can use [logical conditions](/docs/scripts/conditions/#logical-conditions) to change this default behavior.
required: false required: false
type: list type: list
action: actions:
description: "The sequence of actions to be performed in the script." description: "The sequence of actions to be performed in the script."
required: true required: true
type: list type: list
@ -137,16 +137,16 @@ automation my_lights:
# Turns on lights 1 hour before sunset if people are home # Turns on lights 1 hour before sunset if people are home
# and if people get home between 16:00-23:00 # and if people get home between 16:00-23:00
- alias: "Rule 1 Light on in the evening" - alias: "Rule 1 Light on in the evening"
trigger: triggers:
# Prefix the first line of each trigger configuration # Prefix the first line of each trigger configuration
# with a '-' to enter multiple # with a '-' to enter multiple
- platform: sun - trigger: sun
event: sunset event: sunset
offset: "-01:00:00" offset: "-01:00:00"
- platform: state - trigger: state
entity_id: all entity_id: all
to: "home" to: "home"
condition: conditions:
# Prefix the first line of each condition configuration # Prefix the first line of each condition configuration
# with a '-'' to enter multiple # with a '-'' to enter multiple
- condition: state - condition: state
@ -155,7 +155,7 @@ automation my_lights:
- condition: time - condition: time
after: "16:00:00" after: "16:00:00"
before: "23:00:00" before: "23:00:00"
action: actions:
# With a single service entry, we don't need a '-' before service - though you can if you want to # With a single service entry, we don't need a '-' before service - though you can if you want to
- action: homeassistant.turn_on - action: homeassistant.turn_on
target: target:
@ -163,26 +163,26 @@ automation my_lights:
# Turn off lights when everybody leaves the house # Turn off lights when everybody leaves the house
- alias: "Rule 2 - Away Mode" - alias: "Rule 2 - Away Mode"
trigger: triggers:
- platform: state - trigger: state
entity_id: all entity_id: all
to: "not_home" to: "not_home"
action: actions:
- action: light.turn_off - action: light.turn_off
target: target:
entity_id: all entity_id: all
# Notify when Paulus leaves the house in the evening # Notify when Paulus leaves the house in the evening
- alias: "Leave Home notification" - alias: "Leave Home notification"
trigger: triggers:
- platform: zone - trigger: zone
event: leave event: leave
zone: zone.home zone: zone.home
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
condition: conditions:
- condition: time - condition: time
after: "20:00" after: "20:00"
action: actions:
- action: notify.notify - action: notify.notify
data: data:
message: "Paulus left the house" message: "Paulus left the house"
@ -190,12 +190,12 @@ automation my_lights:
# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi integration. # Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi integration.
- alias: "Xiaomi Cube Action" - alias: "Xiaomi Cube Action"
initial_state: false initial_state: false
trigger: triggers:
- platform: event - trigger: event
event_type: cube_action event_type: cube_action
event_data: event_data:
entity_id: binary_sensor.cube_158d000103a3de entity_id: binary_sensor.cube_158d000103a3de
action: actions:
- action: notify.pushover - action: notify.pushover
data: data:
title: "Cube event detected" title: "Cube event detected"
@ -216,8 +216,8 @@ At startup, automations by default restore their last state of when Home Assista
automation: automation:
- alias: "Automation Name" - alias: "Automation Name"
initial_state: false initial_state: false
trigger: triggers:
- platform: ... - trigger: ...
``` ```
### Number of debug traces stored ### Number of debug traces stored
@ -229,8 +229,8 @@ automation:
- alias: "Automation Name" - alias: "Automation Name"
trace: trace:
stored_traces: 10 stored_traces: 10
trigger: triggers:
- platform: ... - trigger: ...
``` ```
## Migrating your YAML automations to `automations.yaml` ## Migrating your YAML automations to `automations.yaml`
@ -243,18 +243,18 @@ If you want to migrate your manual automations to use the editor, you'll have to
# Example automations.yaml entry. Note, automations.yaml is always a list! # Example automations.yaml entry. Note, automations.yaml is always a list!
- id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated. - id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated.
alias: "Hello world" alias: "Hello world"
trigger: triggers:
- platform: state - trigger: state
entity_id: sun.sun entity_id: sun.sun
from: below_horizon from: below_horizon
to: above_horizon to: above_horizon
condition: conditions:
- condition: numeric_state - condition: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
above: 17 above: 17
below: 25 below: 25
value_template: "{{ float(state.state) + 2 }}" value_template: "{{ float(state.state) + 2 }}"
action: actions:
- action: light.turn_on - action: light.turn_on
``` ```

View File

@ -267,20 +267,20 @@ blueprint:
mode: restart mode: restart
max_exceeded: silent max_exceeded: silent
trigger: triggers:
- platform: state - trigger: state
entity_id: !input motion_entity entity_id: !input motion_entity
from: "off" from: "off"
to: "on" to: "on"
action: actions:
- action: light.turn_on - action: light.turn_on
target: !input light_target target: !input light_target
- wait_for_trigger: - wait_for_trigger:
platform: state - trigger: state
entity_id: !input motion_entity entity_id: !input motion_entity
from: "on" from: "on"
to: "off" to: "off"
- delay: !input no_motion_wait - delay: !input no_motion_wait
- action: light.turn_off - action: light.turn_off
target: !input light_target target: !input light_target

View File

@ -1381,7 +1381,7 @@ Targets are meant to be used with the `target` property of an action in
a script sequence. For example: a script sequence. For example:
```yaml ```yaml
action: actions:
- action: light.turn_on - action: light.turn_on
target: !input lights target: !input lights
``` ```
@ -1535,7 +1535,7 @@ The output of this selector is a list of triggers. For example:
```yaml ```yaml
# Example trigger selector output result # Example trigger selector output result
- platform: numeric_state - trigger: numeric_state
entity_id: "sensor.outside_temperature" entity_id: "sensor.outside_temperature"
below: 20 below: 20
``` ```

View File

@ -44,19 +44,19 @@ The automation we're going to use in this tutorial controls a light based on a m
{% raw %} {% raw %}
```yaml ```yaml
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.motion_kitchen entity_id: binary_sensor.motion_kitchen
action: actions:
action: > - action: >
{% if trigger.to_state.state == "on" %} {% if trigger.to_state.state == "on" %}
light.turn_on light.turn_on
{% else %} {% else %}
light.turn_off light.turn_off
{% endif %} {% endif %}
target: target:
entity_id: light.kitchen entity_id: light.kitchen
``` ```
{% endraw %} {% endraw %}
@ -91,9 +91,9 @@ Now we have to decide what steps we want to make configurable. We want to make i
Configurable parts in blueprints are called [inputs](/docs/blueprint/schema/#blueprint-inputs). To make the motion sensor entity configurable, we're replacing the entity ID with a custom YAML tag `!input`. This YAML tag has to be combined with the name of the input: Configurable parts in blueprints are called [inputs](/docs/blueprint/schema/#blueprint-inputs). To make the motion sensor entity configurable, we're replacing the entity ID with a custom YAML tag `!input`. This YAML tag has to be combined with the name of the input:
```yaml ```yaml
trigger: triggers:
platform: state - trigger: state
entity_id: !input motion_sensor entity_id: !input motion_sensor
``` ```
For the light, we can offer some more flexibility. We want to allow the user to be able to define any device or area as the target. The `target` property in the action can contain references to areas, devices, and/or entities, so that's what we will use. For the light, we can offer some more flexibility. We want to allow the user to be able to define any device or area as the target. The `target` property in the action can contain references to areas, devices, and/or entities, so that's what we will use.
@ -103,14 +103,14 @@ Inputs are not limited to strings. They can contain complex objects too. So in t
{% raw %} {% raw %}
```yaml ```yaml
action: actions:
action: > - action: >
{% if trigger.to_state.state == "on" %} {% if trigger.to_state.state == "on" %}
light.turn_on light.turn_on
{% else %} {% else %}
light.turn_off light.turn_off
{% endif %} {% endif %}
target: !input target_light target: !input target_light
``` ```
{% endraw %} {% endraw %}
@ -233,11 +233,11 @@ blueprint:
entity: entity:
- domain: light - domain: light
trigger: triggers:
- platform: state - trigger: state
entity_id: !input motion_sensor entity_id: !input motion_sensor
action: actions:
- action: > - action: >
{% if trigger.to_state.state == "on" %} {% if trigger.to_state.state == "on" %}
light.turn_on light.turn_on

View File

@ -267,23 +267,23 @@ These work recursively. As an example using `!include_dir_list automation`, will
```yaml ```yaml
automation: automation:
- alias: "Automation 1" - alias: "Automation 1"
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
to: "home" to: "home"
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.entryway entity_id: light.entryway
- alias: "Automation 2" - alias: "Automation 2"
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
from: "home" from: "home"
action: actions:
action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.entryway entity_id: light.entryway
``` ```
can be turned into: can be turned into:
@ -298,28 +298,28 @@ automation: !include_dir_list automation/presence/
```yaml ```yaml
alias: "Automation 1" alias: "Automation 1"
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
to: "home" to: "home"
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.entryway entity_id: light.entryway
``` ```
`automation/presence/automation2.yaml` `automation/presence/automation2.yaml`
```yaml ```yaml
alias: "Automation 2" alias: "Automation 2"
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
from: "home" from: "home"
action: actions:
action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.entryway entity_id: light.entryway
``` ```
It is important to note that each file must contain only **one** entry when using `!include_dir_list`. It is important to note that each file must contain only **one** entry when using `!include_dir_list`.
@ -333,7 +333,7 @@ It is important to note that each file must contain only **one** entry when usin
alexa: alexa:
intents: intents:
LocateIntent: LocateIntent:
action: actions:
action: notify.pushover action: notify.pushover
data: data:
message: "Your location has been queried via Alexa." message: "Your location has been queried via Alexa."
@ -371,7 +371,7 @@ alexa:
```yaml ```yaml
{% raw %} {% raw %}
action: actions:
action: notify.pushover action: notify.pushover
data: data:
message: "Your location has been queried via Alexa." message: "Your location has been queried via Alexa."
@ -408,20 +408,20 @@ speech:
```yaml ```yaml
automation: automation:
- alias: "Automation 1" - alias: "Automation 1"
trigger: triggers:
- platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
to: "home" to: "home"
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.entryway entity_id: light.entryway
- alias: "Automation 2" - alias: "Automation 2"
trigger: triggers:
- platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
from: "home" from: "home"
action: actions:
- action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.entryway entity_id: light.entryway
@ -439,20 +439,20 @@ automation: !include_dir_merge_list automation/
```yaml ```yaml
- alias: "Automation 1" - alias: "Automation 1"
trigger: triggers:
- platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
to: "home" to: "home"
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.entryway entity_id: light.entryway
- alias: "Automation 2" - alias: "Automation 2"
trigger: triggers:
- platform: state - trigger: state
entity_id: device_tracker.iphone entity_id: device_tracker.iphone
from: "home" from: "home"
action: actions:
- action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.entryway entity_id: light.entryway

View File

@ -1180,6 +1180,178 @@ See: [Python regular expression operations](https://docs.python.org/3/library/re
- Filter `value | regex_findall(find='', ignorecase=False)` will find all regex matches of the find expression in `value` and return the array of matches. - Filter `value | regex_findall(find='', ignorecase=False)` will find all regex matches of the find expression in `value` and return the array of matches.
- Filter `value | regex_findall_index(find='', index=0, ignorecase=False)` will do the same as `regex_findall` and return the match at index. - Filter `value | regex_findall_index(find='', index=0, ignorecase=False)` will do the same as `regex_findall` and return the match at index.
## Merge action responses
Using action responses we can collect information from various entities at the same time.
Using the `merge_response` template we can merge several responses into one list.
| Variable | Description |
| -------------- | ---------------------------------- |
| `value` | The incoming value (must be an action response). |
The `entity_id` key is appended to each dictionary within the template output list as a reference of origin. If the input dictionary already contains an `entity_id` key, the template will fail.
The `value_key` key is appended to each dictionary within the template output list as a reference of origin if the original service call was providing a list of dictionaries, for example, `calendar.get_events` or `weather.get_forecasts`.
Examples of these two keys can be seen in [example merge calendar action response](#example-merge-calendar-action-response) template output.
### Example
```yaml
{% raw %}
{% set combined_forecast = merge_response(response) %}
{{ combined_forecast[0].precipitation | float(0) | round(1) }}
{% endraw %}
```
### Example how to sort
Sorting the dictionaries within the list based on a specific key can be done directly by using Jinja's `sort` filter.
```yaml
{% raw %}
{{ merge_response(calendar_response) | sort(attribute='start') | ... }}
{% endraw %}
```
### Example merge calendar action response
```json
{
"calendar.sports": {
"events": [
{
"start": "2024-02-27T17:00:00-06:00",
"end": "2024-02-27T18:00:00-06:00",
"summary": "Basketball vs. Rockets",
"description": "",
}
]
},
"calendar.local_furry_events": {"events": []},
"calendar.yap_house_schedules": {
"events": [
{
"start": "2024-02-26T08:00:00-06:00",
"end": "2024-02-26T09:00:00-06:00",
"summary": "Dr. Appt",
"description": "",
},
{
"start": "2024-02-28T20:00:00-06:00",
"end": "2024-02-28T21:00:00-06:00",
"summary": "Bake a cake",
"description": "something good",
}
]
},
}
```
```yaml
{% raw %}
{{ merge_response(response_variable) }}
{% endraw %}
```
```json
[
{
"description": "",
"end": "2024-02-27T18:00:00-06:00",
"entity_id": "calendar.sports",
"start": "2024-02-27T17:00:00-06:00",
"summary": "Basketball vs. Rockets",
"value_key": "events"
},
{
"description": "",
"end": "2024-02-26T09:00:00-06:00",
"entity_id": "calendar.yap_house_schedules",
"start": "2024-02-26T08:00:00-06:00",
"summary": "Dr. Appt",
"value_key": "events"
},
{
"description": "something good",
"end": "2024-02-28T21:00:00-06:00",
"entity_id": "calendar.yap_house_schedules",
"start": "2024-02-28T20:00:00-06:00",
"summary": "Bake a cake",
"value_key": "events"
}
]
```
### Example non-list action responses
```json
{
"vacuum.deebot_n8_plus_1": {
"header": {
"ver": "0.0.1",
},
"payloadType": "j",
"resp": {
"body": {
"msg": "ok",
},
},
},
"vacuum.deebot_n8_plus_2": {
"header": {
"ver": "0.0.1",
},
"payloadType": "j",
"resp": {
"body": {
"msg": "ok",
},
},
},
}
```
```yaml
{% raw %}
{{ merge_response(response_variable) }}
{% endraw %}
```
```json
[
{
"entity_id": "vacuum.deebot_n8_plus_1",
"header": {
"ver": "0.0.1",
},
"payloadType": "j",
"resp": {
"body": {
"msg": "ok",
},
},
},
{
"entity_id": "vacuum.deebot_n8_plus_2",
"header": {
"ver": "0.0.1",
},
"payloadType": "j",
"resp": {
"body": {
"msg": "ok",
},
},
},
]
```
## Processing incoming data ## Processing incoming data
The other part of templating is processing incoming data. It allows you to modify incoming data and extract only the data you care about. This will only work for platforms and integrations that mention support for this in their documentation. The other part of templating is processing incoming data. It allows you to modify incoming data and extract only the data you care about. This will only work for platforms and integrations that mention support for this in their documentation.

View File

@ -57,15 +57,15 @@ Scenes can be activated using the action `scene.turn_on` (there is no 'scene.tur
```yaml ```yaml
# Example automation # Example automation
automation: automation:
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.sweetheart entity_id: device_tracker.sweetheart
from: "not_home" from: "not_home"
to: "home" to: "home"
action: actions:
action: scene.turn_on - action: scene.turn_on
target: target:
entity_id: scene.romantic entity_id: scene.romantic
``` ```
## Applying a scene without defining it ## Applying a scene without defining it
@ -75,22 +75,22 @@ With the `scene.apply` action you are able to apply a scene without first defini
```yaml ```yaml
# Example automation # Example automation
automation: automation:
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.sweetheart entity_id: device_tracker.sweetheart
from: "not_home" from: "not_home"
to: "home" to: "home"
action: actions:
action: scene.apply - action: scene.apply
data: data:
entities: entities:
light.tv_back_light: light.tv_back_light:
state: "on" state: "on"
brightness: 100 brightness: 100
light.ceiling: off light.ceiling: off
media_player.sony_bravia_tv: media_player.sony_bravia_tv:
state: "on" state: "on"
source: HDMI 1 source: "HDMI 1"
``` ```
## Using scene transitions ## Using scene transitions
@ -104,17 +104,17 @@ light will transition to the scene in 2.5 seconds.
```yaml ```yaml
# Example automation # Example automation
automation: automation:
trigger: triggers:
platform: state - trigger: state
entity_id: device_tracker.sweetheart entity_id: device_tracker.sweetheart
from: "not_home" from: "not_home"
to: "home" to: "home"
action: actions:
action: scene.turn_on - action: scene.turn_on
target: target:
entity_id: scene.romantic entity_id: scene.romantic
data: data:
transition: 2.5 transition: 2.5
``` ```
Transitions are currently only support by lights, which in their turn, have Transitions are currently only support by lights, which in their turn, have

View File

@ -146,7 +146,7 @@ The `condition` {% term action %} only stops executing the current sequence bloc
```yaml ```yaml
- alias: "Check if Paulus ishome AND temperature is below 20" - alias: "Check if Paulus ishome AND temperature is below 20"
condition: conditions:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
@ -231,9 +231,9 @@ This {% term action %} can use the same triggers that are available in an automa
# Wait for a custom event or light to turn on and stay on for 10 sec # Wait for a custom event or light to turn on and stay on for 10 sec
- alias: "Wait for MY_EVENT or light on" - alias: "Wait for MY_EVENT or light on"
wait_for_trigger: wait_for_trigger:
- platform: event - trigger: event
event_type: MY_EVENT event_type: MY_EVENT
- platform: state - trigger: state
entity_id: light.LIGHT entity_id: light.LIGHT
to: "on" to: "on"
for: 10 for: 10
@ -262,7 +262,7 @@ You can also get the script to abort after the timeout by using optional `contin
# Wait for IFTTT event or abort after specified timeout. # Wait for IFTTT event or abort after specified timeout.
- wait_for_trigger: - wait_for_trigger:
- platform: event - trigger: event
event_type: ifttt_webhook_received event_type: ifttt_webhook_received
event_data: event_data:
action: connected_to_network action: connected_to_network
@ -312,7 +312,7 @@ This can be used to take different actions based on whether or not the condition
target: target:
entity_id: switch.some_light entity_id: switch.some_light
- wait_for_trigger: - wait_for_trigger:
- platform: state - trigger: state
entity_id: binary_sensor.door_2 entity_id: binary_sensor.door_2
to: "on" to: "on"
for: 2 for: 2
@ -360,11 +360,11 @@ The following {% term automation %} example shows how to raise a custom event ca
```yaml ```yaml
- alias: "Fire Event" - alias: "Fire Event"
trigger: triggers:
- platform: state - trigger: state
entity_id: switch.kitchen entity_id: switch.kitchen
to: "on" to: "on"
action: actions:
- event: event_light_state_changed - event: event_light_state_changed
event_data: event_data:
state: "on" state: "on"
@ -376,10 +376,10 @@ The following {% term automation %} example shows how to capture the custom even
```yaml ```yaml
- alias: "Capture Event" - alias: "Capture Event"
trigger: triggers:
- platform: event - trigger: event
event_type: event_light_state_changed event_type: event_light_state_changed
action: actions:
- action: notify.notify - action: notify.notify
data: data:
message: "kitchen light is turned {{ trigger.event.data.state }}" message: "kitchen light is turned {{ trigger.event.data.state }}"
@ -524,16 +524,15 @@ _until_ the condition(s) evaluate to true.
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: binary_sensor.xyz entity_id: binary_sensor.xyz
to: "on" to: "on"
condition: conditions:
- condition: state - condition: state
entity_id: binary_sensor.something entity_id: binary_sensor.something
state: "off" state: "off"
mode: single actions:
action:
- alias: "Repeat the sequence UNTIL the conditions are true" - alias: "Repeat the sequence UNTIL the conditions are true"
repeat: repeat:
sequence: sequence:
@ -621,12 +620,12 @@ The `choose` {% term action %} can be used like an "if/then/elseif/then.../else"
```yaml ```yaml
# Example with "if", "elif" and "else" # Example with "if", "elif" and "else"
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: input_boolean.simulate entity_id: input_boolean.simulate
to: "on" to: "on"
mode: restart mode: restart
action: actions:
- choose: - choose:
# IF morning # IF morning
- conditions: - conditions:
@ -664,10 +663,10 @@ For example:
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: input_select.home_mode entity_id: input_select.home_mode
action: actions:
- choose: - choose:
- conditions: > - conditions: >
{{ trigger.to_state.state == 'Home' and {{ trigger.to_state.state == 'Home' and
@ -706,12 +705,12 @@ When the sun goes below the horizon, the `porch` and `garden` lights must turn o
# Example with "if" and "if" # Example with "if" and "if"
automation: automation:
- alias: "Turn lights on when the sun gets dim and if some room is occupied" - alias: "Turn lights on when the sun gets dim and if some room is occupied"
trigger: triggers:
- platform: numeric_state - trigger: numeric_state
entity_id: sun.sun entity_id: sun.sun
attribute: elevation attribute: elevation
below: 4 below: 4
action: actions:
# This must always apply # This must always apply
- action: light.turn_on - action: light.turn_on
data: data:
@ -770,11 +769,11 @@ groups themselves. In total, four actions are executed, one after the other.
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: binary_sensor.motion entity_id: binary_sensor.motion
to: "on" to: "on"
action: actions:
- alias: "Turn on devices" - alias: "Turn on devices"
sequence: sequence:
- action: light.turn_on - action: light.turn_on
@ -807,11 +806,11 @@ The following example shows sending messages out at the same time (in parallel):
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: state - trigger: state
entity_id: binary_sensor.motion entity_id: binary_sensor.motion
to: "on" to: "on"
action: actions:
- parallel: - parallel:
- action: notify.person1 - action: notify.person1
data: data:
@ -831,7 +830,7 @@ script:
- parallel: - parallel:
- sequence: - sequence:
- wait_for_trigger: - wait_for_trigger:
- platform: state - trigger: state
entity_id: binary_sensor.motion entity_id: binary_sensor.motion
to: "on" to: "on"
- action: notify.person1 - action: notify.person1
@ -966,7 +965,7 @@ blueprint:
selector: selector:
boolean: boolean:
action: actions:
- delay: 0:35 - delay: 0:35
enabled: !input input_boolean enabled: !input input_boolean
``` ```

View File

@ -19,16 +19,16 @@ All conditions support an optional `alias`.
Test multiple conditions in one condition statement. Passes if all embedded conditions are true. Test multiple conditions in one condition statement. Passes if all embedded conditions are true.
```yaml ```yaml
condition: conditions:
alias: "Paulus home AND temperature below 20" - alias: "Paulus home AND temperature below 20"
condition: and condition: and
conditions: conditions:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
- condition: numeric_state - condition: numeric_state
entity_id: "sensor.temperature" entity_id: "sensor.temperature"
below: 20 below: 20
``` ```
If you do not want to combine AND and OR conditions, you can list them sequentially. If you do not want to combine AND and OR conditions, you can list them sequentially.
@ -36,7 +36,7 @@ If you do not want to combine AND and OR conditions, you can list them sequentia
The following configuration works the same as the one listed above: The following configuration works the same as the one listed above:
```yaml ```yaml
condition: conditions:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
@ -50,9 +50,9 @@ Currently you need to format your conditions like this to be able to edit them u
The AND condition also has a shorthand form. The following configuration works the same as the ones listed above: The AND condition also has a shorthand form. The following configuration works the same as the ones listed above:
```yaml ```yaml
condition: conditions:
alias: "Paulus home AND temperature below 20" alias: "Paulus home AND temperature below 20"
and: - and:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
@ -66,30 +66,30 @@ condition:
Test multiple conditions in one condition statement. Passes if any embedded condition is true. Test multiple conditions in one condition statement. Passes if any embedded condition is true.
```yaml ```yaml
condition: conditions:
alias: "Paulus home OR temperature below 20" - alias: "Paulus home OR temperature below 20"
condition: or condition: or
conditions: conditions:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
- condition: numeric_state - condition: numeric_state
entity_id: "sensor.temperature" entity_id: "sensor.temperature"
below: 20 below: 20
``` ```
The OR condition also has a shorthand form. The following configuration works the same as the one listed above: The OR condition also has a shorthand form. The following configuration works the same as the one listed above:
```yaml ```yaml
condition: conditions:
alias: "Paulus home OR temperature below 20" - alias: "Paulus home OR temperature below 20"
or: or:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
- condition: numeric_state - condition: numeric_state
entity_id: "sensor.temperature" entity_id: "sensor.temperature"
below: 20 below: 20
``` ```
### Mixed AND and OR conditions ### Mixed AND and OR conditions
@ -98,27 +98,27 @@ Test multiple AND and OR conditions in one condition statement. Passes if any em
This allows you to mix several AND and OR conditions together. This allows you to mix several AND and OR conditions together.
```yaml ```yaml
condition: conditions:
condition: and - condition: and
conditions: conditions:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
- condition: or - condition: or
conditions: conditions:
- condition: state - condition: state
entity_id: sensor.weather_precip entity_id: sensor.weather_precip
state: "rain" state: "rain"
- condition: numeric_state - condition: numeric_state
entity_id: "sensor.temperature" entity_id: "sensor.temperature"
below: 20 below: 20
``` ```
Or in shorthand form: Or in shorthand form:
```yaml ```yaml
condition: conditions:
and: - and:
- condition: state - condition: state
entity_id: "device_tracker.paulus" entity_id: "device_tracker.paulus"
state: "home" state: "home"
@ -136,22 +136,22 @@ condition:
Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** true. Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** true.
```yaml ```yaml
condition: conditions:
alias: "Paulus not home AND alarm not disarmed" - alias: "Paulus not home AND alarm not disarmed"
condition: not condition: not
conditions: conditions:
- condition: state - condition: state
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
state: "home" state: "home"
- condition: state - condition: state
entity_id: alarm_control_panel.home_alarm entity_id: alarm_control_panel.home_alarm
state: disarmed state: "disarmed"
``` ```
The NOT condition also has a shorthand form. The following configuration works the same as the one listed above: The NOT condition also has a shorthand form. The following configuration works the same as the one listed above:
```yaml ```yaml
condition: conditions:
alias: "Paulus not home AND alarm not disarmed" alias: "Paulus not home AND alarm not disarmed"
not: not:
- condition: state - condition: state
@ -169,12 +169,12 @@ This type of condition attempts to parse the state of the specified entity or th
If both `below` and `above` are specified, both tests have to pass. If both `below` and `above` are specified, both tests have to pass.
```yaml ```yaml
condition: conditions:
alias: "Temperature between 17 and 25 degrees" - alias: "Temperature between 17 and 25 degrees"
condition: numeric_state condition: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
above: 17 above: 17
below: 25 below: 25
``` ```
You can optionally use a `value_template` to process the value of the state before testing it. You can optionally use a `value_template` to process the value of the state before testing it.
@ -182,13 +182,13 @@ You can optionally use a `value_template` to process the value of the state befo
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
condition: numeric_state - condition: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
above: 17 above: 17
below: 25 below: 25
# If your sensor value needs to be adjusted # If your sensor value needs to be adjusted
value_template: "{{ float(state.state) + 2 }}" value_template: "{{ float(state.state) + 2 }}"
``` ```
{% endraw %} {% endraw %}
@ -197,24 +197,24 @@ It is also possible to test the condition against multiple entities at once.
The condition will pass if **all** entities match the thresholds. The condition will pass if **all** entities match the thresholds.
```yaml ```yaml
condition: conditions:
condition: numeric_state - condition: numeric_state
entity_id: entity_id:
- sensor.kitchen_temperature - sensor.kitchen_temperature
- sensor.living_room_temperature - sensor.living_room_temperature
below: 18 below: 18
``` ```
Alternatively, the condition can test against a state attribute. Alternatively, the condition can test against a state attribute.
The condition will pass if the attribute value of the entity matches the thresholds. The condition will pass if the attribute value of the entity matches the thresholds.
```yaml ```yaml
condition: conditions:
condition: numeric_state - condition: numeric_state
entity_id: climate.living_room_thermostat entity_id: climate.living_room_thermostat
attribute: temperature attribute: temperature
above: 17 above: 17
below: 25 below: 25
``` ```
Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities
@ -222,12 +222,12 @@ 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
condition: conditions:
condition: numeric_state - condition: numeric_state
entity_id: climate.living_room_thermostat entity_id: climate.living_room_thermostat
attribute: temperature attribute: temperature
above: input_number.temperature_threshold_low above: input_number.temperature_threshold_low
below: input_number.temperature_threshold_high below: input_number.temperature_threshold_high
``` ```
## State condition ## State condition
@ -235,78 +235,78 @@ condition:
Tests if an entity has a specified state. Tests if an entity has a specified state.
```yaml ```yaml
condition: conditions:
alias: "Paulus not home for an hour and a bit" - alias: "Paulus not home for an hour and a bit"
condition: state condition: state
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
state: "not_home" state: "not_home"
# optional: Evaluates to true only if state was this for last X time. # optional: Evaluates to true only if state was this for last X time.
for: for:
hours: 1 hours: 1
minutes: 10 minutes: 10
seconds: 5 seconds: 5
``` ```
It is also possible to test the condition against multiple entities at once. It is also possible to test the condition against multiple entities at once.
The condition will pass if **all** entities match the state. The condition will pass if **all** entities match the state.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: entity_id:
- light.kitchen - light.kitchen
- light.living_room - light.living_room
state: "on" state: "on"
``` ```
Instead of matching all, it is also possible if one of the entities matches. Instead of matching all, it is also possible if one of the entities matches.
In the following example the condition will pass if **any** entity matches the state. In the following example the condition will pass if **any** entity matches the state.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: entity_id:
- binary_sensor.motion_sensor_left - binary_sensor.motion_sensor_left
- binary_sensor.motion_sensor_right - binary_sensor.motion_sensor_right
match: any match: any
state: "on" state: "on"
``` ```
Testing if an entity is matching a set of possible conditions; Testing if an entity is matching a set of possible conditions;
The condition will pass if the entity matches one of the states given. The condition will pass if the entity matches one of the states given.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: alarm_control_panel.home entity_id: alarm_control_panel.home
state: state:
- "armed_away" - "armed_away"
- "armed_home" - "armed_home"
``` ```
Or, combine multiple entities with multiple states. In the following example, Or, combine multiple entities with multiple states. In the following example,
both media players need to be either paused or playing for the condition to pass. both media players need to be either paused or playing for the condition to pass.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: entity_id:
- media_player.living_room - media_player.living_room
- media_player.kitchen - media_player.kitchen
state: state:
- "playing" - "playing"
- "paused" - "paused"
``` ```
Alternatively, the condition can test against a state attribute. Alternatively, the condition can test against a state attribute.
The condition will pass if the attribute matches the given state. The condition will pass if the attribute matches the given state.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: climate.living_room_thermostat entity_id: climate.living_room_thermostat
attribute: fan_mode attribute: fan_mode
state: "auto" state: "auto"
``` ```
Finally, the `state` option accepts helper entities (also known as `input_*` Finally, the `state` option accepts helper entities (also known as `input_*`
@ -314,10 +314,10 @@ entities). The condition will pass if the state of the entity matches the state
of the given helper entity. of the given helper entity.
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: alarm_control_panel.home entity_id: alarm_control_panel.home
state: input_select.guest_mode state: input_select.guest_mode
``` ```
You can also use templates in the `for` option. You can also use templates in the `for` option.
@ -325,13 +325,13 @@ You can also use templates in the `for` option.
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
condition: state - condition: state
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
state: "home" state: "home"
for: for:
minutes: "{{ states('input_number.lock_min')|int }}" minutes: "{{ states('input_number.lock_min')|int }}"
seconds: "{{ states('input_number.lock_sec')|int }}" seconds: "{{ states('input_number.lock_sec')|int }}"
``` ```
{% endraw %} {% endraw %}
@ -345,19 +345,19 @@ The `for` template(s) will be evaluated when the condition is tested.
The sun state can be used to test if the sun has set or risen. The sun state can be used to test if the sun has set or risen.
```yaml ```yaml
condition: conditions:
alias: "Sun up" - alias: "Sun up"
condition: state # 'day' condition: from sunrise until sunset condition: state # 'day' condition: from sunrise until sunset
entity_id: sun.sun entity_id: sun.sun
state: "above_horizon" state: "above_horizon"
``` ```
```yaml ```yaml
condition: conditions:
alias: "Sun down" - alias: "Sun down"
condition: state # from sunset until sunrise condition: state # from sunset until sunrise
entity_id: sun.sun entity_id: sun.sun
state: "below_horizon" state: "below_horizon"
``` ```
### Sun elevation condition ### Sun elevation condition
@ -370,13 +370,13 @@ For an in-depth explanation of sun elevation, see [sun elevation trigger][sun_el
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
condition: and # 'twilight' condition: dusk and dawn, in typical locations - condition: and # 'twilight' condition: dusk and dawn, in typical locations
conditions: conditions:
- condition: template - condition: template
value_template: "{{ state_attr('sun.sun', 'elevation') < 0 }}" value_template: "{{ state_attr('sun.sun', 'elevation') < 0 }}"
- condition: template - condition: template
value_template: "{{ state_attr('sun.sun', 'elevation') > -6 }}" value_template: "{{ state_attr('sun.sun', 'elevation') > -6 }}"
``` ```
{% endraw %} {% endraw %}
@ -384,7 +384,7 @@ condition:
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
condition: template # 'night' condition: from dusk to dawn, in typical locations condition: template # 'night' condition: from dusk to dawn, in typical locations
value_template: "{{ state_attr('sun.sun', 'elevation') < -6 }}" value_template: "{{ state_attr('sun.sun', 'elevation') < -6 }}"
``` ```
@ -405,16 +405,16 @@ The sunset/sunrise conditions do not work in locations inside the polar circles,
This is an example of 1 hour offset before sunset: This is an example of 1 hour offset before sunset:
```yaml ```yaml
condition: conditions:
condition: sun - condition: sun
after: sunset after: sunset
after_offset: "-01:00:00" after_offset: "-01:00:00"
``` ```
This is 'when dark' - equivalent to a state condition on `sun.sun` of `below_horizon`: This is 'when dark' - equivalent to a state condition on `sun.sun` of `below_horizon`:
```yaml ```yaml
condition: conditions:
- condition: sun - condition: sun
after: sunset after: sunset
before: sunrise before: sunrise
@ -423,7 +423,7 @@ condition:
This is 'when light' - equivalent to a state condition on `sun.sun` of `above_horizon`: This is 'when light' - equivalent to a state condition on `sun.sun` of `above_horizon`:
```yaml ```yaml
condition: conditions:
- condition: sun - condition: sun
after: sunrise after: sunrise
before: sunset before: sunset
@ -440,10 +440,10 @@ The template condition tests if the [given template][template] renders a value e
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
alias: "Iphone battery above 50%" - alias: "Iphone battery above 50%"
condition: template condition: template
value_template: "{{ (state_attr('device_tracker.iphone', 'battery_level')|int) > 50 }}" value_template: "{{ (state_attr('device_tracker.iphone', 'battery_level')|int) > 50 }}"
``` ```
{% endraw %} {% endraw %}
@ -487,13 +487,13 @@ and [`not`](#not-condition) conditions:
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
condition: or - condition: or
conditions: conditions:
- "{{ is_state('device_tracker.iphone', 'away') }}" - "{{ is_state('device_tracker.iphone', 'away') }}"
- condition: numeric_state - condition: numeric_state
entity_id: "sensor.temperature" entity_id: "sensor.temperature"
below: 20 below: 20
``` ```
{% endraw %} {% endraw %}
@ -539,16 +539,16 @@ It's also supported in script or automation `condition` actions:
The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week. The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week.
```yaml ```yaml
condition: conditions:
alias: "Time 15~02" - alias: "Time 15~02"
condition: time condition: time
# At least one of the following is required. # At least one of the following is required.
after: "15:00:00" after: "15:00:00"
before: "02:00:00" before: "02:00:00"
weekday: weekday:
- mon - mon
- wed - wed
- fri - fri
``` ```
Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
@ -565,7 +565,7 @@ or another `sensor` entity containing a timestamp with the "timestamp" device
class, can be used instead. class, can be used instead.
```yaml ```yaml
condition: conditions:
- alias: "Example referencing a time helper" - alias: "Example referencing a time helper"
condition: time condition: time
after: input_datetime.house_silent_hours_start after: input_datetime.house_silent_hours_start
@ -586,32 +586,32 @@ date part is fully ignored.
The trigger condition can test if an automation was triggered by a certain trigger, identified by the trigger's `id`. The trigger condition can test if an automation was triggered by a certain trigger, identified by the trigger's `id`.
```yaml ```yaml
condition: conditions:
condition: trigger - condition: trigger
id: event_trigger id: event_trigger
``` ```
For a trigger identified by its index, both a string and integer is allowed: For a trigger identified by its index, both a string and integer is allowed:
```yaml ```yaml
condition: conditions:
condition: trigger - condition: trigger
id: "0" id: "0"
``` ```
```yaml ```yaml
condition: conditions:
condition: trigger - condition: trigger
id: 0 id: 0
``` ```
It is possible to give a list of triggers: It is possible to give a list of triggers:
```yaml ```yaml
condition: conditions:
condition: trigger - condition: trigger
id: id:
- event_1_trigger - event_1_trigger
- event_2_trigger - event_2_trigger
``` ```
## Zone condition ## Zone condition
@ -619,35 +619,35 @@ condition:
Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have set up a device tracker platform that supports reporting GPS coordinates. Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have set up a device tracker platform that supports reporting GPS coordinates.
```yaml ```yaml
condition: conditions:
alias: "Paulus at home" - alias: "Paulus at home"
condition: zone condition: zone
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
zone: zone.home zone: zone.home
``` ```
It is also possible to test the condition against multiple entities at once. It is also possible to test the condition against multiple entities at once.
The condition will pass if all entities are in the specified zone. The condition will pass if all entities are in the specified zone.
```yaml ```yaml
condition: conditions:
condition: zone - condition: zone
entity_id: entity_id:
- device_tracker.frenck - device_tracker.frenck
- device_tracker.daphne - device_tracker.daphne
zone: zone.home zone: zone.home
``` ```
Testing if an entity is matching a set of possible zones; Testing if an entity is matching a set of possible zones;
The condition will pass if the entity is in one of the zones. The condition will pass if the entity is in one of the zones.
```yaml ```yaml
condition: conditions:
condition: zone - condition: zone
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
state: state:
- zone.home - zone.home
- zone.work - zone.work
``` ```
Or, combine multiple entities with multiple zones. In the following example, Or, combine multiple entities with multiple zones. In the following example,
@ -655,7 +655,7 @@ both entities need to be either in the home or the work zone for the condition
to pass. to pass.
```yaml ```yaml
condition: conditions:
condition: zone condition: zone
entity_id: entity_id:
- device_tracker.frenck - device_tracker.frenck
@ -670,7 +670,7 @@ condition:
{% raw %} {% raw %}
```yaml ```yaml
condition: conditions:
- condition: numeric_state - condition: numeric_state
entity_id: sun.sun entity_id: sun.sun
value_template: "{{ state.attributes.elevation }}" value_template: "{{ state.attributes.elevation }}"
@ -700,11 +700,11 @@ For example:
```yaml ```yaml
# This condition will always pass, as it is disabled. # This condition will always pass, as it is disabled.
condition: conditions:
enabled: false - enabled: false
condition: state condition: state
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. Conditions can also be disabled based on limited templates or blueprint inputs.
@ -728,7 +728,7 @@ blueprint:
trigger_variables: trigger_variables:
_enable_number: !input input_number _enable_number: !input input_number
condition: conditions:
- condition: state - condition: state
entity_id: sun.sun entity_id: sun.sun
state: "above_horizon" state: "above_horizon"

View File

@ -19,7 +19,8 @@ Perform the action `homeassistant.turn_on` on the {% term entity %} `group.livin
```yaml ```yaml
action: homeassistant.turn_on action: homeassistant.turn_on
entity_id: group.living_room target:
entity_id: group.living_room
``` ```
### Targeting areas and devices ### Targeting areas and devices
@ -51,7 +52,8 @@ You can also specify other parameters beside the entity to target. For example,
```yaml ```yaml
action: light.turn_on action: light.turn_on
entity_id: group.living_room target:
entity_id: group.living_room
data: data:
brightness: 120 brightness: 120
rgb_color: [255, 0, 0] rgb_color: [255, 0, 0]

View File

@ -104,10 +104,10 @@ If there is an automation that handles that event, it will be automatically trig
```yaml ```yaml
- alias: "Capture Event" - alias: "Capture Event"
trigger: triggers:
platform: event - trigger: event
event_type: event_light_state_changed event_type: event_light_state_changed
action: actions:
- action: notify.notify - action: notify.notify
data: data:
message: "Light is turned {{ trigger.event.data.state }}" message: "Light is turned {{ trigger.event.data.state }}"

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -8,6 +8,7 @@ ha_category:
- Light - Light
- Sensor - Sensor
- Switch - Switch
- Valve
ha_release: '0.60' ha_release: '0.60'
ha_iot_class: Local Push ha_iot_class: Local Push
ha_domain: ads ha_domain: ads
@ -15,12 +16,16 @@ ha_platforms:
- binary_sensor - binary_sensor
- cover - cover
- light - light
- select
- sensor - sensor
- switch - switch
- valve
ha_integration_type: integration ha_integration_type: integration
related: related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: Configuration file title: Configuration file
ha_codeowners:
- '@mrpasztoradam'
--- ---
The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.com/en-en/products/automation/twincat/) and other devices implementing this interface. The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.com/en-en/products/automation/twincat/) and other devices implementing this interface.
@ -32,7 +37,10 @@ There is currently support for the following device types within Home Assistant:
- [Sensor](#sensor) - [Sensor](#sensor)
- [Switch](#switch) - [Switch](#switch)
- [Cover](#cover) - [Cover](#cover)
- [Select](#select)
- [Valve](#valve)
<!-- omit in toc -->
## Configuration ## Configuration
To enable ADS, add the following lines to your {% term "`configuration.yaml`" %} file. To enable ADS, add the following lines to your {% term "`configuration.yaml`" %} file.
@ -60,6 +68,7 @@ ip_address:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
<!-- omit in toc -->
## Action ## Action
The ADS integration will register the `write_by_name` action allowing you to write a value to a variable on your ADS device. The ADS integration will register the `write_by_name` action allowing you to write a value to a variable on your ADS device.
@ -139,7 +148,7 @@ name:
## Sensor ## Sensor
The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT*, *BYTE*, *DINT* or *UDINT*. The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *BOOL*, *BYTE*, *INT*, *UINT*, *SINT*, *USINT*, *DINT*, *UDINT*, *WORD*, *DWORD*, *REAL*, or *LREAL*.
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your {% term "`configuration.yaml`" %} To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your {% term "`configuration.yaml`" %}
file: file:
@ -160,7 +169,7 @@ adsvar:
type: string type: string
adstype: adstype:
required: false required: false
description: The datatype of the ADS variable, possible values are int, uint, byte, dint, udint. description: The datatype of the ADS variable, possible values are bool, byte, int, uint, sint, usint, dint, udint, word, dword, real and lreal.
default: int default: int
type: string type: string
name: name:
@ -253,3 +262,56 @@ device_class:
description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend. description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend.
type: device_class type: device_class
{% endconfiguration %} {% endconfiguration %}
## Select
The `ads` select entity accesses an ENUM (int) variable on the connected ADS device. The variable is identified by its name. You have to set up a corresponding ENUM in the TwinCAT PLC. It is recommended to use explicit values starting from `0`.
```yaml
TYPE E_SampleA :
(
e1 := 0,
e2 := 1,
e3 := 2,
);
END_TYPE
```
## Valve
The `ads` valve entity accesses a boolean variable on the connected ADS device. The variable is identified by its name.
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your {% term "`configuration.yaml`" %}
file:
```yaml
# Example configuration.yaml entry
select:
- platform: ads
adsvar: MAIN.eMyEnum
options:
- "Off"
- "Setup"
- "Automatic"
- "Manual"
- "Guest"
- "Error"
valve:
- platform: ads
adsvar: MAIN.bValveControl
```
{% configuration %}
adsvar:
required: true
description: The name of the variable which you want to access on the ADS device.
type: string
options:
required: true
description: The available options to select from.
type: string
name:
required: false
description: An identifier for the valve in the frontend.
type: string
{% endconfiguration %}

View File

@ -4,6 +4,7 @@ description: Instructions on how to setup AirGradient devices in Home Assistant.
ha_category: ha_category:
- Health - Health
- Sensor - Sensor
- Update
ha_config_flow: true ha_config_flow: true
ha_release: 2024.6 ha_release: 2024.6
ha_iot_class: Local Polling ha_iot_class: Local Polling

View File

@ -10,6 +10,7 @@ ha_quality_scale: internal
ha_codeowners: ha_codeowners:
- '@home-assistant/core' - '@home-assistant/core'
ha_domain: template ha_domain: template
ha_config_flow: true
ha_platforms: ha_platforms:
- alarm_control_panel - alarm_control_panel
ha_integration_type: helper ha_integration_type: helper
@ -30,7 +31,9 @@ This can simplify the GUI and make it easier to write automations.
In optimistic mode, the alarm control panel will immediately change state after every command. Otherwise, the alarm control panel will wait for state confirmation from the template. Try to enable it, if experiencing incorrect operation. In optimistic mode, the alarm control panel will immediately change state after every command. Otherwise, the alarm control panel will wait for state confirmation from the template. Try to enable it, if experiencing incorrect operation.
## Configuration {% include integrations/config_flow.md %}
## YAML Configuration
To enable a template alarm control panel in your installation, add the following to your {% term "`configuration.yaml`" %} file. To enable a template alarm control panel in your installation, add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %} {% include integrations/restart_ha_after_config_inclusion.md %}

View File

@ -285,12 +285,12 @@ but you will still receive the done message.
```yaml ```yaml
- alias: "Telegram callback to stop alerts for garage door" - alias: "Telegram callback to stop alerts for garage door"
trigger: triggers:
- platform: event - trigger: event
event_type: telegram_callback event_type: telegram_callback
event_data: event_data:
data: "/garage_acknowledge" data: "/garage_acknowledge"
action: actions:
- action: alert.turn_off - action: alert.turn_off
target: target:
entity_id: alert.garage_door entity_id: alert.garage_door

View File

@ -11,7 +11,7 @@ ha_codeowners:
- '@ochlocracy' - '@ochlocracy'
- '@jbouwh' - '@jbouwh'
ha_domain: alexa ha_domain: alexa
ha_integration_type: integration ha_integration_type: system
ha_platforms: ha_platforms:
- diagnostics - diagnostics
--- ---

View File

@ -54,7 +54,7 @@ profile_name:
region_name: region_name:
description: The region identifier to connect to. description: The region identifier to connect to.
required: false required: false
type: [string, list] type: string
default: us-east-1 default: us-east-1
text_type: text_type:
description: "Whether to interpret messages as `text` or as [`ssml`](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) by default." description: "Whether to interpret messages as `text` or as [`ssml`](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) by default."
@ -76,7 +76,7 @@ sample_rate:
type: string type: string
default: 22050 for MP3 and Ogg Vorbis, 16000 for pcm default: 22050 for MP3 and Ogg Vorbis, 16000 for pcm
engine: engine:
description: "Override the default engine. Can be either of `standard` or `neural`. See Amazon documentation for compatible regions and voices." description: "Override the default engine. Can be either of [`standard`](https://docs.aws.amazon.com/polly/latest/dg/standard-voices.html), [`neural`](https://docs.aws.amazon.com/polly/latest/dg/neural-voices.html), [`long-form`](https://docs.aws.amazon.com/polly/latest/dg/long-form-voices.html) or [`generative`](https://docs.aws.amazon.com/polly/latest/dg/generative-voices.html). See Amazon documentation for compatible regions and voices."
required: false required: false
type: string type: string
default: standard default: standard
@ -127,6 +127,21 @@ Say with break:
Amazon Polly Amazon Polly
</speak> </speak>
``` ```
Say with specific voice and engine as options:
```yaml
- service: tts.amazon_polly_say
data:
message: "Hello from Amazon Polly"
entity_id: media_player.living_room
language: en-GB
options:
voice: Amy
engine: generative
```
## Advanced usage ## Advanced usage
Amazon Polly supports accented bilingual voices and you may find that you'd prefer the voice you like be slowed down, or speeded up. If the speed of the voice is a concern, Amazon Polly provides the ability to modify this using SSML tags. First enable SSML in configuration: Amazon Polly supports accented bilingual voices and you may find that you'd prefer the voice you like be slowed down, or speeded up. If the speed of the voice is a concern, Amazon Polly provides the ability to modify this using SSML tags. First enable SSML in configuration:

View File

@ -434,16 +434,16 @@ Using this {% term trigger %} in an {% term automation %} will allow you to dete
```yaml ```yaml
# Example automations.yaml entry # Example automations.yaml entry
alias: Doorbell Pressed alias: "Doorbell Pressed"
description: "Trigger when Amcrest Button Press Event Fires" description: "Trigger when Amcrest Button Press Event Fires"
trigger: triggers:
- platform: event - trigger: event
event_type: amcrest event_type: amcrest
event_data: event_data:
event: "CallNoAnswered" event: "CallNoAnswered"
payload: payload:
action: "Start" action: "Start"
action: actions:
- type: flash - type: flash
entity_id: light.living_room entity_id: light.living_room
domain: light domain: light

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -146,12 +146,12 @@ The `androidtv.adb_command` action allows you to send either keys or ADB shell c
In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this: In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this:
```yaml ```yaml
action: actions:
action: androidtv.adb_command - action: androidtv.adb_command
target: target:
entity_id: media_player.androidtv_tv_living_room entity_id: media_player.androidtv_tv_living_room
data: data:
command: "HOME" command: "HOME"
``` ```
Available key commands include: Available key commands include:

View File

@ -0,0 +1,20 @@
---
title: Arizona Public Service (APS)
description: Get energy usage from Arizona Public Service (APS) using the Opower integration
ha_category:
- Energy
- Sensor
ha_release: 2023.8
ha_domain: aps
ha_integration_type: virtual
ha_supporting_domain: opower
ha_supporting_integration: Opower
ha_codeowners:
- '@tronikos'
ha_config_flow: true
ha_platforms:
- sensor
ha_iot_class: Cloud Polling
---
{% include integrations/supported_brand.md %}

View File

@ -0,0 +1,24 @@
---
title: Aqara
description: Connect and control your Aqara Matter devices using the Matter integration
ha_release: '2024.10'
ha_iot_class: Local Push
ha_category:
- Lock
ha_domain: aqara
ha_integration_type: brand
works_with:
- matter
ha_platforms:
- lock
ha_iot_standard: matter
ha_brand: true
---
[Aqara](https://www.aqara.com/) is a member of the Works with Home Assistant partner program for their Matter products. Aqara is committed to making sure their products are up-to-date and ready to use in Home Assistant.
Aqara Matter devices work locally and integrate seamlessly with the Matter integration in Home Assistant. As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
{% my add_matter_device badge domain=page.ha_domain %}
[Learn more about Matter in Home Assistant.](/integrations/matter/)

View File

@ -9,7 +9,7 @@ ha_codeowners:
- '@balloob' - '@balloob'
- '@synesthesiam' - '@synesthesiam'
ha_domain: assist_pipeline ha_domain: assist_pipeline
ha_integration_type: integration ha_integration_type: system
ha_quality_scale: internal ha_quality_scale: internal
ha_platforms: ha_platforms:
- select - select

View File

@ -0,0 +1,45 @@
---
title: Assist Satellite
description: Remote satellites that use Assist.
ha_category:
- Voice
ha_release: '2024.10'
ha_codeowners:
- '@home-assistant/core'
- '@synesthesiam'
ha_domain: assist_satellite
ha_integration_type: entity
ha_quality_scale: internal
---
This is an {% term integration %} for remote satellites that use [Assist](/voice_control/) to control and interact with Home Assistant. This allows other integrations to represent these satellites in a consistent manner.
{% include integrations/building_block_integration.md %}
## Actions
An Assist satellite entity exposes additional actions to remotely control the satellite in automations or scripts. These actions can be created via the UI, but are
also available in YAML (examples below).
### Action `assist_satellite.announce`
The {% my developer_call_service service="assist_satellite.announce" %} action announces a message or media id on the satellite. If a message is to be announced, it will first be converted to a media id using the [text-to-speech](/integrations/tts) system of the satellite's configured [pipeline](/voice_control/voice_remote_local_assistant/).
{% my developer_call_service badge service="assist_satellite.announce" %}
Examples in YAML:
```yaml
action: assist_satellite.announce
target:
entity_id: assist_satellite.my_entity
message: "Dinner is ready!"
```
```yaml
action: assist_satellite.announce
target:
entity_id: assist_satellite.my_entity
media_id: ITEM_ID
```

View File

@ -42,9 +42,18 @@ These sensors are automatically created and associated to the router device:
- Upload sensor (unit_of_measurement: Gigabyte - *Daily accumulation*) - Upload sensor (unit_of_measurement: Gigabyte - *Daily accumulation*)
- Upload Speed sensor (unit_of_measurement: Mbit/s) - Upload Speed sensor (unit_of_measurement: Mbit/s)
- Load average sensors (1min, 5min, 15min) - Load average sensors (1min, 5min, 15min)
- Temperature sensors (2ghz, 5ghz, cpu). NB: only temperature sensors available on your router will be created - Temperature sensors (2 GHz, 5 GHz, 6 GHz, CPU). Only temperature sensors available on your router will be created.
Only `Connected devices sensor` is created in status **enabled**, all other sensors are created in status **disabled**. To use them, simply **enable** on the devices page. If the integration is configured to use the http(s) protocol, also the following sensors will be available:
- CPU usage sensors (percentage for total and single core)
- Memory usage sensor (percentage)
- Free memory sensor (Megabyte)
- Memory used sensor (Megabyte)
- Last boot sensor (Timestamp)
- Uptime sensor (HH:MM:SS)
Only `Connected devices sensor` and `Last boot sensor` are created in status **enabled**, all other sensors are created in status **disabled**. To use them, simply **enable** on the devices page.
{% include integrations/option_flow.md %} {% include integrations/option_flow.md %}
{% configuration_basic %} {% configuration_basic %}

View File

@ -147,17 +147,17 @@ Using the lock operation sensors, you can detect when a user operates a lock and
- id: "1583706446906" - id: "1583706446906"
alias: "joe_doe_front_door_operate" alias: "joe_doe_front_door_operate"
description: John Doe locks or unlocks the Front Door description: John Doe locks or unlocks the Front Door
trigger: triggers:
- entity_id: sensor.front_door_operator - trigger: state
platform: state entity_id: sensor.front_door_operator
to: John Doe to: "John Doe"
condition: conditions:
- condition: template - condition: template
value_template: "{{ not state_attr('sensor.front_door_operator', 'remote') }}" value_template: "{{ not state_attr('sensor.front_door_operator', 'remote') }}"
action: actions:
- data: {} - action: camera.turn_off
entity_id: camera.inside entity_id: camera.inside
action: camera.turn_off
``` ```
{% endraw %} {% endraw %}

View File

@ -41,3 +41,16 @@ Gain insight into how much energy an inverter produces. The integration will cre
- AC output power (W) - AC output power (W)
- AC output energy total (kWh) - AC output energy total (kWh)
### Battery
If you have a battery connected to your system, you can monitor the battery status and see how much energy it charges or discharges.
- Power flow (W) - Positive values indicate charging, negative values indicate discharging
- State of charge (%)
- Discharged energy today (kWh)
- Discharged energy this month (kWh)
- Discharged energy total (kWh)
- Charged energy today (kWh)
- Charged energy this month (kWh)
- Charged energy total (kWh)

View File

@ -33,4 +33,5 @@ This integration provides a sensor for Azure DevOps:
- Latest build queue time - How long the latest build was queued. - Latest build queue time - How long the latest build was queued.
- Latest build start time - The time when the latest build actually started. - Latest build start time - The time when the latest build actually started.
- Latest build finish time - The time when the latest build finished. - Latest build finish time - The time when the latest build finished.
- Latest build URL - The URL to the latest build. - Latest build URL - The URL to the latest build.
- Work item count - The number of work items for each work item type and state in the project.

View File

@ -81,20 +81,20 @@ See the example below for how an automation trigger translates to a message on t
```yaml ```yaml
automation: automation:
- alias: "Sunset Service Bus message" - alias: "Sunset Service Bus message"
trigger: triggers:
platform: sun - trigger: sun
event: sunset event: sunset
action: actions:
action: notify.test_queue - action: notify.test_queue
data:
message: "Sun is going down"
title: "Good evening"
data: data:
sun_direction: "Down" message: "Sun is going down"
custom_field: 123 title: "Good evening"
custom_object: data:
trigger_more: true sun_direction: "Down"
explain: "It's starting to get dark" custom_field: 123
custom_object:
trigger_more: true
explain: "It's starting to get dark"
``` ```
The message that can be retrieved from a queue or topic subscription: The message that can be retrieved from a queue or topic subscription:

View File

@ -51,12 +51,12 @@ at 3 AM:
```yaml ```yaml
automation: automation:
- alias: "Backup Home Assistant every night at 3 AM" - alias: "Backup Home Assistant every night at 3 AM"
trigger: triggers:
platform: time - trigger: time
at: "03:00:00" at: "03:00:00"
action: actions:
alias: "Create backup now" - alias: "Create backup now"
action: backup.create action: backup.create
``` ```
## Restoring a backup ## Restoring a backup

View File

@ -125,6 +125,10 @@ observations:
## Full examples ## Full examples
These are a number of worked examples which you may find helpful for each of the state types.
### State
The following is an example for the `state` observation platform. The following is an example for the `state` observation platform.
```yaml ```yaml
@ -163,6 +167,8 @@ binary_sensor:
to_state: "ac" to_state: "ac"
``` ```
### Numeric State
Next up an example which targets the `numeric_state` observation platform, Next up an example which targets the `numeric_state` observation platform,
as seen in the configuration it requires `below` and/or `above` instead of `to_state`. as seen in the configuration it requires `below` and/or `above` instead of `to_state`.
@ -181,7 +187,9 @@ binary_sensor:
below: 50 below: 50
``` ```
Finally, here's an example for `template` observation platform, as seen in the configuration it requires `value_template`. This template will evaluate to true if the device tracker `device_tracker.paulus` shows `not_home` and it last changed its status more than 5 minutes ago. ### Template
Here's an example for `template` observation platform, as seen in the configuration it requires `value_template`. This template will evaluate to true if the device tracker `device_tracker.paulus` shows `not_home` and it last changed its status more than 5 minutes ago.
{% raw %} {% raw %}
@ -202,3 +210,66 @@ binary_sensor:
``` ```
{% endraw %} {% endraw %}
### Multiple state and numeric entries per entity
Lastly, an example illustrates how to configure Bayesian when there are more than two states of interest and several possible numeric ranges. When an entity can hold more than 2 values of interest (numeric ranges or states), then you may wish to specify probabilities for each possible value. Once you have specified more than one, Bayesian cannot infer anything about states or numeric values that are unspecified, like it usually does, so it is recommended that all possible values are included. As above, the `prob_given_true`s of all the possible states should sum to 1, as should the `prob_given_false`s. If a value that has not been specified is observed, then the observation will be ignored as it would be if the entity were `UNKNOWN` or `UNAVAILABLE`.
When more than one range is specified, if a value falls on `below`, it will be included with the range that lists it in `below`. `below` then means "below or equal to". This is not true when only a single range is specified, where both `above` and `below` do not include "equal to".
This is an example sensor that can detect if the bins have been left on the side of the road and need to be brought closer to the house. It combines a theoretical presence sensor that gives a numeric signal strength and an API sensor from local government that can have 3 possible states: `due` when collection is due in the next 24 hours, `collected` when collection has happened in the last 24 hours, and `not_due` at other times.
```yaml
# Example configuration.yaml entry
binary_sensor:
name: "Bins need bringing in"
platform: "bayesian"
prior: 0.14 # bins are left out for usually about one day a week
probability_threshold: 0.5
observations:
- platform: "numeric_state"
entity_id: "sensor.signal_strength"
prob_given_true: 0.01 # if the bins are out and need bringing in there is only a 1% chance we will get a strong signal of above 10
prob_given_false: 0.3 # if the bins are not out, we still tend not to get a signal this strong
above: 10
- platform: "numeric_state"
entity_id: "sensor.signal_strength"
prob_given_true: 0.02
prob_given_false: 0.5 #if the bins are not out, we often get a signal this strong
above: 5
below: 10
- platform: "numeric_state"
entity_id: "sensor.signal_strength"
prob_given_true: 0.07
prob_given_false: 0.1
above: 0
below: 5
- platform: "numeric_state"
entity_id: "sensor.signal_strength"
prob_given_true: 0.3
prob_given_false: 0.07
above: -10
below: 0
- platform: "numeric_state"
entity_id: "sensor.signal_strength"
prob_given_true: 0.6 #if the bins are out, we often get a signal this weak or even weaker
prob_given_false: 0.03
below: -10
# then lets say we want to combine this with an imaginary sensor.bin_collection which reads a local government API that can have one of three values (collected, due, not due)
- platform: "state"
entity_id: "sensor.bin_collection"
prob_given_true: 0.8 # If the bins need bringing in, usually it's because they've just been collected
prob_given_false: 0.05 #
to_state: "collected"
- platform: "state"
entity_id: "sensor.bin_collection"
prob_given_true: 0.05 # If the bins need bringing in, then the sensor.bin_collection shouldn't be 'due'
prob_given_false: 0.11 # The sensor will be 'due' for about 1 day a week (the 24 hours before collection)
to_state: "due"
- platform: "state"
entity_id: "sensor.bin_collection"
prob_given_true: 0.15 #All the prob_given_true should add to 1
prob_given_false: 0.84 # All the prob_given_false should add to 1
to_state: "not due"
```
To achieve a similar result for multiple `template` observations targeting a single entity, write your templates to return `True` or `None` rather than `True` or `False`.

View File

@ -39,16 +39,16 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
```yaml ```yaml
- alias: "If there is motion and it's dark turn on the gateway light" - alias: "If there is motion and it's dark turn on the gateway light"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
from: "off" from: "off"
to: "on" to: "on"
condition: conditions:
condition: numeric_state - condition: numeric_state
entity_id: sensor.illumination_34ce00xxxx11 entity_id: sensor.illumination_34ce00xxxx11
below: 300 below: 300
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_34ce00xxxx11 entity_id: light.gateway_light_34ce00xxxx11
@ -58,14 +58,14 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
target: target:
entity_id: automation.MOTION_OFF entity_id: automation.MOTION_OFF
- alias: "If there no motion for 5 minutes turn off the gateway light" - alias: "If there no motion for 5 minutes turn off the gateway light"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
from: "on" from: "on"
to: "off" to: "off"
for: for:
minutes: 5 minutes: 5
action: actions:
- action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.gateway_light_34ce00xxxx11 entity_id: light.gateway_light_34ce00xxxx11
@ -78,42 +78,42 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
```yaml ```yaml
- alias: "If the window is open turn off the radiator" - alias: "If the window is open turn off the radiator"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
from: "off" from: "off"
to: "on" to: "on"
action: actions:
action: climate.set_operation_mode - action: climate.set_operation_mode
target: target:
entity_id: climate.livingroom entity_id: climate.livingroom
data: data:
operation_mode: "Off" operation_mode: "Off"
- alias: "If the window is closed for 5 minutes turn on the radiator again" - alias: "If the window is closed for 5 minutes turn on the radiator again"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
from: "on" from: "on"
to: "off" to: "off"
for: for:
minutes: 5 minutes: 5
action: actions:
action: climate.set_operation_mode - action: climate.set_operation_mode
target: target:
entity_id: climate.livingroom entity_id: climate.livingroom
data: data:
operation_mode: "Smart schedule" operation_mode: "Smart schedule"
- alias: "Notify if door is opened when away" - alias: "Notify if door is opened when away"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.door_window_sensor_15xxxxxxc9xx6b entity_id: binary_sensor.door_window_sensor_15xxxxxxc9xx6b
from: "off" from: "off"
to: "on" to: "on"
condition: conditions:
- condition: state - condition: state
entity_id: group.family entity_id: group.family
state: "not_home" state: "not_home"
action: actions:
- action: notify.notify_person - action: notify.notify_person
data: data:
message: "The door has been opened" message: "The door has been opened"
@ -123,16 +123,16 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
```yaml ```yaml
- alias: "Send notification on fire alarm" - alias: "Send notification on fire alarm"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.smoke_sensor_158d0001574899 entity_id: binary_sensor.smoke_sensor_158d0001574899
from: "off" from: "off"
to: "on" to: "on"
action: actions:
- action: notify.html5 - action: notify.html5
data: data:
title: Fire alarm! title: "Fire alarm!"
message: Fire/Smoke detected! message: "Fire/Smoke detected!"
- action: xiaomi_aqara.play_ringtone - action: xiaomi_aqara.play_ringtone
data: data:
gw_mac: xxxxxxxxxxxx gw_mac: xxxxxxxxxxxx
@ -146,15 +146,15 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
```yaml ```yaml
- alias: "Send notification on gas alarm" - alias: "Send notification on gas alarm"
trigger: triggers:
platform: state - trigger: state
entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx
from: "off" from: "off"
to: "on" to: "on"
action: actions:
- action: notify.html5 - action: notify.html5
data: data:
title: Gas alarm! title: "Gas alarm!"
message: "Gas with a density of {{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }} detected." message: "Gas with a density of {{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }} detected."
``` ```
@ -166,40 +166,40 @@ As indicated in the table on top of this page there are 3 versions of the button
```yaml ```yaml
- alias: "Toggle dining light on single press" - alias: "Toggle dining light on single press"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.switch_158d000xxxxxc2 entity_id: binary_sensor.switch_158d000xxxxxc2
click_type: single click_type: single
action: actions:
action: switch.toggle - action: switch.toggle
target: target:
entity_id: switch.wall_switch_left_158d000xxxxx01 entity_id: switch.wall_switch_left_158d000xxxxx01
- alias: "Toggle couch light on double click" - alias: "Toggle couch light on double click"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.switch_158d000xxxxxc2 entity_id: binary_sensor.switch_158d000xxxxxc2
click_type: double click_type: double
action: actions:
action: switch.toggle - action: switch.toggle
target: target:
entity_id: switch.wall_switch_right_158d000xxxxx01 entity_id: switch.wall_switch_right_158d000xxxxx01
- alias: "Let a dog bark on long press" - alias: "Let a dog bark on long press"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.switch_158d000xxxxxc2 entity_id: binary_sensor.switch_158d000xxxxxc2
click_type: long_click_press click_type: long_click_press
action: actions:
action: xiaomi_aqara.play_ringtone - action: xiaomi_aqara.play_ringtone
data: data:
gw_mac: xxxxxxxxxxxx gw_mac: xxxxxxxxxxxx
ringtone_id: 8 ringtone_id: 8
ringtone_vol: 8 ringtone_vol: 8
``` ```
#### Xiaomi Cube #### Xiaomi Cube
@ -208,65 +208,65 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi
```yaml ```yaml
- alias: "Cube event flip90" - alias: "Cube event flip90"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.cube_action event_type: xiaomi_aqara.cube_action
event_data: event_data:
entity_id: binary_sensor.cube_15xxxxxxxxxxxx entity_id: binary_sensor.cube_15xxxxxxxxxxxx
action_type: flip90 action_type: flip90
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_28xxxxxxxxxx entity_id: light.gateway_light_28xxxxxxxxxx
data: data:
color_name: "springgreen" color_name: "springgreen"
- alias: "Cube event flip180" - alias: "Cube event flip180"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.cube_action event_type: xiaomi_aqara.cube_action
event_data: event_data:
entity_id: binary_sensor.cube_15xxxxxxxxxxxx entity_id: binary_sensor.cube_15xxxxxxxxxxxx
action_type: flip180 action_type: flip180
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_28xxxxxxxxxx entity_id: light.gateway_light_28xxxxxxxxxx
data: data:
color_name: "darkviolet" color_name: "darkviolet"
- alias: "Cube event move" - alias: "Cube event move"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.cube_action event_type: xiaomi_aqara.cube_action
event_data: event_data:
entity_id: binary_sensor.cube_15xxxxxxxxxxxx entity_id: binary_sensor.cube_15xxxxxxxxxxxx
action_type: move action_type: move
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_28xxxxxxxxxx entity_id: light.gateway_light_28xxxxxxxxxx
data: data:
color_name: "gold" color_name: "gold"
- alias: "Cube event tap_twice" - alias: "Cube event tap_twice"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.cube_action event_type: xiaomi_aqara.cube_action
event_data: event_data:
entity_id: binary_sensor.cube_15xxxxxxxxxxxx entity_id: binary_sensor.cube_15xxxxxxxxxxxx
action_type: tap_twice action_type: tap_twice
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_28xxxxxxxxxx entity_id: light.gateway_light_28xxxxxxxxxx
data: data:
color_name: "deepskyblue" color_name: "deepskyblue"
- alias: "Cube event shake_air" - alias: "Cube event shake_air"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.cube_action event_type: xiaomi_aqara.cube_action
event_data: event_data:
entity_id: binary_sensor.cube_15xxxxxxxxxxxx entity_id: binary_sensor.cube_15xxxxxxxxxxxx
action_type: shake_air action_type: shake_air
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_28xxxxxxxxxx entity_id: light.gateway_light_28xxxxxxxxxx
@ -282,62 +282,62 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac
```yaml ```yaml
- alias: "Decrease brightness of the gateway light" - alias: "Decrease brightness of the gateway light"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12 entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12
click_type: single click_type: single
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_34xxxxxxxx13 entity_id: light.gateway_light_34xxxxxxxx13
data: data:
brightness: >- brightness: >-
{% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') %} {% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') %}
{% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') - 60 >= 10 %} {% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') - 60 >= 10 %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') - 60}} {{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') - 60}}
{% else %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness')}}
{% endif %}
{% else %} {% else %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness')}} 10
{% endif %} {% endif %}
{% else %}
10
{% endif %}
- alias: "Increase brightness of the gateway light" - alias: "Increase brightness of the gateway light"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12 entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12
click_type: single click_type: single
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.gateway_light_34xxxxxxxx13 entity_id: light.gateway_light_34xxxxxxxx13
data: data:
brightness: >- brightness: >-
{% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') %} {% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') %}
{% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') + 60 <= 255 %} {% if state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') + 60 <= 255 %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') + 60}} {{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness') + 60}}
{% else %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness')}}
{% endif %}
{% else %} {% else %}
{{state_attr('light.gateway_light_34xxxxxxxx13', 'brightness')}} 10
{% endif %} {% endif %}
{% else %}
10
{% endif %}
- alias: "Turn off the gateway light" - alias: "Turn off the gateway light"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.click event_type: xiaomi_aqara.click
event_data: event_data:
entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12 entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12
click_type: both click_type: both
action: actions:
action: light.turn_off - action: light.turn_off
target: target:
entity_id: light.gateway_light_34xxxxxxxx13 entity_id: light.gateway_light_34xxxxxxxx13
``` ```
{% endraw %} {% endraw %}
@ -348,25 +348,25 @@ This automation toggles the living room lamp on vibration/tilt.
```yaml ```yaml
- alias: "Turn on Living Room Lamp on vibration" - alias: "Turn on Living Room Lamp on vibration"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.movement event_type: xiaomi_aqara.movement
event_data: event_data:
entity_id: binary_sensor.vibration_xxxx000000 entity_id: binary_sensor.vibration_xxxx000000
movement_type: vibrate movement_type: vibrate
action: actions:
action: light.toggle - action: light.toggle
target: target:
entity_id: light.living_room_lamp entity_id: light.living_room_lamp
- alias: "Turn on Living Room Lamp on tilt" - alias: "Turn on Living Room Lamp on tilt"
trigger: triggers:
platform: event - trigger: event
event_type: xiaomi_aqara.movement event_type: xiaomi_aqara.movement
event_data: event_data:
entity_id: binary_sensor.vibration_xxxx000000 entity_id: binary_sensor.vibration_xxxx000000
movement_type: tilt movement_type: tilt
action: actions:
action: light.toggle - action: light.toggle
target: target:
entity_id: light.living_room_lamp entity_id: light.living_room_lamp
``` ```

View File

@ -133,16 +133,15 @@ This example automation will arm your blink sync module to detect motion on any
Here, this example assumes your blink module is named `My Sync Module` and that you have [device trackers](/integrations/device_tracker) set up for presence detection. Here, this example assumes your blink module is named `My Sync Module` and that you have [device trackers](/integrations/device_tracker) set up for presence detection.
```yaml ```yaml
- id: arm_blink_when_away - alias: "Arm Blink When Away"
alias: "Arm Blink When Away" triggers:
trigger: - trigger: state
platform: state entity_id: all
entity_id: all to: "not_home"
to: "not_home" actions:
action: - action: alarm_control_panel.alarm_arm_away
action: alarm_control_panel.alarm_arm_away target:
target: entity_id: alarm_control_panel.blink_my_sync_module
entity_id: alarm_control_panel.blink_my_sync_module
``` ```
### Disarm Blink when home ### Disarm Blink when home
@ -150,16 +149,15 @@ Here, this example assumes your blink module is named `My Sync Module` and that
Similar to the previous example, this automation will disarm blink when arriving home. Similar to the previous example, this automation will disarm blink when arriving home.
```yaml ```yaml
- id: disarm_blink_when_home - alias: "Disarm Blink When Home"
alias: "Disarm Blink When Home" triggers:
trigger: - trigger: state
platform: state entity_id: all
entity_id: all to: "home"
to: "home" actions:
action: - action: alarm_control_panel.alarm_disarm
action: alarm_control_panel.alarm_disarm target:
target: entity_id: alarm_control_panel.blink_my_sync_module
entity_id: alarm_control_panel.blink_my_sync_module
``` ```
### Save most recent video locally when motion detected ### Save most recent video locally when motion detected
@ -171,13 +169,12 @@ The following example assumes your camera's name (in the Blink app) is `My Camer
{% raw %} {% raw %}
```yaml ```yaml
- id: save_blink_video_on_motion - alias: "Save Blink Video on Motion"
alias: "Save Blink Video on Motion" triggers:
trigger: - trigger: state
platform: state entity_id: binary_sensor.blink_my_camera_motion_detected
entity_id: binary_sensor.blink_my_camera_motion_detected to: "on"
to: "on" actions:
action:
- action: blink.save_video - action: blink.save_video
target: target:
entity_id: camera.blink_my_camera entity_id: camera.blink_my_camera
@ -200,12 +197,11 @@ The file will be saved to `/tmp/videos/YYYYMMDD_HHmmSS_MyCamera.mp4`.
The file name of the downloaded video file is not configurable. The file name of the downloaded video file is not configurable.
```yaml ```yaml
- id: save_recent_clips_from_my_camera - alias: "Save Recent Clips from My Camera"
alias: "Save Recent Clips from My Camera" triggers:
trigger: - trigger: time_pattern
- platform: time_pattern
minutes: /3 minutes: /3
action: actions:
- action: blink.save_recent_clips - action: blink.save_recent_clips
target: target:
entity_id: camera.my_camera entity_id: camera.my_camera

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -79,17 +79,17 @@ The name of the action is `notify.bmw_connected_drive_<your_vehicle>`.
```yaml ```yaml
... ...
action: actions:
action: notify.bmw_connected_drive_<your_vehicle> - action: notify.bmw_connected_drive_<your_vehicle>
data:
message: The name of the POI # this is shown on the iDrive dashboard
data: data:
latitude: 48.177024 message: The name of the POI # this is shown on the iDrive dashboard
longitude: 11.559107 data:
street: Street name # Optional latitude: 48.177024
city: City name # Optional longitude: 11.559107
postal_code: Postal Code # Optional street: Street name # Optional
country: Country # Optional city: City name # Optional
postal_code: Postal Code # Optional
country: Country # Optional
``` ```
## Lock ## Lock

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -12,6 +12,8 @@ ha_codeowners:
ha_domain: bring ha_domain: bring
ha_integration_type: service ha_integration_type: service
ha_platforms: ha_platforms:
- diagnostics
- sensor
- todo - todo
related: related:
- docs: /integrations/todo - docs: /integrations/todo
@ -30,6 +32,13 @@ For authentication, the integration requires the `email` and `password` you used
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
## Sensors
- **Urgent:** Shows the number of items tagged with the **Urgent** badge on the shopping list. Completed items are excluded.
- **On occasion:** Displays the count of items marked with the **If convenient** badge.
- **Discount only:** Indicates the number of items tagged with the **Offer** badge.
- **Region & Language:** The sensor can be used for diagnostics. If everything is set correctly, it will display the selected region for the shopping list. If it shows **Unknown**, the region has not been set properly in the **Bring!** app.
## Actions ## Actions
You can use the actions from the [to-do list](/integrations/todo/) to create, update, or delete items on your Bring! shopping lists. You can use the actions from the [to-do list](/integrations/todo/) to create, update, or delete items on your Bring! shopping lists.
@ -57,12 +66,12 @@ The **Bring** integration offers an action to send push notifications to the Bri
```yaml ```yaml
... ...
action: actions:
action: bring.send_message - action: bring.send_message
target: target:
entity_id: todo.bring_shoppinglist entity_id: todo.bring_shoppinglist
data: data:
message: going_shopping message: going_shopping
``` ```
### Sending an urgent message notification ### Sending an urgent message notification
@ -71,11 +80,11 @@ Note that for the notification type `urgent_message` the attribute `item` is **r
```yaml ```yaml
... ...
action: actions:
action: bring.send_message - action: bring.send_message
target: target:
entity_id: todo.bring_shoppinglist entity_id: todo.bring_shoppinglist
data: data:
message: urgent_message message: urgent_message
item: Cilantro item: Cilantro
``` ```

View File

@ -3,6 +3,7 @@ title: BSB-Lan
description: Instructions on how to integrate BSBLan device into Home Assistant. description: Instructions on how to integrate BSBLan device into Home Assistant.
ha_category: ha_category:
- Climate - Climate
- Sensor
ha_release: '0.110' ha_release: '0.110'
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_config_flow: true ha_config_flow: true
@ -12,31 +13,32 @@ ha_domain: bsblan
ha_platforms: ha_platforms:
- climate - climate
- diagnostics - diagnostics
- sensor
ha_integration_type: device ha_integration_type: device
--- ---
The **BSB-Lan** {% term integration %} integrates [BSBLan](https://github.com/fredlcore/BSB-LAN) devices into Home Assistant. The **BSB-Lan** {% term integration %} integrates [BSBLan](https://github.com/fredlcore/BSB-LAN) devices into Home Assistant.
BSBLan is a device that is made by `Frederik Holst` and `Ulf Dieckmann` for documentation and with BSBLan is a device that is made by `Frederik Holst` and with
the help of many other contributors. the help of many other contributors.
The new board v3 is designed for an Arduino Due with an Ethernet-Shield for web-based controlling The board v3 is designed for an Arduino Due with an Ethernet-Shield for web-based controlling
of heating systems such as `Elco Thision`, `Brötje` and similar systems. of heating systems such as `Elco Thision`, `Brötje` and similar systems.
Also, available is an ESP32 version of the board.
It can interface with the heating system over Boiler-System-Bus, Local Process Bus and PPS (Punkt-zu-Punkt Schnittstelle) It can interface with the heating system over Boiler-System-Bus, Local Process Bus and PPS (Punkt-zu-Punkt Schnittstelle)
For more information of which system it supports, have a look at their [documentation](https://1coderookie.github.io/BSB-LPB-LAN_EN/). For more information of which system it supports, take a look at their [documentation](https://docs.bsb-lan.de).
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
{% include integrations/config_flow.md %},
For authentication HTTP authentication using a username and password, For authentication HTTP authentication using a username and password,
or using a passkey is supported. Use either one. or using a passkey is supported. Use either one.
For more documentation of the BSBLan device, check the [manual](https://1coderookie.github.io/BSB-LPB-LAN_EN/). For more documentation of the BSBLan device, check the [manual](https://docs.bsb-lan.de).
To see a more detailed listing of the reported systems which are successfully used with BSB-LAN please follow the corresponding link: To see a more detailed listing of the reported systems which are successfully used with BSB-LAN, please follow the corresponding link:
- [`Brötje`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#311-broetje) [Supported heating systems](https://docs.bsb-lan.de/supported_heating_systems.html)
- [`Elco`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#312-elco)
- [`Other Manufacturers (e.g. Fujitsu, Atlantic, Weishaupt)`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#313-other-manufacturers)
The integration is tested with the stable firmware version `1.00`. A newer firmware versions will not work, because the parameters are changed of the specific info that is needed. The integration is tested with the stable firmware version `3.1.6-20230327101530`. A newer firmware version may not work because the API could have changed.
Please use the latest release. [release 1.0](https://github.com/fredlcore/BSB-LAN/releases/tag/v1.0) Please use this release. [release 3.1](https://github.com/fredlcore/BSB-LAN/releases/tag/v3.1)

View File

@ -8,6 +8,7 @@ ha_release: 2022.9
ha_iot_class: Local Push ha_iot_class: Local Push
ha_codeowners: ha_codeowners:
- '@Ernst79' - '@Ernst79'
- '@thecode'
ha_domain: bthome ha_domain: bthome
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:

View File

@ -45,10 +45,10 @@ Because the {% term state %} of a button entity in Home Assistant is a timestamp
means we can use it in our automations. For example: means we can use it in our automations. For example:
```yaml ```yaml
trigger: triggers:
- platform: state - trigger: state
entity_id: button.my_button entity_id: button.my_button
action: actions:
- action: notify.frenck - action: notify.frenck
data: data:
message: "My button has been pressed!" message: "My button has been pressed!"

View File

@ -63,8 +63,8 @@ An example of a calendar {% term trigger %} in YAML:
```yaml ```yaml
automation: automation:
- trigger: - triggers:
- platform: calendar - trigger: calendar
# Possible values: start, end # Possible values: start, end
event: start event: start
# The calendar entity_id # The calendar entity_id
@ -98,12 +98,12 @@ This example automation consists of:
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
- alias: Calendar notification - alias: "Calendar notification"
trigger: triggers:
- platform: calendar - trigger: calendar
event: start event: start
entity_id: calendar.personal entity_id: calendar.personal
action: actions:
- action: persistent_notification.create - action: persistent_notification.create
data: data:
message: >- message: >-
@ -125,26 +125,28 @@ This example consists of:
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
- alias: Front Light Schedule - alias: "Front Light Schedule"
trigger: triggers:
- platform: calendar - trigger: calendar
event: start event: start
entity_id: calendar.device_automation entity_id: calendar.device_automation
- platform: calendar - trigger: calendar
event: end event: end
entity_id: calendar.device_automation entity_id: calendar.device_automation
condition: conditions:
- condition: template - condition: template
value_template: "{{ 'Front Lights' in trigger.calendar_event.summary }}" value_template: "{{ 'Front Lights' in trigger.calendar_event.summary }}"
action: actions:
- if: - if:
- "{{ trigger.event == 'start' }}" - "{{ trigger.event == 'start' }}"
then: then:
- action: light.turn_on - action: light.turn_on
entity_id: light.front target:
entity_id: light.front
else: else:
- action: light.turn_off - action: light.turn_off
entity_id: light.front target:
entity_id: light.front
``` ```
{% endraw %} {% endraw %}

View File

@ -0,0 +1,66 @@
---
title: Cambridge Audio
description: Instructions on how to integrate Cambridge Audio Receivers into Home Assistant.
ha_category:
- Media player
ha_release: '2024.10'
ha_iot_class: Local Push
ha_domain: cambridge_audio
ha_platforms:
- diagnostics
- media_player
ha_codeowners:
- '@noahhusby'
ha_config_flow: true
ha_integration_type: device
ha_zeroconf: true
---
The **Cambridge Audio** {% term integration %} allows you to control all receivers and streamers that support the StreamMagic app.
The integration automatically discovers all enabled zones and sources. Each zone is added as a media player device with the enabled sources available as inputs. Media information and controls (such as play, pause, skip) are supported if the selected source reports it.
## Supported devices
This integration allows you to connect the following devices:
- Cambridge Audio Evo 75
- Cambridge Audio Evo 150
- Cambridge Audio CXN
- Cambridge Audio CXN (v2)
- Cambridge Audio CXR120
- Cambridge Audio CXR200
- Cambridge Audio 851N
- Cambridge Audio Edge NQ
Older, RS-232 serial-based amplifiers like the [CXA series](https://www.cambridgeaudio.com/usa/en/products/hi-fi/cx-series-2/cxa81)
use a different protocol and are not currently supported.
{% include integrations/config_flow.md %}
{% configuration_basic %}
Host:
description: The IP address of your device can be found by navigating to the device on the [StreamMagic app](https://www.cambridgeaudio.com/usa/en/products/streammagic) and selecting `Settings``IP address`.
required: true
type: string
{% endconfiguration_basic %}
## Troubleshooting
### The buttons to skip, shuffle, and repeat the track are missing
Control functionality depends on the source / service that is currently selected.
The interface automatically sets which controls are available depending on which source is selected.
### The ability to change volume is missing
Volume control is only supported on all-in-one amps, or streamers with pre-amp mode.
Likely, the device is not configured to be in pre-amp mode.
This can be changed by navigating to the IP address of the device in a web browser,
or selecting settings in the StreamMagic app and setting **Pre-Amp** to **On**.
### Turning on the device doesn't work from Home Assistant
Cambridge Audio devices come with ECO mode enabled by default, which disables the network interface when
the device is powered down. This can be changed by navigating to the IP address of the device in a web browser,
or selecting settings in the StreamMagic app and setting **Standby Mode** to **Network standby**.

View File

@ -74,12 +74,12 @@ Play a live stream from a camera to selected media player(s). Requires [`stream`
For example, the following action in an automation would send an `hls` live stream to your chromecast. For example, the following action in an automation would send an `hls` live stream to your chromecast.
```yaml ```yaml
action: actions:
action: camera.play_stream - action: camera.play_stream
target: target:
entity_id: camera.yourcamera entity_id: camera.yourcamera
data: data:
media_player: media_player.chromecast media_player: media_player.chromecast
``` ```
### Action `record` ### Action `record`
@ -102,12 +102,12 @@ For example, the following action in an automation would take a recording from "
{% raw %} {% raw %}
```yaml ```yaml
action: actions:
action: camera.record - action: camera.record
target: target:
entity_id: camera.yourcamera entity_id: camera.yourcamera
data: data:
filename: '/tmp/{{ entity_id.name }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4' filename: '/tmp/{{ entity_id.name }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4'
``` ```
{% endraw %} {% endraw %}
@ -128,12 +128,12 @@ For example, the following action in an automation would take a snapshot from "y
{% raw %} {% raw %}
```yaml ```yaml
action: actions:
action: camera.snapshot - action: camera.snapshot
target: target:
entity_id: camera.yourcamera entity_id: camera.yourcamera
data: data:
filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
``` ```
{% endraw %} {% endraw %}

View File

@ -39,11 +39,11 @@ Home Assistant has its own Cast application to show the Home Assistant UI on any
cast_downstairs_on_kitchen: cast_downstairs_on_kitchen:
alias: "Show Downstairs on kitchen" alias: "Show Downstairs on kitchen"
sequence: sequence:
- data: - action: cast.show_lovelace_view
data:
dashboard_path: lovelace-cast dashboard_path: lovelace-cast
entity_id: media_player.kitchen entity_id: media_player.kitchen
view_path: downstairs view_path: downstairs
action: cast.show_lovelace_view
``` ```
{% important %} {% important %}
@ -242,7 +242,8 @@ Optional:
'cast_bubbleupnp_to_my_chromecast': 'cast_bubbleupnp_to_my_chromecast':
alias: "Cast a video to My Chromecast using BubbleUPNP" alias: "Cast a video to My Chromecast using BubbleUPNP"
sequence: sequence:
- target: - action: media_player.play_media
target:
entity_id: media_player.my_chromecast entity_id: media_player.my_chromecast
data: data:
media_content_type: cast media_content_type: cast
@ -252,7 +253,6 @@ Optional:
"media_id": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", "media_id": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
"media_type": "video/mp4" "media_type": "video/mp4"
}' }'
action: media_player.play_media
``` ```
### [NRK Radio](https://radio.nrk.no) ### [NRK Radio](https://radio.nrk.no)
@ -277,7 +277,8 @@ Example values to cast the item at <https://radio.nrk.no/podkast/tazte_priv/l_84
'cast_nrkradio_to_chromecast': 'cast_nrkradio_to_chromecast':
alias: "Cast NRK Radio to Chromecast" alias: "Cast NRK Radio to Chromecast"
sequence: sequence:
- target: - action: media_player.play_media
target:
entity_id: media_player.chromecast entity_id: media_player.chromecast
data: data:
media_content_type: cast media_content_type: cast
@ -286,7 +287,6 @@ Example values to cast the item at <https://radio.nrk.no/podkast/tazte_priv/l_84
"app_name": "nrkradio", "app_name": "nrkradio",
"media_id": "l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314" "media_id": "l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314"
}' }'
action: media_player.play_media
``` ```
### [NRK TV](https://tv.nrk.no) ### [NRK TV](https://tv.nrk.no)
@ -309,7 +309,8 @@ Example values to cast the item at <https://tv.nrk.no/serie/uti-vaar-hage/sesong
'cast_nrktv_to_chromecast': 'cast_nrktv_to_chromecast':
alias: "Cast NRK TV to Chromecast" alias: "Cast NRK TV to Chromecast"
sequence: sequence:
- target: - action: media_player.play_media
target:
entity_id: media_player.chromecast entity_id: media_player.chromecast
data: data:
media_content_type: cast media_content_type: cast
@ -318,7 +319,6 @@ Example values to cast the item at <https://tv.nrk.no/serie/uti-vaar-hage/sesong
"app_name": "nrktv", "app_name": "nrktv",
"media_id": "OUHA43000207" "media_id": "OUHA43000207"
}' }'
action: media_player.play_media
``` ```
### Plex ### Plex
@ -367,7 +367,8 @@ Example values to cast the item at <https://www.supla.fi/audio/3601824>
'cast_supla_to_my_chromecast': 'cast_supla_to_my_chromecast':
alias: "Cast supla to My Chromecast" alias: "Cast supla to My Chromecast"
sequence: sequence:
- target: - action: media_player.play_media
target:
entity_id: media_player.my_chromecast entity_id: media_player.my_chromecast
data: data:
media_content_type: cast media_content_type: cast
@ -376,7 +377,6 @@ Example values to cast the item at <https://www.supla.fi/audio/3601824>
"app_name": "supla", "app_name": "supla",
"media_id": "3601824" "media_id": "3601824"
}' }'
action: media_player.play_media
``` ```
### YouTube ### YouTube
@ -399,7 +399,8 @@ Optional:
'cast_youtube_to_my_chromecast': 'cast_youtube_to_my_chromecast':
alias: "Cast YouTube to My Chromecast" alias: "Cast YouTube to My Chromecast"
sequence: sequence:
- target: - action: media_player.play_media
target:
entity_id: media_player.my_chromecast entity_id: media_player.my_chromecast
data: data:
media_content_type: cast media_content_type: cast
@ -408,7 +409,6 @@ Optional:
"app_name": "youtube", "app_name": "youtube",
"media_id": "dQw4w9WgXcQ" "media_id": "dQw4w9WgXcQ"
}' }'
action: media_player.play_media
``` ```
## Troubleshooting automatic discovery ## Troubleshooting automatic discovery

View File

@ -65,59 +65,59 @@ Here are the automations for the above screenshot:
# Rich Text Example 1. # Rich Text Example 1.
# Show a one line message with a red banner # Show a one line message with a red banner
- alias: "Notify On Build Failing" - alias: "Notify On Build Failing"
trigger: triggers:
- platform: webhook - trigger: webhook
webhook_id: build_failed webhook_id: build_failed
action: actions:
action: notify.cisco_webex_teams_notify - action: notify.cisco_webex_teams_notify
data: data:
message: "<blockquote class=danger>Build 0.89.5 compile failed." message: "<blockquote class=danger>Build 0.89.5 compile failed."
# Rich Text Example 2. # Rich Text Example 2.
# Show a title and multi-line message with a yellow banner, # Show a title and multi-line message with a yellow banner,
# with lists, a person mention and a link # with lists, a person mention and a link
- alias: "Notify On Build Unstable" - alias: "Notify On Build Unstable"
trigger: triggers:
- platform: webhook - trigger: webhook
webhook_id: build_unstable webhook_id: build_unstable
action: actions:
action: notify.cisco_webex_teams_notify - action: notify.cisco_webex_teams_notify
data: data:
title: "<strong>Build 0.89.6 is unstable.</strong>" title: "<strong>Build 0.89.6 is unstable.</strong>"
message: "<blockquote class=warning>Version 0.89.6 failed verifications. message: "<blockquote class=warning>Version 0.89.6 failed verifications.
<ul> <ul>
<li> test_osx <li> test_osx
<li> test_win_lint <li> test_win_lint
<li>... and 4 more. <li>... and 4 more.
</ul> </ul>
<p><@personEmail:sparkbotjeeves@sparkbot.io></p> <p><@personEmail:sparkbotjeeves@sparkbot.io></p>
<p><small><i>View <a href='https://demo/testReport/'>Test Report</a></i></small><br></p> <p><small><i>View <a href='https://demo/testReport/'>Test Report</a></i></small><br></p>
" "
# Rich Text Example 3. # Rich Text Example 3.
# Show a title and multi-line message with a blue banner, # Show a title and multi-line message with a blue banner,
# with lists, a person mention and a link # with lists, a person mention and a link
- alias: "Notify On Build Passing" - alias: "Notify On Build Passing"
trigger: triggers:
- platform: webhook - trigger: webhook
webhook_id: build_passed webhook_id: build_passed
action: actions:
action: notify.cisco_webex_teams_notify - action: notify.cisco_webex_teams_notify
data: data:
title: "<strong>✅ Version 0.89.7 passed all tests and deployed to production!</strong>" title: "<strong>✅ Version 0.89.7 passed all tests and deployed to production!</strong>"
message: "<blockquote class=info>Version 0.89.7 passed all verifications. message: "<blockquote class=info>Version 0.89.7 passed all verifications.
<ul> <ul>
<li> test_cov <li> test_cov
<li> test_osx <li> test_osx
<li> test_win <li> test_win
<li> test_linux <li> test_linux
<li>... and 45 more. <li>... and 45 more.
</ul> </ul>
" "
``` ```
The following is a list of the allowed html tags and attributes: The following is a list of the allowed html tags and attributes:

View File

@ -61,10 +61,10 @@ ClickSend is a notify platform and thus can be controlled by calling the notify
```yaml ```yaml
alias: "The sun has set" alias: "The sun has set"
trigger: triggers:
- platform: sun - trigger: sun
event: sunset event: sunset
action: actions:
- action: notify.clicksend_tts - action: notify.clicksend_tts
data: data:
message: "The sun has set" message: "The sun has set"

View File

@ -52,10 +52,10 @@ Turn auxiliary heater on/off for climate device
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_aux_heat - action: climate.set_aux_heat
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -78,10 +78,10 @@ reflecting a situation where the climate device is set to save energy. For examp
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_preset_mode - action: climate.set_preset_mode
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -106,10 +106,10 @@ Set target temperature of climate device
```yaml ```yaml
### Set temperature to 24 in heat mode ### Set temperature to 24 in heat mode
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_temperature - action: climate.set_temperature
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -121,10 +121,10 @@ automation:
```yaml ```yaml
### Set temperature range to 20 to 24 in heat_cool mode ### Set temperature range to 20 to 24 in heat_cool mode
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_temperature - action: climate.set_temperature
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -147,10 +147,10 @@ Set target humidity of climate device
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_humidity - action: climate.set_humidity
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -171,10 +171,10 @@ Set fan operation for climate device
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_fan_mode - action: climate.set_fan_mode
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -195,10 +195,10 @@ Set climate device's HVAC mode
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_hvac_mode - action: climate.set_hvac_mode
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen
@ -219,10 +219,10 @@ Set swing operation mode for climate device
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: climate.set_swing_mode - action: climate.set_swing_mode
target: target:
entity_id: climate.kitchen entity_id: climate.kitchen

View File

@ -54,11 +54,11 @@ Example usage in an {% term automation %}, taking the album art present on a Chr
#automation.yaml #automation.yaml
- alias: "Chromecast to Shelf Lights" - alias: "Chromecast to Shelf Lights"
trigger: triggers:
- platform: state - trigger: state
entity_id: media_player.chromecast entity_id: media_player.chromecast
action: actions:
- action: color_extractor.turn_on - action: color_extractor.turn_on
data_template: data_template:
color_extract_url: "{{ states.media_player.chromecast.attributes.entity_picture }}" color_extract_url: "{{ states.media_player.chromecast.attributes.entity_picture }}"
@ -71,11 +71,11 @@ With a nicer transition period of 5 seconds and setting brightness to 100% each
#automation.yaml #automation.yaml
- alias: "Nicer Chromecast to Shelf Lights" - alias: "Nicer Chromecast to Shelf Lights"
trigger: triggers:
- platform: state - trigger: state
entity_id: media_player.chromecast entity_id: media_player.chromecast
action: actions:
- action: color_extractor.turn_on - action: color_extractor.turn_on
data_template: data_template:
color_extract_url: "{{ states.media_player.chromecast.attributes.entity_picture }}" color_extract_url: "{{ states.media_player.chromecast.attributes.entity_picture }}"

View File

@ -17,6 +17,7 @@ ha_codeowners:
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_platforms: ha_platforms:
- alarm_control_panel - alarm_control_panel
- binary_sensor
- climate - climate
- cover - cover
- humidifier - humidifier
@ -38,4 +39,4 @@ There is support for the following platform types within Home Assistant:
## Alarm control panel ## Alarm control panel
The integration will create an alarm entity for each area and a sensor for each zone. The integration will create an alarm entity for each area. Additionally, it will create a sensor and a presence detection binary sensor for each zone, enhancing monitoring capabilities.

View File

@ -147,17 +147,16 @@ system_log:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
automation: automation:
- id: 'errorcounterautomation' - alias: "Error Counting Automation"
alias: "Error Counting Automation" triggers:
trigger: - trigger: event
platform: event event_type: system_log_event
event_type: system_log_event event_data:
event_data: level: ERROR
level: ERROR actions:
action: - action: counter.increment
action: counter.increment target:
target: entity_id: counter.error_counter
entity_id: counter.error_counter
counter: counter:
error_counter: error_counter:

View File

@ -75,10 +75,10 @@ Available actions: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`,
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: cover.open_cover - action: cover.open_cover
target: target:
entity_id: cover.demo entity_id: cover.demo
@ -97,10 +97,10 @@ Set cover position of one or multiple covers.
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: cover.set_cover_position - action: cover.set_cover_position
target: target:
entity_id: cover.demo entity_id: cover.demo
@ -121,10 +121,10 @@ Set cover tilt position of one or multiple covers.
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: cover.set_cover_tilt_position - action: cover.set_cover_tilt_position
target: target:
entity_id: cover.demo entity_id: cover.demo

View File

@ -291,11 +291,11 @@ script:
automation: automation:
- alias: "Close covers at night" - alias: "Close covers at night"
trigger: triggers:
- platform: sun - trigger: sun
event: sunset event: sunset
offset: "+00:30:00" offset: "+00:30:00"
action: actions:
- action: cover.set_cover_position - action: cover.set_cover_position
target: target:
entity_id: cover.cover_group entity_id: cover.cover_group

View File

@ -0,0 +1,36 @@
---
title: Deako Smart Lighting
description: Instructions on how to integrate Deako Smart Lighting into Home Assistant.
ha_category:
- Switch
ha_iot_class: Local Polling
ha_release: "2024.10"
ha_domain: deako
ha_config_flow: true
ha_platforms:
- light
ha_codeowners:
- '@sebirdman'
- '@balake'
- '@deakolights'
ha_zeroconf: true
ha_integration_type: integration
---
The **Deako Smart Lighting** integration allows you to control your [Deako](https://deako.com) devices from Home Assistant.
## Prerequisites
For this integration to work, your devices must be listed **online**, viewable in the Deako app. Once devices have been onboarded and are online, the Deako app is no longer needed. Devices will continue to work without the app.
{% include integrations/config_flow.md %}
## Supported devices
- all smart Deako devices
Features not currently supported:
- Deako groups
- Deako scenes

View File

@ -194,26 +194,26 @@ If you have a Zigbee remote that is not yet supported you can request support fo
automation: automation:
- alias: "'Toggle lamp from dimmer'" - alias: "'Toggle lamp from dimmer'"
initial_state: "on" initial_state: "on"
trigger: triggers:
- platform: event - trigger: event
event_type: deconz_event event_type: deconz_event
event_data: event_data:
id: remote_control_1 id: remote_control_1
event: 1002 event: 1002
action: actions:
- action: light.toggle - action: light.toggle
target: target:
entity_id: light.lamp entity_id: light.lamp
- alias: "Increase brightness of lamp from dimmer" - alias: "Increase brightness of lamp from dimmer"
initial_state: "on" initial_state: "on"
trigger: triggers:
- platform: event - trigger: event
event_type: deconz_event event_type: deconz_event
event_data: event_data:
id: remote_control_1 id: remote_control_1
event: 2002 event: 2002
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.lamp entity_id: light.lamp
@ -224,13 +224,13 @@ automation:
- alias: "Decrease brightness of lamp from dimmer" - alias: "Decrease brightness of lamp from dimmer"
initial_state: "on" initial_state: "on"
trigger: triggers:
- platform: event - trigger: event
event_type: deconz_event event_type: deconz_event
event_data: event_data:
id: remote_control_1 id: remote_control_1
event: 3002 event: 3002
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.lamp entity_id: light.lamp
@ -241,13 +241,13 @@ automation:
- alias: 'Turn lamp on when turning cube clockwise' - alias: 'Turn lamp on when turning cube clockwise'
initial_state: "on" initial_state: "on"
trigger: triggers:
- platform: event - trigger: event
event_type: deconz_event event_type: deconz_event
event_data: event_data:
id: remote_control_1 id: remote_control_1
gesture: 7 gesture: 7
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.lamp entity_id: light.lamp
@ -262,13 +262,13 @@ automation:
```yaml ```yaml
automation: automation:
- alias: "React to color wheel changes" - alias: "React to color wheel changes"
trigger: triggers:
- platform: event - trigger: event
event_type: deconz_event event_type: deconz_event
event_data: event_data:
id: tint_remote_1 id: tint_remote_1
event: 6002 event: 6002
action: actions:
- action: light.turn_on - action: light.turn_on
data: data:
xy_color: xy_color:
@ -287,12 +287,11 @@ Note: Requires `on: true` to change color while the Philips Hue bulb is off. If
```yaml ```yaml
automation: automation:
- alias: "Flash Hue Bulb with Doorbell Motion" - alias: "Flash Hue Bulb with Doorbell Motion"
mode: single triggers:
trigger: - trigger: state
- platform: state
entity_id: binary_sensor.doorbell_motion entity_id: binary_sensor.doorbell_motion
to: "on" to: "on"
action: actions:
- action: deconz.configure - action: deconz.configure
data: data:
entity: light.hue_lamp entity: light.hue_lamp

View File

@ -21,7 +21,7 @@ ha_integration_type: helper
The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that estimates the derivative of the The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that estimates the derivative of the
values provided by another sensor (the **source sensor**). Derivative sensors are updated upon changes of the **source sensor**. values provided by another sensor (the **source sensor**). Derivative sensors are updated upon changes of the **source sensor**.
For sensors that reset to zero after a power interruption and need a "non-negative derivative", such as bandwidth counters in routers, or rain gauges, consider using the [Utility Meter](/integrations/utility_meter/) integration instead. Otherwise, each reset will register a significant change in the derivative sensor. For sensors that reset to zero after a power interruption and need a "non-negative derivative", such as bandwidth counters in routers, or rain gauges, you can now use this integration directly. Ensure that the input sensor has a `total_increasing` state class, as this is necessary for the integration to handle resets correctly without registering significant changes in the derivative sensor.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
{% configuration_basic %} {% configuration_basic %}

View File

@ -20,14 +20,13 @@ Device automations are meant to be configured via the UI.
Example: Example:
```yaml ```yaml
- id: "123456789" - alias: "Light turns off"
alias: "Light turns off" triggers:
trigger: - trigger: device
- platform: device
device_id: 7a92d5ee74014a0b86903fc669b0bcd6 device_id: 7a92d5ee74014a0b86903fc669b0bcd6
domain: light domain: light
type: turn_off type: turn_off
entity_id: light.bowl entity_id: light.bowl
action: actions:
- action: camera.turn_off - action: camera.turn_off
``` ```

View File

@ -77,6 +77,9 @@ Currently the following device types within Home Assistant are supported.
- PLC PHY rates - PLC PHY rates
- Updates every 5 minutes - Updates every 5 minutes
- PHY rates to/from the device attached to the router are enabled by default. PHY rates between all other devices are disabled by default. - PHY rates to/from the device attached to the router are enabled by default. PHY rates between all other devices are disabled by default.
- Last restart of the device
- Updates every 15 seconds
- Is disabled by default because it's of lower interest to most users.
### Switch ### Switch

View File

@ -44,18 +44,18 @@ If you have a sensor session running, and once you have enabled the Dexcom integ
## Example automation ## Example automation
```yaml ```yaml
- id: '1234567890123' - alias: "Overnight low kitchen lights"
alias: "overnight_low_kitchen_lights" description: "Turn on the lights in the kitchen if my blood sugar drops low overnight"
description: Turn on the lights in the kitchen if my blood sugar drops low overnight triggers:
trigger: - trigger: numeric_state
- below: '65' entity_id: sensor.dexcom_YOUR_USERNAME_glucose_value
entity_id: sensor.dexcom_YOUR_USERNAME_glucose_value below: 65
platform: numeric_state conditions:
condition: time - condition: time
after: "22:00:00" after: "22:00:00"
before: "06:00:00" before: "06:00:00"
action: actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.kitchen entity_id: light.kitchen
``` ```

View File

@ -108,7 +108,7 @@ intent_script:
TurnLights: TurnLights:
speech: speech:
text: Turning {{ Room }} lights {{ OnOff }} text: Turning {{ Room }} lights {{ OnOff }}
action: actions:
- action: notify.pushbullet - action: notify.pushbullet
data: data:
message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }} message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }}

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -215,11 +215,11 @@ image_processing:
```yaml ```yaml
# Example advanced automations.yaml entry # Example advanced automations.yaml entry
- alias: "Doods scanning" - alias: "Doods scanning"
trigger: triggers:
- platform: state - trigger: state
entity_id: entity_id:
- binary_sensor.driveway - binary_sensor.driveway
action: actions:
- action: image_processing.scan - action: image_processing.scan
target: target:
entity_id: image_processing.doods_camera_driveway entity_id: image_processing.doods_camera_driveway

View File

@ -104,11 +104,11 @@ The example automation below shows how to turn on a light when somebody presses
```yaml ```yaml
- alias: "Doorbird Ring" - alias: "Doorbird Ring"
trigger: triggers:
platform: event - trigger: event
event_type: doorbird_driveway_gate_somebody_pressed_the_button event_type: doorbird_driveway_gate_somebody_pressed_the_button
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.side_entry_porch entity_id: light.side_entry_porch
``` ```

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@starkillerOG' - '@starkillerOG'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- button
- cover - cover
- sensor - sensor
ha_iot_class: Local Push ha_iot_class: Local Push

View File

@ -76,14 +76,14 @@ This is a notify platform and thus can be controlled by calling the notify actio
# Example automation notification entry # Example automation notification entry
automation: automation:
- alias: "The sun has set" - alias: "The sun has set"
trigger: triggers:
platform: sun - trigger: sun
event: sunset event: sunset
action: actions:
action: notify.dovado - action: notify.dovado
data: data:
message: "The sun has set" message: "The sun has set"
target: "+14151234567" target: "+14151234567"
``` ```
## Sensor ## Sensor

View File

@ -51,12 +51,12 @@ Along with the event the following payload parameters are available:
```yaml ```yaml
- alias: "Download Failed Notification" - alias: "Download Failed Notification"
trigger: triggers:
platform: event - trigger: event
event_type: downloader_download_failed event_type: downloader_download_failed
action: actions:
action: persistent_notification.create - action: persistent_notification.create
data: data:
message: "{{trigger.event.data.filename}} download failed" message: "{{trigger.event.data.filename}} download failed"
title: "Download Failed" title: "Download Failed"
``` ```

View File

@ -9,7 +9,6 @@ ha_config_flow: true
ha_domain: dsmr ha_domain: dsmr
ha_codeowners: ha_codeowners:
- '@Robbie1221' - '@Robbie1221'
- '@frenck'
ha_platforms: ha_platforms:
- diagnostics - diagnostics
- sensor - sensor

View File

@ -0,0 +1,39 @@
---
title: Duke Energy
description: Instructions on how to integrate Duke Energy within Home Assistant.
ha_category:
- Energy
ha_release: '2024.10'
ha_iot_class: Cloud Polling
ha_codeowners:
- '@hunterjm'
ha_domain: duke_energy
ha_config_flow: true
ha_integration_type: integration
---
The **Duke Energy** {% term integration %} allows you to get energy information from [Duke Energy](https://www.duke-energy.com/).
## Supported devices
Currently, this integration only supports electric meters.
## Prerequisites
You need a Duke Energy account to use this integration. During installation of the integration, you will need the username and password to access your account.
{% include integrations/config_flow.md %}
## Energy
Because Duke Energy only releases usage data with around a 48-hour delay, the integration inserts data into statistic objects.
You can find the statistics in {% my developer_statistics title="**Developer Tools** > **Statistics**"%} and search for "duke_energy".
**This delay means that there will be no data in the energy dashboard for today and likely yesterday** (depending on time of day you are checking).
At the initial setup, the integration pulls historical hourly usage since the account activation. Duke Energy typically only keeps this data for the past 3 years.
After the initial setup, the integration keeps pulling data (twice per day) for the past 30 days to allow for any corrections in the data.
In the configuration of the energy dashboard ({% my config_energy title="**Settings** > **Dashboards** > **Energy**" %}):
1. Select **Add consumption** for the **Electricity grid**.
2. Select **Duke Energy Electric {meter serial number} Consumption** for the **consumed energy**.

View File

@ -167,10 +167,10 @@ You can use the response data in a template sensor that is updated every hour:
```yaml ```yaml
template: template:
- trigger: - triggers:
- platform: time_pattern - trigger: time_pattern
seconds: "*" seconds: "*"
action: actions:
- action: easyenergy.get_energy_usage_prices - action: easyenergy.get_energy_usage_prices
response_variable: response response_variable: response
data: data:

View File

@ -5,6 +5,7 @@ ha_category:
- Binary sensor - Binary sensor
- Climate - Climate
- Sensor - Sensor
- Switch
- Water heater - Water heater
ha_release: 0.61 ha_release: 0.61
ha_iot_class: Cloud Push ha_iot_class: Cloud Push
@ -16,6 +17,7 @@ ha_platforms:
- binary_sensor - binary_sensor
- climate - climate
- sensor - sensor
- switch
- water_heater - water_heater
ha_integration_type: integration ha_integration_type: integration
--- ---
@ -31,6 +33,7 @@ EcoNet devices may be represented by one or more platforms.
- [Binary sensor](#binary-sensor) - [Binary sensor](#binary-sensor)
- [Climate](#climate) - [Climate](#climate)
- [Sensor](#sensor) - [Sensor](#sensor)
- [Switch](#switch)
- [Water heater](#water-heater) - [Water heater](#water-heater)
### Binary sensor ### Binary sensor
@ -45,6 +48,10 @@ The EcoNet Climate platform lets you control your EcoNet thermostat. Multi-zone
The EcoNet Sensor platform lets you view sensors associated with your EcoNet thermostat or water heater. For example, alert count or available hot water. The EcoNet Sensor platform lets you view sensors associated with your EcoNet thermostat or water heater. For example, alert count or available hot water.
### Switch
The EcoNet Switch platform let's you control the EcoNet thermostat emergency heat.
### Water heater ### Water heater
The EcoNet water heater platform lets you control your EcoNet water heater. Water heaters do not report the current water temperature. The EcoNet water heater platform lets you control your EcoNet water heater. Water heaters do not report the current water temperature.

View File

@ -1,15 +1,17 @@
--- ---
title: ElevenLabs text-to-speech title: ElevenLabs
description: Instructions on how to setup ElevenLabs text-to-speech with Home Assistant. description: Instructions on how to setup ElevenLabs text-to-speech with Home Assistant.
ha_category: ha_category:
- Text-to-speech - Text-to-speech
ha_release: 2024.8 ha_release: 2024.8
ha_iot_class: Cloud Push ha_iot_class: Cloud Polling
ha_domain: elevenlabs ha_domain: elevenlabs
ha_platforms: ha_platforms:
- tts - tts
ha_config_flow: true ha_config_flow: true
ha_integration_type: integration ha_integration_type: service
ha_codeowners:
- '@sorgfresser'
--- ---
The **ElevenLabs** text-to-speech {% term integrations %} adds support for [ElevenLabs](https://elevenlabs.io/) as text-to-speech to read a text with natural sounding voices. The **ElevenLabs** text-to-speech {% term integrations %} adds support for [ElevenLabs](https://elevenlabs.io/) as text-to-speech to read a text with natural sounding voices.

View File

@ -81,12 +81,12 @@ Example automation, in YAML format, that triggers a visual notification when
a binary sensor (a doorbell) is triggered: a binary sensor (a doorbell) is triggered:
```yaml ```yaml
- alias: Visual doorbell notification example - alias: "Visual doorbell notification example"
trigger: triggers:
- platform: state - trigger: state
entity_id: binary_sensor.doorbell entity_id: binary_sensor.doorbell
to: "on" to: "on"
action: actions:
- action: elgato.identify - action: elgato.identify
target: target:
entity_id: light.elgato_key_light entity_id: light.elgato_key_light

View File

@ -15,181 +15,26 @@ ha_integration_type: integration
related: related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: Configuration file title: Configuration file
ha_config_flow: true
--- ---
The `emoncms` sensor {% term integration %} creates sensors for the feeds available in your local or cloud based version of [Emoncms](https://emoncms.org). The `emoncms` sensor {% term integration %} creates sensors for the feeds available in your local or cloud based version of [Emoncms](https://emoncms.org).
To enable this {% term integration %}, add the following lines to your {% term "`configuration.yaml`" %} file. It will list all feeds as a sensor.
{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry using cloud based Emoncms
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 1
```
As of Feb 2020, the integration will discover all sensors from Emoncms and will use the unit of measurement specified in the Feed from Emoncms, in preference to the one set in the configuration. Tested with [Emoncms](https://github.com/emoncms/emoncms) V10.1.13 - `unit` was added to the API around version V9.9.1.
To write information from Home Assistant to Emoncms, you can use the [`emoncms_history`](/integrations/emoncms_history) {% term integration %}. To write information from Home Assistant to Emoncms, you can use the [`emoncms_history`](/integrations/emoncms_history) {% term integration %}.
## Configuration variables ## Prerequisites
{% configuration %} To use this service, you need an Emoncms account and an API key. You can find the API key in your local or cloud-based Emoncms account settings.
api_key:
description: The read API key for your Emoncms user.
required: true
type: string
url:
description: "The base URL of Emoncms, use <https://emoncms.org> for the cloud-based version. For self-hosted Emoncms or EmonPi you may need to use a URL of `http://x.x.x.x/emoncms`."
required: true
type: string
id:
description: Positive integer identifier for the sensor. Must be unique if you specify multiple Emoncms sensors.
required: true
type: integer
include_only_feed_id:
description: Positive integer list of Emoncms feed IDs. Only the feeds with feed IDs specified here will be displayed. Can not be specified if `exclude_feed_id` is specified.
required: false
type: list
exclude_feed_id:
description: Positive integer list of Emoncms feed IDs. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if `include_only_feed_id` is specified.
required: false
type: list
sensor_names:
description: "Dictionary of names for the sensors created that are created based on feed ID. The dictionary consists of `feedid: name` pairs. Sensors for feeds with their feed ID mentioned here will get the chosen name instead of the default name."
required: false
type: [integer, list]
value_template:
description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to alter the feed value.
required: false
type: template
scan_interval:
description: Defines the update interval of the sensor in seconds.
required: false
type: integer
unit_of_measurement:
description: Defines the unit of measurement to be used for any sensor where the unit is *not* set in Emoncms. If no unit is set in Emoncms or in the configuration, the default (W) will be used.
required: false
default: W
type: string
{% endconfiguration %}
## Default naming scheme {% include integrations/config_flow.md %}
The names of the sensors created by this integration will use the feed names defined in Emoncms if available, ## Sensors
or the feed ID otherwise, and will be prefixed with "Emoncms", e.g., "Emoncms Total Power" or "Emoncms Feed 5".
If the `id` property is anything but `1`, the ID will be shown as well, e.g., "Emoncms 2 Feed 5".
If `sensor_names` is used, any feeds with defined names will get those names exactly, with no prefix. - **energy** in Wh, kWh
- **power** in W
### Examples - **voltage** in V
- **current** in A
In this section you find some more examples of how this sensor can be used. - **apparent power** in VA
- **temperature** in °C, °F or K
Minimal configuration. All feeds are added as sensors with the unit of measurement being set by the Emoncms Feed or the default unit. - **frequency** in Hz
- **pressure** in hPa
```yaml
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 1
```
Display only feeds with their feed IDs specified in `include_only_feed_id`.
```yaml
# Example configuration.yaml entry
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 1
unit_of_measurement: "W"
include_only_feed_id:
- 107
- 105
```
Display all feeds except feeds with their feed ID specified in `exclude_feed_id`.
```yaml
# Example configuration.yaml entry
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 1
unit_of_measurement: "kWh"
exclude_feed_id:
- 107
- 105
```
Display only feeds with their feed IDs specified in `include_only_feed_id` and give the feed sensors a name using `sensor_names`. You don't have to specify all feeds names in `sensor_names`, the remaining sensor names will be chosen based on `id` and the Emoncms `feedid`.
```yaml
# Example configuration.yaml entry
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 1
unit_of_measurement: "kW"
include_only_feed_id:
- 5
- 120
sensor_names:
5: "feed 1"
48: "kWh feed"
61: "amp feed"
110: "watt feed"
```
Use a `value_template` to add 1500 to the feed value for all specified feed IDs in `include_feed_id`.
{% raw %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
scan_interval: 15
id: 1
value_template: "{{ value | float + 1500 }}"
include_only_feed_id:
- 107
- 106
```
{% endraw %}
Display feeds from the same Emoncms instance with 2 groups of feeds, where one has a differing `scan_interval` and the other a differing `unit_of_measurement`.
```yaml
# Example configuration.yaml entry
sensor:
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
scan_interval: 30
id: 1
unit_of_measurement: "W"
include_only_feed_id:
- 107
- 106
- platform: emoncms
api_key: API_KEY
url: https://emoncms.org
id: 2
scan_interval: 60
unit_of_measurement: "A"
include_only_feed_id:
- 108
- 61
```

View File

@ -116,14 +116,14 @@ The following is an example implementation of an automation:
# Example automation # Example automation
- id: amp_volume_up - id: amp_volume_up
alias: "Increase amplifier volume" alias: "Increase amplifier volume"
trigger: triggers:
- platform: event - trigger: event
event_type: roku_command event_type: roku_command
event_data: event_data:
source_name: Home Assistant source_name: Home Assistant
type: keypress type: keypress
key: Fwd key: Fwd
action: actions:
- action: media_player.volume_up - action: media_player.volume_up
target: target:
entity_id: media_player.amplifier entity_id: media_player.amplifier

View File

@ -136,10 +136,10 @@ The response data can be added to a template sensor:
```yaml ```yaml
template: template:
- trigger: - triggers:
- platform: time_pattern - trigger: time_pattern
hours: "*" hours: "*"
action: actions:
- action: energyzero.get_energy_prices - action: energyzero.get_energy_prices
response_variable: prices response_variable: prices
data: data:

View File

@ -111,16 +111,16 @@ Sample automation to switch lights on and off:
# Example automation to turn lights on/off on button release # Example automation to turn lights on/off on button release
automation: automation:
- alias: "Hall light switches" - alias: "Hall light switches"
trigger: triggers:
platform: event - trigger: event
event_type: button_pressed event_type: button_pressed
event_data: event_data:
id: [0xYY, 0xYY, 0xYY, 0xYY] id: [0xYY, 0xYY, 0xYY, 0xYY]
pushed: 0 pushed: 0
action: actions:
action: "{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}" - action: "{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}"
target: target:
entity_id: "{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}" entity_id: "{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}"
``` ```
{% endraw %} {% endraw %}

View File

@ -53,10 +53,13 @@ For Envoy S Metered / IQ Gateway Metered with installed and configured current t
- Sensors for net production (grid export) and net consumption (grid import) if the consumption <abbr title="current transformers">CT</abbr> is a net-consumption <abbr title="current transformers">CT</abbr>. - Sensors for net production (grid export) and net consumption (grid import) if the consumption <abbr title="current transformers">CT</abbr> is a net-consumption <abbr title="current transformers">CT</abbr>.
- Disabled sensors for: - Disabled sensors for:
- `Balanced net power consumption` and `lifetime balanced net energy consumption` (grid import - grid export) if either a net-consumption or total-consumption CT is installed. The `balanced net power consumption` value is calculated by the Envoy if a total-consumption CT is used. When a net-consumption CT is installed, it is the same value as the `current net power consumption`, which is enabled by default if the CT is present.
- Production and consumption sensors for each phase, if <abbr title="current transformers">CT</abbr> are installed on more than 1 phase. - Production and consumption sensors for each phase, if <abbr title="current transformers">CT</abbr> are installed on more than 1 phase.
- Phase net production and net consumption, if <abbr title="current transformers">CT</abbr> are installed on more than 1 phase. - Phase net production and net consumption, if <abbr title="current transformers">CT</abbr> are installed on more than 1 phase.
- Frequency net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase). - Frequency for production and net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).
- Voltage net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1] - Voltage for production and net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1]
- Current for production and net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1]
- Powerfactor for production and net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1]
- Metering status for net consumption and production <abbr title="current transformers">CT</abbr> (`normal` | `not-metering` | `check-wiring`) (aggregate and phase). - Metering status for net consumption and production <abbr title="current transformers">CT</abbr> (`normal` | `not-metering` | `check-wiring`) (aggregate and phase).
- Count of meter status flags active for net consumption and production <abbr title="current transformers">CT</abbr> (aggregate and phase).[^2] - Count of meter status flags active for net consumption and production <abbr title="current transformers">CT</abbr> (aggregate and phase).[^2]
@ -68,22 +71,27 @@ For Envoy S Metered / IQ Gateway Metered with installed and configured current t
For Enphase Ensemble systems with the Enpower/IQ System Controller and Encharge/IQ Batteries installed, additional features are available: For Enphase Ensemble systems with the Enpower/IQ System Controller and Encharge/IQ Batteries installed, additional features are available:
- Sensors for battery status and usage - Sensors for battery status and usage
- Sensors for grid status (*) - Sensors for grid status *
- Sensors for the state of the Enpower's four load-shedding relays (*) - Sensors for the state of the Enpower's four load-shedding relays *
- A switch allowing you to take your system on-grid and off-grid. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid. (*) - A switch allowing you to take your system on-grid and off-grid. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid. *
- A switch allowing you to enable or disable charging the Encharge/IQ batteries from the power grid. (*) - A switch allowing you to enable or disable charging the Encharge/IQ batteries from the power grid. **
- Support for changing the battery storage mode between full backup, self-consumption, and savings mode and setting the reserve battery level for outages. - Support for changing the battery storage mode between full backup, self-consumption, and savings mode, and setting the reserve battery level for outages. **
- If a storage <abbr title="current transformers">CT</abbr> is installed: - If a storage <abbr title="current transformers">CT</abbr> is installed:
- Sensors for battery storage energy charged and discharged and current active power discharge/charge - Sensors for battery storage energy charged and discharged and current active power discharge/charge
- Disabled sensors for: - Disabled sensors for:
- Phase battery storage energy charged and discharged and current power discharge/charge - Phase battery storage energy charged and discharged and current power discharge/charge
- Voltage storage <abbr title="current transformers">CT</abbr> (aggregate and phase) - Voltage for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
- Current for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
- Frequency for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
- Powerfactor for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
- Metering status for storage <abbr title="current transformers">CT</abbr> (aggregate and phase) - Metering status for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
- Count of meter status flags active storage <abbr title="current transformers">CT</abbr> (aggregate and phase) - Count of meter status flags active storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
The load shedding and on/off-grid functions marked (*) are only available with the Enpower/IQ System Controller installed. In battery installations without off-grid functionality, used in many EU countries, these off-grid related sensors and switches are not available. *: The load shedding and on/off-grid functions are only available with the Enpower/IQ System Controller installed. In battery installations without load-shedding and off-grid functionality, used in many EU countries, these sensors and switches are not available.
In multiphase installations with batteries, in countries with phase-balancing grid meters, the battery will export to the grid on one phase the amount it lacks on another phase, as if it is using the grid as a 'transport' between phases. Since the grid meter will balance the amount in and exported on the two phases, the net result is zero. The Envoy multiphase consumption CTs, however, will report the amounts on both phases, resulting in too high export on one and too high import on the other. One needs to use the sum of grid import and export to eliminate this effect. **: When used with Enpower/IQ System Controller, the entities to charge from the grid, battery storage mode, and reserve battery level are connected to the Enpower device with the Enpower serial number in their entity and unique IDs. When no Enpower is installed, these are connected to the Envoy itself and the Envoy serial number is used in the IDs.
In multiphase installations with batteries, in countries with phase-balancing grid meters, the battery will export to the grid on one phase the amount it lacks on another phase which pulls the amount from the grid, as if it is using the grid as a 'transport' between phases. Since the grid meter will balance the amount imported and exported on the two phases, the net result is zero. The Envoy multiphase consumption CTs, however, will report the amounts on both phases, resulting in too high export on one and too high import on the other. One may consider using the `lifetime balanced net energy consumption` which is the sum of grid import and export to eliminate this effect. This would require some templating to split these values into import and export values. Alternatively, use the `current net power consumption` or `balanced net power consumption` with a Riemann integral sum helper.
## Envoy authentication requirements ## Envoy authentication requirements

View File

@ -20,7 +20,7 @@ When you want to add a device for the first time, turn it on before following th
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
### Supported features ## Supported features
- turn on/off - turn on/off
- set input - set input
@ -29,7 +29,7 @@ When you want to add a device for the first time, turn it on before following th
- mute/unmute audio - mute/unmute audio
- send next/previous track - send next/previous track
### Supported devices ## Supported devices
- Epson projectors supporting ESC/VP21 protocol. - Epson projectors supporting ESC/VP21 protocol.
@ -38,6 +38,29 @@ When you want to add a device for the first time, turn it on before following th
- Epson EH-TW5350 - Epson EH-TW5350
- Epson EH-TW7000 - Epson EH-TW7000
- Epson EH-TW9400W (shares platform with 7400/8400/9400(w)) - Epson EH-TW9400W (shares platform with 7400/8400/9400(w))
- Epson EH-TW3200
To make this module work you need to connect your projector to your LAN. ## Configuration
The best is to use iProjection app by Epson to test if it is working.
This integration supports connecting to an Epson projector via LAN or Serial.
### LAN connection
Connect the projector to your LAN and enter the IP address of the projector when prompted, selecting either HTTP or TCP depending on what the projector model supports.
The iProjection app by Epson can be used to test if it is working.
### Serial connection
Connect projector directly to Home Assistant via a serial cable, or ser2net can be used as a Serial to network proxy.
#### ser2net configuration
A ser2net configuration similar to below can be used to expose the projector connected to `/dev/ttyUSB0` on port `3629`.
```yaml
connection: &con1
accepter: tcp,3629
connector: serialdev,/dev/ttyUSB0,9600n81
```
Then the projector can be added to the integration using `socket://<ser2net_ip>:3629`.

View File

@ -45,10 +45,10 @@ In addition, the entity can have the following states:
Because the state of an event entity in Home Assistant is a timestamp, it means we can use it in our automations. For example: Because the state of an event entity in Home Assistant is a timestamp, it means we can use it in our automations. For example:
```yaml ```yaml
trigger: triggers:
- platform: state - trigger: state
entity_id: event.doorbell entity_id: event.doorbell
action: actions:
- action: notify.frenck - action: notify.frenck
data: data:
message: "Ding Dong! Someone is at the door!" message: "Ding Dong! Someone is at the door!"
@ -63,10 +63,10 @@ This allows you, for example, to trigger a different action when the button on a
When combining that with the [choose action](/docs/scripts/#choose-a-group-of-actions) script, you can assign multiple different actions to a single event entity. In the following example, short- or long-pressing the button on the remote will trigger a different scene: When combining that with the [choose action](/docs/scripts/#choose-a-group-of-actions) script, you can assign multiple different actions to a single event entity. In the following example, short- or long-pressing the button on the remote will trigger a different scene:
```yaml ```yaml
trigger: triggers:
- platform: state - trigger: state
entity_id: event.hue_remote_control entity_id: event.hue_remote_control
action: actions:
- alias: "Choose an action based on the type of event" - alias: "Choose an action based on the type of event"
choose: choose:
- conditions: - conditions:

View File

@ -129,7 +129,7 @@ This action call will set the operating `mode` of the system for a specified per
For **AutoWithEco**, the period of time is a `duration` is up to 24 hours. For **AutoWithEco**, the period of time is a `duration` is up to 24 hours.
```yaml ```yaml
- action: - actions:
- action: evohome.set_system_mode - action: evohome.set_system_mode
data: data:
mode: AutoWithEco mode: AutoWithEco
@ -139,7 +139,7 @@ For **AutoWithEco**, the period of time is a `duration` is up to 24 hours.
For the other modes, such as **Away**, the duration is a `period` of days, where 1 day will revert at midnight tonight, and 2 days reverts at midnight tomorrow. For the other modes, such as **Away**, the duration is a `period` of days, where 1 day will revert at midnight tonight, and 2 days reverts at midnight tomorrow.
```yaml ```yaml
- action: - actions:
- action: evohome.set_system_mode - action: evohome.set_system_mode
data: data:
mode: Away mode: Away
@ -161,7 +161,7 @@ This action will immediately pull the latest state data from the vendor's server
This action will set the `setpoint` of a zone, as identified by its `entity_id`, for a specified period of time (**TemporaryOverride**). However, if no period of time is provided (c.f. a duration of 0, below), then the change is permanent (**PermanentOverride**). This action will set the `setpoint` of a zone, as identified by its `entity_id`, for a specified period of time (**TemporaryOverride**). However, if no period of time is provided (c.f. a duration of 0, below), then the change is permanent (**PermanentOverride**).
```yaml ```yaml
- action: - actions:
- action: evohome.set_zone_override - action: evohome.set_zone_override
target: target:
entity_id: climate.loungeroom entity_id: climate.loungeroom
@ -172,7 +172,7 @@ This action will set the `setpoint` of a zone, as identified by its `entity_id`,
The `duration` can be up to 24 hours, after which the zone mode will revert to schedule (**FollowSchedule**). If the `duration` is 0 hours, then the change will be until the next setpoint. The `duration` can be up to 24 hours, after which the zone mode will revert to schedule (**FollowSchedule**). If the `duration` is 0 hours, then the change will be until the next setpoint.
```yaml ```yaml
- action: - actions:
- action: evohome.set_zone_override - action: evohome.set_zone_override
target: target:
entity_id: climate.loungeroom entity_id: climate.loungeroom

View File

@ -48,16 +48,16 @@ The phone number used in **target** should be registered with Facebook messenger
# Example automation notification entry # Example automation notification entry
automation: automation:
- alias: "Evening Greeting" - alias: "Evening Greeting"
trigger: triggers:
platform: sun - trigger: sun
event: sunset event: sunset
action: actions:
action: notify.facebook - action: notify.facebook
data: data:
message: "Good Evening" message: "Good Evening"
target: target:
- '+919413017584' - '+919413017584'
- '+919784516314' - '+919784516314'
``` ```
You can also send messages to users that do not have stored their phone number on Facebook, but this requires a bit more work. The Messenger platform uses page-specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID: You can also send messages to users that do not have stored their phone number on Facebook, but this requires a bit more work. The Messenger platform uses page-specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID:

View File

@ -50,10 +50,10 @@ Sets the speed percentage for fan device.
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: fan.set_percentage - action: fan.set_percentage
target: target:
entity_id: fan.kitchen entity_id: fan.kitchen
@ -74,10 +74,10 @@ Sets a preset mode for the fan device. Available preset modes are defined by the
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: fan.set_preset_mode - action: fan.set_preset_mode
target: target:
entity_id: fan.kitchen entity_id: fan.kitchen
@ -98,10 +98,10 @@ Sets the rotation for fan device.
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: fan.set_direction - action: fan.set_direction
target: target:
entity_id: fan.kitchen entity_id: fan.kitchen
@ -122,10 +122,10 @@ Sets the oscillation for fan device.
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: fan.oscillate - action: fan.oscillate
target: target:
entity_id: fan.kitchen entity_id: fan.kitchen
@ -156,10 +156,10 @@ Turn fan device off. This is only supported if the fan device supports being tur
```yaml ```yaml
automation: automation:
trigger: triggers:
platform: time - trigger: time
at: "07:15:00" at: "07:15:00"
action: actions:
- action: fan.turn_off - action: fan.turn_off
target: target:
entity_id: fan.kitchen entity_id: fan.kitchen
@ -180,13 +180,13 @@ Increases the speed of the fan device.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: device - trigger: device
device_id: 097cd9f706a86e9163acb64ba7d630da device_id: 097cd9f706a86e9163acb64ba7d630da
domain: lutron_caseta domain: lutron_caseta
type: press type: press
subtype: raise subtype: raise
action: actions:
- action: fan.increase_speed - action: fan.increase_speed
target: target:
entity_id: fan.dining_room_fan_by_front_door entity_id: fan.dining_room_fan_by_front_door
@ -205,13 +205,13 @@ Decreases the speed of the fan device.
```yaml ```yaml
automation: automation:
trigger: triggers:
- platform: device - trigger: device
device_id: 097cd9f706a86e9163acb64ba7d630da device_id: 097cd9f706a86e9163acb64ba7d630da
domain: lutron_caseta domain: lutron_caseta
type: press type: press
subtype: lower subtype: lower
action: actions:
- action: fan.decrease_speed - action: fan.decrease_speed
target: target:
entity_id: fan.dining_room_fan_by_front_door entity_id: fan.dining_room_fan_by_front_door

View File

@ -29,13 +29,13 @@ Feedreader events can be used out of the box to trigger automation actions, e.g.
```yaml ```yaml
automation: automation:
- alias: "Trigger action when new element(s) in RSS feed" - alias: "Trigger action when new element(s) in RSS feed"
trigger: triggers:
platform: event - trigger: event
event_type: feedreader event_type: feedreader
action: actions:
action: script.turn_on - action: script.turn_on
target: target:
entity_id: script.my_action entity_id: script.my_action
``` ```
{% raw %} {% raw %}
@ -43,17 +43,17 @@ automation:
```yaml ```yaml
automation: automation:
- alias: "Send notification of RSS feed title when updated" - alias: "Send notification of RSS feed title when updated"
trigger: triggers:
platform: event - trigger: event
event_type: feedreader event_type: feedreader
event_data: event_data:
feed_url: "https://hasspodcast.io/feed/podcast" feed_url: "https://hasspodcast.io/feed/podcast"
action: actions:
action: persistent_notification.create - action: persistent_notification.create
data: data:
title: "New HA Podcast available" title: "New HA Podcast available"
message: "New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}" message: "New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"
notification_id: "{{ trigger.event.data.title }}" notification_id: "{{ trigger.event.data.title }}"
``` ```
{% endraw %} {% endraw %}

View File

@ -7,7 +7,7 @@ ha_release: 0.29
ha_domain: ffmpeg ha_domain: ffmpeg
ha_platforms: ha_platforms:
- camera - camera
ha_integration_type: integration ha_integration_type: system
--- ---
The FFmpeg integration allows other Home Assistant integrations to process The FFmpeg integration allows other Home Assistant integrations to process

View File

@ -117,52 +117,52 @@ These are documented below.
```yaml ```yaml
automation: automation:
- alias: "Switch on a light when incident is received" - alias: "Switch on a light when incident is received"
trigger: triggers:
platform: state - trigger: state
entity_id: sensor.incidents entity_id: sensor.incidents
action: actions:
action: light.turn_on - action: light.turn_on
target: target:
entity_id: light.bedroom entity_id: light.bedroom
- alias: "Play TTS incident details when incident is received" - alias: "Play TTS incident details when incident is received"
trigger: triggers:
platform: state - trigger: state
entity_id: sensor.incidents entity_id: sensor.incidents
attribute: message_to_speech_url attribute: message_to_speech_url
condition: conditions:
- condition: not - condition: not
conditions: conditions:
- condition: state - condition: state
entity_id: sensor.incidents entity_id: sensor.incidents
attribute: message_to_speech_url attribute: message_to_speech_url
state: None state: None
action: actions:
- action: media_player.play_media - action: media_player.play_media
data_template: data:
entity_id: media_player.nest_hub_bedroom entity_id: media_player.nest_hub_bedroom
media_content_id: > media_content_id: >
{{ state_attr('sensor.incidents','message_to_speech_url') }} {{ state_attr('sensor.incidents','message_to_speech_url') }}
media_content_type: "audio/mp4" media_content_type: "audio/mp4"
- alias: "Send response acknowledgement when a button is pressed" - alias: "Send response acknowledgement when a button is pressed"
trigger: triggers:
platform: state - trigger: state
entity_id: switch.response_button entity_id: switch.response_button
action: actions:
action: homeassistant.turn_on - action: homeassistant.turn_on
target: target:
entity_id: switch.incident_response entity_id: switch.incident_response
- alias: "Cast FireServiceRota dashboard to Nest Hub" - alias: "Cast FireServiceRota dashboard to Nest Hub"
trigger: triggers:
platform: homeassistant - trigger: homeassistant
event: start event: start
action: actions:
action: cast.show_lovelace_view - action: cast.show_lovelace_view
data: data:
entity_id: media_player.nest_hub_bedroom entity_id: media_player.nest_hub_bedroom
view_path: fsr view_path: fsr
``` ```

View File

@ -78,16 +78,16 @@ The flic integration fires `flic_click` events on the bus. You can capture the e
# Example configuration.yaml automation entry # Example configuration.yaml automation entry
automation: automation:
- alias: "Turn on lights in the living room when flic is pressed once" - alias: "Turn on lights in the living room when flic is pressed once"
trigger: triggers:
platform: event - trigger: event
event_type: flic_click event_type: flic_click
event_data: event_data:
button_name: flic_81e4ac74b6d2 button_name: flic_81e4ac74b6d2
click_type: single click_type: single
action: actions:
action: homeassistant.turn_on - action: homeassistant.turn_on
target: target:
entity_id: group.lights_livingroom entity_id: group.lights_livingroom
``` ```
Event data: Event data:
@ -104,10 +104,10 @@ To help detect and debug flic button clicks, you can use this automation that se
```yaml ```yaml
automation: automation:
- alias: "FLIC Html5 notify on every click" - alias: "FLIC Html5 notify on every click"
trigger: triggers:
platform: event - trigger: event
event_type: flic_click event_type: flic_click
action: actions:
- action: notify.html5 - action: notify.html5
data: data:
title: "flic click" title: "flic click"

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