mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-19 07:17:14 +00:00
Merge branch 'rc' into current
This commit is contained in:
commit
24b7bfbd0d
40
CODEOWNERS
40
CODEOWNERS
@ -15,6 +15,7 @@ source/_integrations/acmeda.markdown @atmurray
|
||||
source/_integrations/acomax.markdown @starkillerOG
|
||||
source/_integrations/adax.markdown @danielhiversen
|
||||
source/_integrations/adguard.markdown @frenck
|
||||
source/_integrations/ads.markdown @mrpasztoradam
|
||||
source/_integrations/advantage_air.markdown @Bre77
|
||||
source/_integrations/aemet.markdown @Noltari
|
||||
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/anova.markdown @Lash-L
|
||||
source/_integrations/anthemav.markdown @hyralex
|
||||
source/_integrations/anthropic.markdown @Shulyaka
|
||||
source/_integrations/anwb_energie.markdown @klaasnicolaas
|
||||
source/_integrations/aosmith.markdown @bdr99
|
||||
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/aprilaire.markdown @chamberlain2007
|
||||
source/_integrations/aprs.markdown @PhilRW
|
||||
source/_integrations/aps.markdown @tronikos
|
||||
source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH
|
||||
source/_integrations/aquacell.markdown @Jordi1990
|
||||
source/_integrations/aranet.markdown @aschmitz @thecode @anrijs
|
||||
@ -70,6 +73,7 @@ source/_integrations/arris_tg2492lg.markdown @vanbalken
|
||||
source/_integrations/arve.markdown @ikalnyi
|
||||
source/_integrations/aseko_pool_live.markdown @milanmeu
|
||||
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
|
||||
source/_integrations/assist_satellite.markdown @home-assistant/core @synesthesiam
|
||||
source/_integrations/asuswrt.markdown @kennedyshead @ollo69
|
||||
source/_integrations/atag.markdown @MatsNL
|
||||
source/_integrations/aten_pe.markdown @mtdcr
|
||||
@ -124,12 +128,13 @@ source/_integrations/bryant_evolution.markdown @danielsmyers
|
||||
source/_integrations/bsblan.markdown @liudger
|
||||
source/_integrations/bswitch.markdown @jafar-atili
|
||||
source/_integrations/bt_smarthub.markdown @typhoon2099
|
||||
source/_integrations/bthome.markdown @Ernst79
|
||||
source/_integrations/bthome.markdown @Ernst79 @thecode
|
||||
source/_integrations/bticino.markdown @cgtobi
|
||||
source/_integrations/bubendorff.markdown @cgtobi
|
||||
source/_integrations/buienradar.markdown @mjj4791 @ties @Robbie1221
|
||||
source/_integrations/button.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/cast.markdown @emontnemery
|
||||
source/_integrations/ccm15.markdown @ocalvo
|
||||
@ -168,6 +173,7 @@ source/_integrations/dacia.markdown @epenet
|
||||
source/_integrations/daikin.markdown @fredrike
|
||||
source/_integrations/date.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/deconz.markdown @Kane610
|
||||
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/dremel_3d_printer.markdown @tkdrob
|
||||
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/duke_energy.markdown @hunterjm
|
||||
source/_integrations/duotecno.markdown @cereal2nd
|
||||
source/_integrations/duquesne_light.markdown @tronikos
|
||||
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/electrasmart.markdown @jafar-atili
|
||||
source/_integrations/electric_kiwi.markdown @mikey0000
|
||||
source/_integrations/elevenlabs.markdown @sorgfresser
|
||||
source/_integrations/elgato.markdown @frenck
|
||||
source/_integrations/elkm1.markdown @gwww @bdraco
|
||||
source/_integrations/elmax.markdown @albertogeniola
|
||||
@ -287,6 +295,7 @@ source/_integrations/fronius.markdown @farmio
|
||||
source/_integrations/frontend.markdown @home-assistant/frontend
|
||||
source/_integrations/frontier_silicon.markdown @wlcrs
|
||||
source/_integrations/fujitsu_anywair.markdown @Bre77
|
||||
source/_integrations/fujitsu_fglair.markdown @crevetor
|
||||
source/_integrations/fully_kiosk.markdown @cgarwood
|
||||
source/_integrations/fyta.markdown @dontinelli
|
||||
source/_integrations/garages_amsterdam.markdown @klaasnicolaas
|
||||
@ -311,9 +320,10 @@ source/_integrations/goodwe.markdown @mletenay @starkillerOG
|
||||
source/_integrations/google.markdown @allenporter
|
||||
source/_integrations/google_assistant.markdown @home-assistant/cloud
|
||||
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_mail.markdown @tkdrob
|
||||
source/_integrations/google_photos.markdown @allenporter
|
||||
source/_integrations/google_sheets.markdown @tkdrob
|
||||
source/_integrations/google_tasks.markdown @allenporter
|
||||
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/homewizard.markdown @DCSBL
|
||||
source/_integrations/honeywell.markdown @rdfurman @mkmer
|
||||
source/_integrations/html5.markdown @alexyao2015
|
||||
source/_integrations/http.markdown @home-assistant/core
|
||||
source/_integrations/huawei_lte.markdown @scop @fphammerle
|
||||
source/_integrations/hue.markdown @balloob @marcelveldt
|
||||
@ -400,13 +411,14 @@ source/_integrations/intellifire.markdown @jeeftor
|
||||
source/_integrations/intesishome.markdown @jnimmo
|
||||
source/_integrations/ios.markdown @robbiet480
|
||||
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/ipma.markdown @dgomes
|
||||
source/_integrations/iqvia.markdown @bachya
|
||||
source/_integrations/irish_rail_transport.markdown @ttroy50
|
||||
source/_integrations/iron_os.markdown @tr4nt0r
|
||||
source/_integrations/isal.markdown @bdraco
|
||||
source/_integrations/iskra.markdown @iskramis
|
||||
source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair
|
||||
source/_integrations/ismartwindow.markdown @starkillerOG
|
||||
source/_integrations/israel_rail.markdown @shaiu
|
||||
@ -451,6 +463,7 @@ source/_integrations/ld2410_ble.markdown @930913
|
||||
source/_integrations/leaone.markdown @bdraco
|
||||
source/_integrations/led_ble.markdown @bdraco
|
||||
source/_integrations/legrand.markdown @cgtobi
|
||||
source/_integrations/lektrico.markdown @lektrico
|
||||
source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
|
||||
source/_integrations/lg_netcast.markdown @Drafteed @splinter98
|
||||
source/_integrations/lidarr.markdown @tkdrob
|
||||
@ -476,7 +489,7 @@ source/_integrations/luci.markdown @mzdrale
|
||||
source/_integrations/luftdaten.markdown @fabaff @frenck
|
||||
source/_integrations/lupusec.markdown @majuss @suaveolent
|
||||
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/lyric.markdown @timmo001
|
||||
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/modern_forms.markdown @wonderslug
|
||||
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
|
||||
source/_integrations/monarch_money.markdown @jeeftor
|
||||
source/_integrations/monessen.markdown @jeeftor
|
||||
source/_integrations/monoprice.markdown @etsinko @OnFreund
|
||||
source/_integrations/monzo.markdown @jakemartin-icl
|
||||
@ -550,6 +564,7 @@ source/_integrations/nextcloud.markdown @mib1185
|
||||
source/_integrations/nextdns.markdown @bieniu
|
||||
source/_integrations/nfandroidtv.markdown @tkdrob
|
||||
source/_integrations/nibe_heatpump.markdown @elupus
|
||||
source/_integrations/nice_go.markdown @IceBotYT
|
||||
source/_integrations/nightscout.markdown @marciogranzotto
|
||||
source/_integrations/nilu.markdown @hfurubotten
|
||||
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/nutrichef.markdown @bdraco
|
||||
source/_integrations/nws.markdown @MatthewFlamm @kamiyo
|
||||
source/_integrations/nyt_games.markdown @joostlek
|
||||
source/_integrations/nzbget.markdown @chriscla
|
||||
source/_integrations/obihai.markdown @dshokouhi @ejpenney
|
||||
source/_integrations/octoprint.markdown @rfleming71
|
||||
@ -614,7 +630,6 @@ source/_integrations/pge.markdown @tronikos
|
||||
source/_integrations/philips_js.markdown @elupus
|
||||
source/_integrations/pi_hole.markdown @shenxn
|
||||
source/_integrations/picnic.markdown @corneyl
|
||||
source/_integrations/pilight.markdown @trekky12
|
||||
source/_integrations/pinecil.markdown @tr4nt0r
|
||||
source/_integrations/ping.markdown @jpbede
|
||||
source/_integrations/piper.markdown @balloob @synesthesiam
|
||||
@ -633,7 +648,7 @@ source/_integrations/prometheus.markdown @knyar
|
||||
source/_integrations/prosegur.markdown @dgomes
|
||||
source/_integrations/proximity.markdown @mib1185
|
||||
source/_integrations/proxmoxve.markdown @jhollowe @Corbeno
|
||||
source/_integrations/prusalink.markdown @balloob @Skaronator
|
||||
source/_integrations/prusalink.markdown @balloob
|
||||
source/_integrations/ps4.markdown @ktnrg45
|
||||
source/_integrations/pse.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/sensorpro.markdown @bdraco
|
||||
source/_integrations/sensorpush.markdown @bdraco
|
||||
source/_integrations/sensoterra.markdown @markruys
|
||||
source/_integrations/sentry.markdown @dcramer @frenck
|
||||
source/_integrations/senz.markdown @milanmeu
|
||||
source/_integrations/serial.markdown @fabaff
|
||||
@ -761,6 +777,7 @@ source/_integrations/smarther.markdown @cgtobi
|
||||
source/_integrations/smarttub.markdown @mdz
|
||||
source/_integrations/smarty.markdown @z0mbieprocess
|
||||
source/_integrations/smhi.markdown @gjohansson-ST
|
||||
source/_integrations/smlight.markdown @tl-sl
|
||||
source/_integrations/sms.markdown @ocalvo
|
||||
source/_integrations/smud.markdown @tronikos
|
||||
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/switchbee.markdown @jafar-atili
|
||||
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
|
||||
source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland
|
||||
source/_integrations/switcher_kis.markdown @thecode
|
||||
source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur
|
||||
source/_integrations/switcher_kis.markdown @thecode @YogevBokobza
|
||||
source/_integrations/switchmate.markdown @danielhiversen @qiz-li
|
||||
source/_integrations/symfonisk.markdown @jjlawren @peterager
|
||||
source/_integrations/syncthing.markdown @zhulik
|
||||
@ -853,6 +870,7 @@ source/_integrations/todoist.markdown @boralyl
|
||||
source/_integrations/tolo.markdown @MatthiasLohr
|
||||
source/_integrations/tomorrowio.markdown @raman325 @lymanepp
|
||||
source/_integrations/totalconnect.markdown @austinmroczek
|
||||
source/_integrations/touchline_sl.markdown @jnsgruk
|
||||
source/_integrations/tplink.markdown @rytilahti @bdraco @sdb9696
|
||||
source/_integrations/tplink_omada.markdown @MarkGodwin
|
||||
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/transmission.markdown @engrbm87 @JPHutchins
|
||||
source/_integrations/trend.markdown @jpbede
|
||||
source/_integrations/triggercmd.markdown @rvmey
|
||||
source/_integrations/tts.markdown @home-assistant/core
|
||||
source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck
|
||||
source/_integrations/twentemilieu.markdown @frenck
|
||||
@ -926,6 +945,7 @@ source/_integrations/webhook.markdown @home-assistant/core
|
||||
source/_integrations/webmin.markdown @autinerd
|
||||
source/_integrations/webostv.markdown @thecode
|
||||
source/_integrations/websocket_api.markdown @home-assistant/core
|
||||
source/_integrations/weheat.markdown @jesperraemaekers
|
||||
source/_integrations/wemo.markdown @esev
|
||||
source/_integrations/whirlpool.markdown @abmantis @mkmer
|
||||
source/_integrations/whisper.markdown @balloob @synesthesiam
|
||||
@ -936,6 +956,7 @@ source/_integrations/wirelesstag.markdown @sergeymaysak
|
||||
source/_integrations/withings.markdown @joostlek
|
||||
source/_integrations/wiz.markdown @sbidy
|
||||
source/_integrations/wled.markdown @frenck
|
||||
source/_integrations/wmspro.markdown @mback2k
|
||||
source/_integrations/wolflink.markdown @adamkrol93 @mtielen
|
||||
source/_integrations/workday.markdown @fabaff @gjohansson-ST
|
||||
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_tv.markdown @simse
|
||||
source/_integrations/xmpp.markdown @fabaff @flowolf
|
||||
source/_integrations/yale.markdown @bdraco
|
||||
source/_integrations/yale_home.markdown @bdraco
|
||||
source/_integrations/yale_smart_alarm.markdown @gjohansson-ST
|
||||
source/_integrations/yalexs_ble.markdown @bdraco
|
||||
|
@ -134,10 +134,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.79.4-arm64-darwin)
|
||||
google-protobuf (~> 4.27)
|
||||
sass-embedded (1.79.4-x86_64-linux-gnu)
|
||||
sass-embedded (1.79.4)
|
||||
google-protobuf (~> 4.27)
|
||||
rake (>= 13)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sassc (2.1.0)
|
||||
|
@ -107,9 +107,9 @@ social:
|
||||
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 9
|
||||
current_patch_version: 3
|
||||
date_released: 2024-09-24
|
||||
current_minor_version: 10
|
||||
current_patch_version: 0
|
||||
date_released: 2024-10-02
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
|
111
source/_dashboards/heading.markdown
Normal file
111
source/_dashboards/heading.markdown
Normal 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 %}
|
@ -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.
|
||||
|
||||
<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
|
||||
</p>
|
||||
|
||||
@ -52,8 +52,10 @@ Once you have created a sections view, you can populate it with sections and car
|
||||

|
||||
|
||||
2. To add a new section, select the **Create section** button.
|
||||
3. To edit the section title, select the edit {% icon "mdi:edit" %} button.
|
||||
- If you leave the section title empty, this line will be hidden.
|
||||
3. A [heading card](/dashboards/heading) will be automatically added to the top of the section.
|
||||
- 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:
|
||||
- On the **Visibility** tab, select **Add condition**.
|
||||
- Select the type of condition, and enter the parameters.
|
||||
@ -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.
|
||||
2. To rearrange sections, hold the move {% icon "mdi:cursor-move" %} button and move the card.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-sections.gif" alt="Rearranging sections by dragging"/>
|
||||
<p class='img'>
|
||||
<img src="/images/dashboards/section_view_rearrange_sections.gif" alt="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.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-cards.gif" alt="Rearranging cards by dragging"/>
|
||||
<p class='img'>
|
||||
<img src="/images/dashboards/section_view_rearrange_cards.gif" alt="Rearranging cards by dragging"/>
|
||||
Rearranging cards by dragging
|
||||
</p>
|
||||
</p>
|
||||
|
||||
## Show or hide section conditionally
|
||||
|
||||
|
@ -79,6 +79,14 @@ icon_tap_action:
|
||||
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.
|
||||
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:
|
||||
required: false
|
||||
description: Additional widgets to control your entity. See [available features](/dashboards/features).
|
||||
|
@ -158,6 +158,8 @@
|
||||
- term: Custom integration
|
||||
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.
|
||||
aliases:
|
||||
- custom integrations
|
||||
- term: Customize
|
||||
definition: >-
|
||||
Customization allows you to overwrite the default parameters of your devices
|
||||
|
@ -14,10 +14,10 @@ You can also perform the action to activate [a scene](/integrations/scene/) whic
|
||||
```yaml
|
||||
automation:
|
||||
# Change the light in the kitchen and living room to 150 brightness and color red.
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
@ -29,13 +29,13 @@ automation:
|
||||
|
||||
automation 2:
|
||||
# Notify me on my mobile phone of an event
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
offset: -00:30
|
||||
variables:
|
||||
notification_action: notify.paulus_iphone
|
||||
action:
|
||||
actions:
|
||||
# Actions are scripts so can also be a list of actions
|
||||
- action: "{{ notification_action }}"
|
||||
data:
|
||||
@ -53,11 +53,11 @@ Conditions can also be part of an action. You can combine multiple actions and c
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Office at evening"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.office_occupancy
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
message: "Testing conditional actions"
|
||||
|
@ -16,11 +16,11 @@ Example of using condition:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Turn on office lights"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.office_motion_sensor
|
||||
to: "on"
|
||||
condition:
|
||||
conditions:
|
||||
- or:
|
||||
- condition: numeric_state
|
||||
entity_id: sun.sun
|
||||
@ -29,7 +29,7 @@ automation:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.office_lux_sensor
|
||||
below: 10
|
||||
action:
|
||||
actions:
|
||||
- action: scene.turn_on
|
||||
target:
|
||||
entity_id: scene.office_lights
|
||||
@ -44,12 +44,12 @@ The `condition` option of an automation, also accepts a single condition templat
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Turn on office lights"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.office_motion_sensor
|
||||
to: "on"
|
||||
condition: "{{ state_attr('sun.sun', 'elevation') < 4 }}"
|
||||
action:
|
||||
conditions: "{{ state_attr('sun.sun', 'elevation') < 4 }}"
|
||||
actions:
|
||||
- action: scene.turn_on
|
||||
target:
|
||||
entity_id: scene.office_lights
|
||||
|
@ -31,9 +31,9 @@ Some automations you only want to run every 5 minutes. This can be achieved usin
|
||||
automation:
|
||||
- mode: single
|
||||
max_exceeded: silent
|
||||
trigger:
|
||||
triggers:
|
||||
- ...
|
||||
action:
|
||||
actions:
|
||||
- ...
|
||||
- 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:
|
||||
- mode: queued
|
||||
max: 25
|
||||
trigger:
|
||||
triggers:
|
||||
- ...
|
||||
action:
|
||||
actions:
|
||||
- ...
|
||||
```
|
||||
|
@ -201,11 +201,11 @@ These are the properties available for a [Zone trigger](/docs/automation/trigger
|
||||
```yaml
|
||||
# Example configuration.yaml entries
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.paulus
|
||||
id: paulus_device
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
message: >
|
||||
@ -215,19 +215,19 @@ automation:
|
||||
This was triggered by {{ trigger.id }}
|
||||
|
||||
automation 2:
|
||||
trigger:
|
||||
- platform: mqtt
|
||||
triggers:
|
||||
- trigger: mqtt
|
||||
topic: "/notify/+"
|
||||
action:
|
||||
action: >
|
||||
actions:
|
||||
- action: >
|
||||
notify.{{ trigger.topic.split('/')[-1] }}
|
||||
data:
|
||||
message: "{{ trigger.payload }}"
|
||||
|
||||
automation 3:
|
||||
trigger:
|
||||
triggers:
|
||||
# Multiple entities for which you want to perform the same action.
|
||||
- platform: state
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- light.bedroom_closet
|
||||
- light.kiddos_closet
|
||||
@ -235,27 +235,27 @@ automation 3:
|
||||
to: "on"
|
||||
# Trigger when someone leaves one of those lights on for 10 minutes.
|
||||
for: "00:10:00"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
# Turn off whichever entity triggered the automation.
|
||||
entity_id: "{{ trigger.entity_id }}"
|
||||
|
||||
automation 4:
|
||||
trigger:
|
||||
triggers:
|
||||
# When an NFC tag is scanned by Home Assistant...
|
||||
- platform: event
|
||||
- trigger: event
|
||||
event_type: tag_scanned
|
||||
# ...By certain people
|
||||
context:
|
||||
user_id:
|
||||
- 06cbf6deafc54cf0b2ffa49552a396ba
|
||||
- 2df8a2a6e0be4d5d962aad2d39ed4c9c
|
||||
condition:
|
||||
conditions:
|
||||
# Check NFC tag (ID) is the one by the front door
|
||||
- condition: template
|
||||
value_template: "{{ trigger.event.data.tag_id == '8b6d6755-b4d5-4c23-818b-cf224d221ab7'}}"
|
||||
action:
|
||||
actions:
|
||||
# Turn off various lights
|
||||
- action: light.turn_off
|
||||
target:
|
||||
|
@ -31,6 +31,8 @@ An {% term automation %} can be triggered by an {% term event %}, a certain {% t
|
||||
- [Sentence trigger](#sentence-trigger)
|
||||
- [Multiple triggers](#multiple-triggers)
|
||||
- [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
|
||||
|
||||
@ -44,14 +46,14 @@ This video tutorial explains how trigger IDs work.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: "MY_CUSTOM_EVENT"
|
||||
id: "custom_event"
|
||||
- platform: mqtt
|
||||
- trigger: mqtt
|
||||
topic: "living_room/switch/ac"
|
||||
id: "ac_on"
|
||||
- platform: state # This trigger will be assigned id="2"
|
||||
- trigger: state # This trigger will be assigned id="2"
|
||||
entity_id:
|
||||
- device_tracker.paulus
|
||||
- device_tracker.anne_therese
|
||||
@ -72,8 +74,8 @@ The second variant is setting variables that are available when attaching a trig
|
||||
automation:
|
||||
trigger_variables:
|
||||
my_event: example_event
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
# Able to use `trigger_variables`
|
||||
event_type: "{{ my_event }}"
|
||||
# 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
|
||||
automation:
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: "MY_CUSTOM_EVENT"
|
||||
# optional
|
||||
event_data:
|
||||
@ -109,8 +111,8 @@ event that contain no, or similar, data and contexts.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type:
|
||||
- automation_reloaded
|
||||
- scene_reloaded
|
||||
@ -130,8 +132,8 @@ automation:
|
||||
sub_event: ABC
|
||||
node: ac
|
||||
value: on
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: "{{ 'MY_CUSTOM_EVENT_' ~ sub_event }}"
|
||||
```
|
||||
|
||||
@ -143,8 +145,8 @@ Fires when Home Assistant starts up or shuts down.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: homeassistant
|
||||
triggers:
|
||||
- trigger: homeassistant
|
||||
# Event can also be 'shutdown'
|
||||
event: start
|
||||
```
|
||||
@ -159,8 +161,8 @@ Fires when a specific message is received on given MQTT topic. Optionally can ma
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: mqtt
|
||||
triggers:
|
||||
- trigger: mqtt
|
||||
topic: "living_room/switch/ac"
|
||||
# Optional
|
||||
payload: "on"
|
||||
@ -174,8 +176,8 @@ The trigger in the example below will trigger only when the message received on
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: mqtt
|
||||
triggers:
|
||||
- trigger: mqtt
|
||||
topic: "living_room/switch/ac"
|
||||
payload: "on"
|
||||
value_template: "{{ value_json.state }}"
|
||||
@ -197,8 +199,8 @@ automation:
|
||||
room: "living_room"
|
||||
node: "ac"
|
||||
value: "on"
|
||||
trigger:
|
||||
- platform: mqtt
|
||||
triggers:
|
||||
- trigger: mqtt
|
||||
topic: "{{ room ~ '/switch/' ~ node}}"
|
||||
# Optional
|
||||
payload: "{{ 'state:' ~ value }}"
|
||||
@ -220,8 +222,8 @@ If the current state of your entity is `50` and you set the threshold to `below:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
# If given, will trigger when the value of the given attribute for the given entity changes..
|
||||
attribute: attribute_name
|
||||
@ -245,8 +247,8 @@ When the `attribute` option is specified the trigger is compared to the given `a
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: climate.kitchen
|
||||
attribute: current_temperature
|
||||
above: 23
|
||||
@ -262,8 +264,8 @@ The state of the entity can be referenced like this:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
value_template: "{{ state.state | float * 9 / 5 + 32 }}"
|
||||
above: 70
|
||||
@ -277,8 +279,8 @@ Attributes of the entity can be referenced like this:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: climate.kitchen
|
||||
value_template: "{{ state.attributes.current_temperature - state.attributes.temperature_set_point }}"
|
||||
above: 3
|
||||
@ -297,8 +299,8 @@ However, the comparison will only be made when the entity specified in the trigg
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.outside_temperature
|
||||
# Other entity ids can be specified for above and/or below thresholds
|
||||
above: sensor.inside_temperature
|
||||
@ -310,8 +312,8 @@ The `for:` can also be specified as `HH:MM:SS` like this:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
# At least one of the following required
|
||||
above: 17
|
||||
@ -329,8 +331,8 @@ You can also use templates in the `for` option.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.temperature_1
|
||||
- sensor.temperature_2
|
||||
@ -338,7 +340,7 @@ automation:
|
||||
for:
|
||||
minutes: "{{ states('input_number.high_temp_min')|int }}"
|
||||
seconds: "{{ states('input_number.high_temp_sec')|int }}"
|
||||
action:
|
||||
actions:
|
||||
- action: persistent_notification.create
|
||||
data:
|
||||
message: >
|
||||
@ -376,8 +378,8 @@ This automation triggers if either Paulus or Anne-Therese are home for one minut
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- device_tracker.paulus
|
||||
- device_tracker.anne_therese
|
||||
@ -396,8 +398,8 @@ It's possible to give a list of `from` states or `to` states:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: vacuum.test
|
||||
from:
|
||||
- "cleaning"
|
||||
@ -409,8 +411,8 @@ If you want to trigger on all state changes, but not on attribute changes, you c
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: vacuum.test
|
||||
to:
|
||||
```
|
||||
@ -419,8 +421,8 @@ If you want to trigger on all state changes *except* specific ones, use `not_fro
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: vacuum.test
|
||||
not_from:
|
||||
- "unknown"
|
||||
@ -440,8 +442,8 @@ For example, this trigger only fires when the boiler has been heating for 10 min
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: climate.living_room
|
||||
attribute: hvac_action
|
||||
to: "heating"
|
||||
@ -452,8 +454,8 @@ This trigger fires whenever the boiler's `hvac_action` attribute changes:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: climate.living_room
|
||||
attribute: hvac_action
|
||||
```
|
||||
@ -467,8 +469,8 @@ state for 30 seconds:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: light.office
|
||||
# Must stay "on" for 30 seconds
|
||||
to: "on"
|
||||
@ -486,8 +488,8 @@ the time specified, but doesn't care about "playing" or "paused".
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: media_player.kitchen
|
||||
# Not "off" for 30 minutes
|
||||
from: "off"
|
||||
@ -502,8 +504,8 @@ same for `for` the time specified, regardless of the current state value.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: media_player.kitchen
|
||||
# The media player remained in its current state for 1 hour
|
||||
for: "01:00:00"
|
||||
@ -515,8 +517,8 @@ You can also use templates in the `for` option.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- device_tracker.paulus
|
||||
- device_tracker.anne_therese
|
||||
@ -524,7 +526,7 @@ automation:
|
||||
for:
|
||||
minutes: "{{ states('input_number.lock_min')|int }}"
|
||||
seconds: "{{ states('input_number.lock_sec')|int }}"
|
||||
action:
|
||||
actions:
|
||||
- action: lock.lock
|
||||
target:
|
||||
entity_id: lock.my_place
|
||||
@ -554,8 +556,8 @@ Since the duration of twilight is different throughout the year, it is recommend
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
# Possible values: sunset, sunrise
|
||||
event: 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
|
||||
automation:
|
||||
- alias: "Exterior Lighting on when dark outside"
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sun.sun
|
||||
attribute: elevation
|
||||
# Can be a positive or negative number
|
||||
below: -4.0
|
||||
action:
|
||||
actions:
|
||||
- action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.exterior_lighting
|
||||
@ -605,8 +607,8 @@ scanned using the Home Assistant Companion mobile application.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: tag
|
||||
triggers:
|
||||
- trigger: tag
|
||||
tag_id: A7-6B-90-5F
|
||||
```
|
||||
|
||||
@ -615,8 +617,8 @@ device/scanner by setting the `device_id`:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: tag
|
||||
triggers:
|
||||
- trigger: tag
|
||||
tag_id: A7-6B-90-5F
|
||||
device_id: 0e19cd3cf2b311ea88f469a7512c307d
|
||||
```
|
||||
@ -625,8 +627,8 @@ Or trigger on multiple possible devices for multiple tags:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: tag
|
||||
triggers:
|
||||
- trigger: tag
|
||||
tag_id:
|
||||
- "A7-6B-90-5F"
|
||||
- "A7-6B-15-AC"
|
||||
@ -647,8 +649,8 @@ With template triggers you can also evaluate attribute changes by using is_state
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: template
|
||||
triggers:
|
||||
- trigger: template
|
||||
value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}"
|
||||
|
||||
# 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
|
||||
automation:
|
||||
trigger:
|
||||
- platform: template
|
||||
triggers:
|
||||
- trigger: template
|
||||
value_template: "{{ is_state('device_tracker.paulus', 'home') }}"
|
||||
for:
|
||||
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
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: time
|
||||
- triggers:
|
||||
- trigger: time
|
||||
# Military time format. This trigger will fire at 3:32 PM
|
||||
at: "15:32:00"
|
||||
```
|
||||
@ -712,11 +714,11 @@ The entity ID of an [input datetime](/integrations/input_datetime/).
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.turn_on
|
||||
target:
|
||||
entity_id: climate.office
|
||||
@ -727,10 +729,10 @@ automation:
|
||||
datetime: >
|
||||
{{ (now().timestamp() + 2*60*60)
|
||||
| timestamp_custom('%Y-%m-%d %H:%M:%S') }}
|
||||
- trigger:
|
||||
- platform: time
|
||||
- triggers:
|
||||
- trigger: time
|
||||
at: input_datetime.turn_off_ac
|
||||
action:
|
||||
actions:
|
||||
- action: climate.turn_off
|
||||
target:
|
||||
entity_id: climate.office
|
||||
@ -744,26 +746,51 @@ The Entity ID of a [sensor](/integrations/sensor/) with the "timestamp" device c
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: time
|
||||
- triggers:
|
||||
- trigger: time
|
||||
at: sensor.phone_next_alarm
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
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
|
||||
automation:
|
||||
trigger:
|
||||
- platform: time
|
||||
- triggers:
|
||||
- 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:
|
||||
- input_datetime.leave_for_work
|
||||
- "18:30:00"
|
||||
- entity_id: sensor.bus_arrival
|
||||
offset: "-00:10:00"
|
||||
```
|
||||
|
||||
## Time pattern trigger
|
||||
@ -772,21 +799,21 @@ With the time pattern trigger, you can match if the hour, minute or second of th
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
triggers:
|
||||
- trigger: time_pattern
|
||||
# Matches every hour at 5 minutes past whole
|
||||
minutes: 5
|
||||
|
||||
automation 2:
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
triggers:
|
||||
- trigger: time_pattern
|
||||
# Trigger once per minute during the hour of 3
|
||||
hours: "3"
|
||||
minutes: "*"
|
||||
|
||||
automation 3:
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
triggers:
|
||||
- trigger: time_pattern
|
||||
# You can also match on interval. This will match every 5 minutes
|
||||
minutes: "/5"
|
||||
```
|
||||
@ -801,8 +828,8 @@ Persistent notification triggers are fired when a `persistent_notification` is `
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: persistent_notification
|
||||
triggers:
|
||||
- trigger: persistent_notification
|
||||
update_type:
|
||||
- added
|
||||
- removed
|
||||
@ -817,8 +844,8 @@ Webhook trigger fires when a web request is made to the webhook endpoint: `/api/
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: webhook
|
||||
triggers:
|
||||
- trigger: webhook
|
||||
webhook_id: "some_hook_id"
|
||||
allowed_methods:
|
||||
- POST
|
||||
@ -865,8 +892,8 @@ Zone trigger fires when an entity is entering or leaving the zone. The entity ca
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: zone
|
||||
triggers:
|
||||
- trigger: zone
|
||||
entity_id: person.paulus
|
||||
zone: zone.home
|
||||
# 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
|
||||
automation:
|
||||
trigger:
|
||||
- platform: geo_location
|
||||
triggers:
|
||||
- trigger: geo_location
|
||||
source: nsw_rural_fire_service_feed
|
||||
zone: zone.bushfire_alert_zone
|
||||
# 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
|
||||
automation:
|
||||
trigger:
|
||||
- platform: calendar
|
||||
triggers:
|
||||
- trigger: calendar
|
||||
# Possible values: start, end
|
||||
event: start
|
||||
# The calendar entity_id
|
||||
@ -932,8 +959,8 @@ Sentences are allowed to use some basic [template syntax](https://developers.hom
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: conversation
|
||||
triggers:
|
||||
- trigger: conversation
|
||||
command:
|
||||
- "[it's ]party time"
|
||||
- "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
|
||||
automation:
|
||||
trigger:
|
||||
triggers:
|
||||
# first trigger
|
||||
- platform: time_pattern
|
||||
- trigger: time_pattern
|
||||
minutes: 5
|
||||
# our second trigger is the sunset
|
||||
- platform: sun
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
```
|
||||
|
||||
@ -990,8 +1017,8 @@ It is possible to specify multiple entities for the same trigger. To do so add m
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- sensor.one
|
||||
- sensor.two
|
||||
@ -1006,15 +1033,15 @@ To do so, add `enabled: false` to the trigger. For example:
|
||||
```yaml
|
||||
# Example script with a disabled trigger
|
||||
automation:
|
||||
trigger:
|
||||
triggers:
|
||||
# This trigger will not trigger, as it is disabled.
|
||||
# This automation does not run when the sun is set.
|
||||
- enabled: false
|
||||
platform: sun
|
||||
trigger: sun
|
||||
event: sunset
|
||||
|
||||
# This trigger will fire, as it is not disabled.
|
||||
- platform: time
|
||||
- trigger: time
|
||||
at: "15:32:00"
|
||||
```
|
||||
|
||||
@ -1039,13 +1066,38 @@ blueprint:
|
||||
trigger_variables:
|
||||
_enable_number: !input input_number
|
||||
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event_type: sunrise
|
||||
enabled: !input input_boolean
|
||||
- platform: sun
|
||||
- trigger: sun
|
||||
event_type: sunset
|
||||
enabled: "{{ _enable_number < 50 }}"
|
||||
```
|
||||
|
||||
{% 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.
|
||||
|
@ -15,8 +15,8 @@ automation: !include automations.yaml
|
||||
|
||||
# Labeled automation block
|
||||
automation kitchen:
|
||||
- trigger:
|
||||
- platform: ...
|
||||
- triggers:
|
||||
- trigger: ...
|
||||
```
|
||||
|
||||
You can add as many labeled `automation` blocks as you want.
|
||||
@ -52,7 +52,7 @@ trace:
|
||||
default: 5
|
||||
required: false
|
||||
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
|
||||
default: {}
|
||||
type: map
|
||||
@ -84,7 +84,7 @@ max_exceeded:
|
||||
required: false
|
||||
type: string
|
||||
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."
|
||||
required: true
|
||||
type: list
|
||||
@ -102,11 +102,11 @@ trigger:
|
||||
PARAMETER_NAME:
|
||||
description: "The value of the variable. Any YAML is valid. Templates can also be used to pass a value to the variable."
|
||||
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.
|
||||
required: false
|
||||
type: list
|
||||
action:
|
||||
actions:
|
||||
description: "The sequence of actions to be performed in the script."
|
||||
required: true
|
||||
type: list
|
||||
@ -137,16 +137,16 @@ automation my_lights:
|
||||
# Turns on lights 1 hour before sunset if people are home
|
||||
# and if people get home between 16:00-23:00
|
||||
- alias: "Rule 1 Light on in the evening"
|
||||
trigger:
|
||||
triggers:
|
||||
# Prefix the first line of each trigger configuration
|
||||
# with a '-' to enter multiple
|
||||
- platform: sun
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
offset: "-01:00:00"
|
||||
- platform: state
|
||||
- trigger: state
|
||||
entity_id: all
|
||||
to: "home"
|
||||
condition:
|
||||
conditions:
|
||||
# Prefix the first line of each condition configuration
|
||||
# with a '-'' to enter multiple
|
||||
- condition: state
|
||||
@ -155,7 +155,7 @@ automation my_lights:
|
||||
- condition: time
|
||||
after: "16: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
|
||||
- action: homeassistant.turn_on
|
||||
target:
|
||||
@ -163,26 +163,26 @@ automation my_lights:
|
||||
|
||||
# Turn off lights when everybody leaves the house
|
||||
- alias: "Rule 2 - Away Mode"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: all
|
||||
to: "not_home"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: all
|
||||
|
||||
# Notify when Paulus leaves the house in the evening
|
||||
- alias: "Leave Home notification"
|
||||
trigger:
|
||||
- platform: zone
|
||||
triggers:
|
||||
- trigger: zone
|
||||
event: leave
|
||||
zone: zone.home
|
||||
entity_id: device_tracker.paulus
|
||||
condition:
|
||||
conditions:
|
||||
- condition: time
|
||||
after: "20:00"
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
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.
|
||||
- alias: "Xiaomi Cube Action"
|
||||
initial_state: false
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_158d000103a3de
|
||||
action:
|
||||
actions:
|
||||
- action: notify.pushover
|
||||
data:
|
||||
title: "Cube event detected"
|
||||
@ -216,8 +216,8 @@ At startup, automations by default restore their last state of when Home Assista
|
||||
automation:
|
||||
- alias: "Automation Name"
|
||||
initial_state: false
|
||||
trigger:
|
||||
- platform: ...
|
||||
triggers:
|
||||
- trigger: ...
|
||||
```
|
||||
|
||||
### Number of debug traces stored
|
||||
@ -229,8 +229,8 @@ automation:
|
||||
- alias: "Automation Name"
|
||||
trace:
|
||||
stored_traces: 10
|
||||
trigger:
|
||||
- platform: ...
|
||||
triggers:
|
||||
- trigger: ...
|
||||
```
|
||||
|
||||
## 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!
|
||||
- id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated.
|
||||
alias: "Hello world"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sun.sun
|
||||
from: below_horizon
|
||||
to: above_horizon
|
||||
condition:
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
above: 17
|
||||
below: 25
|
||||
value_template: "{{ float(state.state) + 2 }}"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
```
|
||||
|
||||
|
@ -267,17 +267,17 @@ blueprint:
|
||||
mode: restart
|
||||
max_exceeded: silent
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: !input motion_entity
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target: !input light_target
|
||||
- wait_for_trigger:
|
||||
platform: state
|
||||
- trigger: state
|
||||
entity_id: !input motion_entity
|
||||
from: "on"
|
||||
to: "off"
|
||||
|
@ -1381,7 +1381,7 @@ Targets are meant to be used with the `target` property of an action in
|
||||
a script sequence. For example:
|
||||
|
||||
```yaml
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target: !input lights
|
||||
```
|
||||
@ -1535,7 +1535,7 @@ The output of this selector is a list of triggers. For example:
|
||||
|
||||
```yaml
|
||||
# Example trigger selector output result
|
||||
- platform: numeric_state
|
||||
- trigger: numeric_state
|
||||
entity_id: "sensor.outside_temperature"
|
||||
below: 20
|
||||
```
|
||||
|
@ -44,12 +44,12 @@ The automation we're going to use in this tutorial controls a light based on a m
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion_kitchen
|
||||
|
||||
action:
|
||||
action: >
|
||||
actions:
|
||||
- action: >
|
||||
{% if trigger.to_state.state == "on" %}
|
||||
light.turn_on
|
||||
{% else %}
|
||||
@ -91,8 +91,8 @@ 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:
|
||||
|
||||
```yaml
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: !input motion_sensor
|
||||
```
|
||||
|
||||
@ -103,8 +103,8 @@ Inputs are not limited to strings. They can contain complex objects too. So in t
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
action:
|
||||
action: >
|
||||
actions:
|
||||
- action: >
|
||||
{% if trigger.to_state.state == "on" %}
|
||||
light.turn_on
|
||||
{% else %}
|
||||
@ -233,11 +233,11 @@ blueprint:
|
||||
entity:
|
||||
- domain: light
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: !input motion_sensor
|
||||
|
||||
action:
|
||||
actions:
|
||||
- action: >
|
||||
{% if trigger.to_state.state == "on" %}
|
||||
light.turn_on
|
||||
|
@ -267,21 +267,21 @@ These work recursively. As an example using `!include_dir_list automation`, will
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Automation 1"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: "home"
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
- alias: "Automation 2"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: "home"
|
||||
action:
|
||||
action: light.turn_off
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
```
|
||||
@ -298,12 +298,12 @@ automation: !include_dir_list automation/presence/
|
||||
|
||||
```yaml
|
||||
alias: "Automation 1"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: "home"
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
```
|
||||
@ -312,12 +312,12 @@ action:
|
||||
|
||||
```yaml
|
||||
alias: "Automation 2"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: "home"
|
||||
action:
|
||||
action: light.turn_off
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
```
|
||||
@ -333,7 +333,7 @@ It is important to note that each file must contain only **one** entry when usin
|
||||
alexa:
|
||||
intents:
|
||||
LocateIntent:
|
||||
action:
|
||||
actions:
|
||||
action: notify.pushover
|
||||
data:
|
||||
message: "Your location has been queried via Alexa."
|
||||
@ -371,7 +371,7 @@ alexa:
|
||||
|
||||
```yaml
|
||||
{% raw %}
|
||||
action:
|
||||
actions:
|
||||
action: notify.pushover
|
||||
data:
|
||||
message: "Your location has been queried via Alexa."
|
||||
@ -408,20 +408,20 @@ speech:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Automation 1"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: "home"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
- alias: "Automation 2"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: "home"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
@ -439,20 +439,20 @@ automation: !include_dir_merge_list automation/
|
||||
|
||||
```yaml
|
||||
- alias: "Automation 1"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: "home"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
- alias: "Automation 2"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: "home"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.entryway
|
||||
|
@ -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_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
|
||||
|
||||
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.
|
||||
|
@ -57,13 +57,13 @@ Scenes can be activated using the action `scene.turn_on` (there is no 'scene.tur
|
||||
```yaml
|
||||
# Example automation
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.sweetheart
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
action:
|
||||
action: scene.turn_on
|
||||
actions:
|
||||
- action: scene.turn_on
|
||||
target:
|
||||
entity_id: scene.romantic
|
||||
```
|
||||
@ -75,13 +75,13 @@ With the `scene.apply` action you are able to apply a scene without first defini
|
||||
```yaml
|
||||
# Example automation
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.sweetheart
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
action:
|
||||
action: scene.apply
|
||||
actions:
|
||||
- action: scene.apply
|
||||
data:
|
||||
entities:
|
||||
light.tv_back_light:
|
||||
@ -90,7 +90,7 @@ automation:
|
||||
light.ceiling: off
|
||||
media_player.sony_bravia_tv:
|
||||
state: "on"
|
||||
source: HDMI 1
|
||||
source: "HDMI 1"
|
||||
```
|
||||
|
||||
## Using scene transitions
|
||||
@ -104,13 +104,13 @@ light will transition to the scene in 2.5 seconds.
|
||||
```yaml
|
||||
# Example automation
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.sweetheart
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
action:
|
||||
action: scene.turn_on
|
||||
actions:
|
||||
- action: scene.turn_on
|
||||
target:
|
||||
entity_id: scene.romantic
|
||||
data:
|
||||
|
@ -146,7 +146,7 @@ The `condition` {% term action %} only stops executing the current sequence bloc
|
||||
|
||||
```yaml
|
||||
- alias: "Check if Paulus ishome AND temperature is below 20"
|
||||
condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
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
|
||||
- alias: "Wait for MY_EVENT or light on"
|
||||
wait_for_trigger:
|
||||
- platform: event
|
||||
- trigger: event
|
||||
event_type: MY_EVENT
|
||||
- platform: state
|
||||
- trigger: state
|
||||
entity_id: light.LIGHT
|
||||
to: "on"
|
||||
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_trigger:
|
||||
- platform: event
|
||||
- trigger: event
|
||||
event_type: ifttt_webhook_received
|
||||
event_data:
|
||||
action: connected_to_network
|
||||
@ -312,7 +312,7 @@ This can be used to take different actions based on whether or not the condition
|
||||
target:
|
||||
entity_id: switch.some_light
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.door_2
|
||||
to: "on"
|
||||
for: 2
|
||||
@ -360,11 +360,11 @@ The following {% term automation %} example shows how to raise a custom event ca
|
||||
|
||||
```yaml
|
||||
- alias: "Fire Event"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: switch.kitchen
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- event: event_light_state_changed
|
||||
event_data:
|
||||
state: "on"
|
||||
@ -376,10 +376,10 @@ The following {% term automation %} example shows how to capture the custom even
|
||||
|
||||
```yaml
|
||||
- alias: "Capture Event"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: event_light_state_changed
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
message: "kitchen light is turned {{ trigger.event.data.state }}"
|
||||
@ -524,16 +524,15 @@ _until_ the condition(s) evaluate to true.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.xyz
|
||||
to: "on"
|
||||
condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.something
|
||||
state: "off"
|
||||
mode: single
|
||||
action:
|
||||
actions:
|
||||
- alias: "Repeat the sequence UNTIL the conditions are true"
|
||||
repeat:
|
||||
sequence:
|
||||
@ -621,12 +620,12 @@ The `choose` {% term action %} can be used like an "if/then/elseif/then.../else"
|
||||
```yaml
|
||||
# Example with "if", "elif" and "else"
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: input_boolean.simulate
|
||||
to: "on"
|
||||
mode: restart
|
||||
action:
|
||||
actions:
|
||||
- choose:
|
||||
# IF morning
|
||||
- conditions:
|
||||
@ -664,10 +663,10 @@ For example:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: input_select.home_mode
|
||||
action:
|
||||
actions:
|
||||
- choose:
|
||||
- conditions: >
|
||||
{{ 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"
|
||||
automation:
|
||||
- alias: "Turn lights on when the sun gets dim and if some room is occupied"
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sun.sun
|
||||
attribute: elevation
|
||||
below: 4
|
||||
action:
|
||||
actions:
|
||||
# This must always apply
|
||||
- action: light.turn_on
|
||||
data:
|
||||
@ -770,11 +769,11 @@ groups themselves. In total, four actions are executed, one after the other.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- alias: "Turn on devices"
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
@ -807,11 +806,11 @@ The following example shows sending messages out at the same time (in parallel):
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
- triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- parallel:
|
||||
- action: notify.person1
|
||||
data:
|
||||
@ -831,7 +830,7 @@ script:
|
||||
- parallel:
|
||||
- sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: "on"
|
||||
- action: notify.person1
|
||||
@ -966,7 +965,7 @@ blueprint:
|
||||
selector:
|
||||
boolean:
|
||||
|
||||
action:
|
||||
actions:
|
||||
- delay: 0:35
|
||||
enabled: !input input_boolean
|
||||
```
|
||||
|
@ -19,8 +19,8 @@ All conditions support an optional `alias`.
|
||||
Test multiple conditions in one condition statement. Passes if all embedded conditions are true.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus home AND temperature below 20"
|
||||
conditions:
|
||||
- alias: "Paulus home AND temperature below 20"
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
@ -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:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
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:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
alias: "Paulus home AND temperature below 20"
|
||||
and:
|
||||
- and:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
@ -66,8 +66,8 @@ condition:
|
||||
Test multiple conditions in one condition statement. Passes if any embedded condition is true.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus home OR temperature below 20"
|
||||
conditions:
|
||||
- alias: "Paulus home OR temperature below 20"
|
||||
condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
@ -81,8 +81,8 @@ condition:
|
||||
The OR condition also has a shorthand form. The following configuration works the same as the one listed above:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus home OR temperature below 20"
|
||||
conditions:
|
||||
- alias: "Paulus home OR temperature below 20"
|
||||
or:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
@ -98,8 +98,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
@ -117,8 +117,8 @@ condition:
|
||||
Or in shorthand form:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
and:
|
||||
conditions:
|
||||
- and:
|
||||
- condition: state
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
@ -136,8 +136,8 @@ condition:
|
||||
Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** true.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus not home AND alarm not disarmed"
|
||||
conditions:
|
||||
- alias: "Paulus not home AND alarm not disarmed"
|
||||
condition: not
|
||||
conditions:
|
||||
- condition: state
|
||||
@ -145,13 +145,13 @@ condition:
|
||||
state: "home"
|
||||
- condition: state
|
||||
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:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
alias: "Paulus not home AND alarm not disarmed"
|
||||
not:
|
||||
- condition: state
|
||||
@ -169,8 +169,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Temperature between 17 and 25 degrees"
|
||||
conditions:
|
||||
- alias: "Temperature between 17 and 25 degrees"
|
||||
condition: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
above: 17
|
||||
@ -182,8 +182,8 @@ You can optionally use a `value_template` to process the value of the state befo
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: numeric_state
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
above: 17
|
||||
below: 25
|
||||
@ -197,8 +197,8 @@ It is also possible to test the condition against multiple entities at once.
|
||||
The condition will pass if **all** entities match the thresholds.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: numeric_state
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id:
|
||||
- sensor.kitchen_temperature
|
||||
- sensor.living_room_temperature
|
||||
@ -209,8 +209,8 @@ Alternatively, the condition can test against a state attribute.
|
||||
The condition will pass if the attribute value of the entity matches the thresholds.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: numeric_state
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: climate.living_room_thermostat
|
||||
attribute: temperature
|
||||
above: 17
|
||||
@ -222,8 +222,8 @@ that contain a numeric value, can be used in the `above` and `below`
|
||||
options to make the condition more dynamic.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: numeric_state
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: climate.living_room_thermostat
|
||||
attribute: temperature
|
||||
above: input_number.temperature_threshold_low
|
||||
@ -235,8 +235,8 @@ condition:
|
||||
Tests if an entity has a specified state.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus not home for an hour and a bit"
|
||||
conditions:
|
||||
- alias: "Paulus not home for an hour and a bit"
|
||||
condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: "not_home"
|
||||
@ -251,8 +251,8 @@ It is also possible to test the condition against multiple entities at once.
|
||||
The condition will pass if **all** entities match the state.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id:
|
||||
- light.kitchen
|
||||
- light.living_room
|
||||
@ -263,8 +263,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id:
|
||||
- binary_sensor.motion_sensor_left
|
||||
- binary_sensor.motion_sensor_right
|
||||
@ -276,8 +276,8 @@ Testing if an entity is matching a set of possible conditions;
|
||||
The condition will pass if the entity matches one of the states given.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: alarm_control_panel.home
|
||||
state:
|
||||
- "armed_away"
|
||||
@ -288,8 +288,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id:
|
||||
- media_player.living_room
|
||||
- media_player.kitchen
|
||||
@ -302,8 +302,8 @@ Alternatively, the condition can test against a state attribute.
|
||||
The condition will pass if the attribute matches the given state.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: climate.living_room_thermostat
|
||||
attribute: fan_mode
|
||||
state: "auto"
|
||||
@ -314,8 +314,8 @@ entities). The condition will pass if the state of the entity matches the state
|
||||
of the given helper entity.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: alarm_control_panel.home
|
||||
state: input_select.guest_mode
|
||||
```
|
||||
@ -325,8 +325,8 @@ You can also use templates in the `for` option.
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: "home"
|
||||
for:
|
||||
@ -345,16 +345,16 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Sun up"
|
||||
conditions:
|
||||
- alias: "Sun up"
|
||||
condition: state # 'day' condition: from sunrise until sunset
|
||||
entity_id: sun.sun
|
||||
state: "above_horizon"
|
||||
```
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Sun down"
|
||||
conditions:
|
||||
- alias: "Sun down"
|
||||
condition: state # from sunset until sunrise
|
||||
entity_id: sun.sun
|
||||
state: "below_horizon"
|
||||
@ -370,8 +370,8 @@ For an in-depth explanation of sun elevation, see [sun elevation trigger][sun_el
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: and # 'twilight' condition: dusk and dawn, in typical locations
|
||||
conditions:
|
||||
- condition: and # 'twilight' condition: dusk and dawn, in typical locations
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ state_attr('sun.sun', 'elevation') < 0 }}"
|
||||
@ -384,7 +384,7 @@ condition:
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
condition: template # 'night' condition: from dusk to dawn, in typical locations
|
||||
value_template: "{{ state_attr('sun.sun', 'elevation') < -6 }}"
|
||||
```
|
||||
@ -405,8 +405,8 @@ The sunset/sunrise conditions do not work in locations inside the polar circles,
|
||||
|
||||
This is an example of 1 hour offset before sunset:
|
||||
```yaml
|
||||
condition:
|
||||
condition: sun
|
||||
conditions:
|
||||
- condition: sun
|
||||
after: sunset
|
||||
after_offset: "-01:00:00"
|
||||
```
|
||||
@ -414,7 +414,7 @@ condition:
|
||||
This is 'when dark' - equivalent to a state condition on `sun.sun` of `below_horizon`:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
- condition: sun
|
||||
after: sunset
|
||||
before: sunrise
|
||||
@ -423,7 +423,7 @@ condition:
|
||||
This is 'when light' - equivalent to a state condition on `sun.sun` of `above_horizon`:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
- condition: sun
|
||||
after: sunrise
|
||||
before: sunset
|
||||
@ -440,8 +440,8 @@ The template condition tests if the [given template][template] renders a value e
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Iphone battery above 50%"
|
||||
conditions:
|
||||
- alias: "Iphone battery above 50%"
|
||||
condition: template
|
||||
value_template: "{{ (state_attr('device_tracker.iphone', 'battery_level')|int) > 50 }}"
|
||||
```
|
||||
@ -487,8 +487,8 @@ and [`not`](#not-condition) conditions:
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: or
|
||||
conditions:
|
||||
- condition: or
|
||||
conditions:
|
||||
- "{{ is_state('device_tracker.iphone', 'away') }}"
|
||||
- condition: numeric_state
|
||||
@ -539,8 +539,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Time 15~02"
|
||||
conditions:
|
||||
- alias: "Time 15~02"
|
||||
condition: time
|
||||
# At least one of the following is required.
|
||||
after: "15:00:00"
|
||||
@ -565,7 +565,7 @@ or another `sensor` entity containing a timestamp with the "timestamp" device
|
||||
class, can be used instead.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
- alias: "Example referencing a time helper"
|
||||
condition: time
|
||||
after: input_datetime.house_silent_hours_start
|
||||
@ -586,29 +586,29 @@ 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`.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: trigger
|
||||
conditions:
|
||||
- condition: trigger
|
||||
id: event_trigger
|
||||
```
|
||||
|
||||
For a trigger identified by its index, both a string and integer is allowed:
|
||||
```yaml
|
||||
condition:
|
||||
condition: trigger
|
||||
conditions:
|
||||
- condition: trigger
|
||||
id: "0"
|
||||
```
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: trigger
|
||||
conditions:
|
||||
- condition: trigger
|
||||
id: 0
|
||||
```
|
||||
|
||||
It is possible to give a list of triggers:
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: trigger
|
||||
conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- event_1_trigger
|
||||
- event_2_trigger
|
||||
@ -619,8 +619,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
alias: "Paulus at home"
|
||||
conditions:
|
||||
- alias: "Paulus at home"
|
||||
condition: zone
|
||||
entity_id: device_tracker.paulus
|
||||
zone: zone.home
|
||||
@ -630,8 +630,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: zone
|
||||
conditions:
|
||||
- condition: zone
|
||||
entity_id:
|
||||
- device_tracker.frenck
|
||||
- device_tracker.daphne
|
||||
@ -642,8 +642,8 @@ Testing if an entity is matching a set of possible zones;
|
||||
The condition will pass if the entity is in one of the zones.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: zone
|
||||
conditions:
|
||||
- condition: zone
|
||||
entity_id: device_tracker.paulus
|
||||
state:
|
||||
- zone.home
|
||||
@ -655,7 +655,7 @@ both entities need to be either in the home or the work zone for the condition
|
||||
to pass.
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
condition: zone
|
||||
entity_id:
|
||||
- device_tracker.frenck
|
||||
@ -670,7 +670,7 @@ condition:
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: sun.sun
|
||||
value_template: "{{ state.attributes.elevation }}"
|
||||
@ -700,8 +700,8 @@ For example:
|
||||
|
||||
```yaml
|
||||
# This condition will always pass, as it is disabled.
|
||||
condition:
|
||||
enabled: false
|
||||
conditions:
|
||||
- enabled: false
|
||||
condition: state
|
||||
entity_id: sun.sun
|
||||
state: "above_horizon"
|
||||
@ -728,7 +728,7 @@ blueprint:
|
||||
trigger_variables:
|
||||
_enable_number: !input input_number
|
||||
|
||||
condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: "above_horizon"
|
||||
|
@ -19,7 +19,8 @@ Perform the action `homeassistant.turn_on` on the {% term entity %} `group.livin
|
||||
|
||||
```yaml
|
||||
action: homeassistant.turn_on
|
||||
entity_id: group.living_room
|
||||
target:
|
||||
entity_id: group.living_room
|
||||
```
|
||||
|
||||
### Targeting areas and devices
|
||||
@ -51,7 +52,8 @@ You can also specify other parameters beside the entity to target. For example,
|
||||
|
||||
```yaml
|
||||
action: light.turn_on
|
||||
entity_id: group.living_room
|
||||
target:
|
||||
entity_id: group.living_room
|
||||
data:
|
||||
brightness: 120
|
||||
rgb_color: [255, 0, 0]
|
||||
|
@ -104,10 +104,10 @@ If there is an automation that handles that event, it will be automatically trig
|
||||
|
||||
```yaml
|
||||
- alias: "Capture Event"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: event_light_state_changed
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
message: "Light is turned {{ trigger.event.data.state }}"
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -8,6 +8,7 @@ ha_category:
|
||||
- Light
|
||||
- Sensor
|
||||
- Switch
|
||||
- Valve
|
||||
ha_release: '0.60'
|
||||
ha_iot_class: Local Push
|
||||
ha_domain: ads
|
||||
@ -15,12 +16,16 @@ ha_platforms:
|
||||
- binary_sensor
|
||||
- cover
|
||||
- light
|
||||
- select
|
||||
- sensor
|
||||
- switch
|
||||
- valve
|
||||
ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
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.
|
||||
@ -32,7 +37,10 @@ There is currently support for the following device types within Home Assistant:
|
||||
- [Sensor](#sensor)
|
||||
- [Switch](#switch)
|
||||
- [Cover](#cover)
|
||||
- [Select](#select)
|
||||
- [Valve](#valve)
|
||||
|
||||
<!-- omit in toc -->
|
||||
## Configuration
|
||||
|
||||
To enable ADS, add the following lines to your {% term "`configuration.yaml`" %} file.
|
||||
@ -60,6 +68,7 @@ ip_address:
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
<!-- omit in toc -->
|
||||
## Action
|
||||
|
||||
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
|
||||
|
||||
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`" %}
|
||||
file:
|
||||
@ -160,7 +169,7 @@ adsvar:
|
||||
type: string
|
||||
adstype:
|
||||
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
|
||||
type: string
|
||||
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.
|
||||
type: device_class
|
||||
{% 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 %}
|
||||
|
@ -4,6 +4,7 @@ description: Instructions on how to setup AirGradient devices in Home Assistant.
|
||||
ha_category:
|
||||
- Health
|
||||
- Sensor
|
||||
- Update
|
||||
ha_config_flow: true
|
||||
ha_release: 2024.6
|
||||
ha_iot_class: Local Polling
|
||||
|
@ -10,6 +10,7 @@ ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
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.
|
||||
|
||||
## 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.
|
||||
{% include integrations/restart_ha_after_config_inclusion.md %}
|
||||
|
@ -285,12 +285,12 @@ but you will still receive the done message.
|
||||
|
||||
```yaml
|
||||
- alias: "Telegram callback to stop alerts for garage door"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: telegram_callback
|
||||
event_data:
|
||||
data: "/garage_acknowledge"
|
||||
action:
|
||||
actions:
|
||||
- action: alert.turn_off
|
||||
target:
|
||||
entity_id: alert.garage_door
|
||||
|
@ -11,7 +11,7 @@ ha_codeowners:
|
||||
- '@ochlocracy'
|
||||
- '@jbouwh'
|
||||
ha_domain: alexa
|
||||
ha_integration_type: integration
|
||||
ha_integration_type: system
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
---
|
||||
|
@ -54,7 +54,7 @@ profile_name:
|
||||
region_name:
|
||||
description: The region identifier to connect to.
|
||||
required: false
|
||||
type: [string, list]
|
||||
type: string
|
||||
default: us-east-1
|
||||
text_type:
|
||||
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
|
||||
default: 22050 for MP3 and Ogg Vorbis, 16000 for pcm
|
||||
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
|
||||
type: string
|
||||
default: standard
|
||||
@ -127,6 +127,21 @@ Say with break:
|
||||
Amazon Polly
|
||||
</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
|
||||
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:
|
||||
|
||||
|
@ -434,16 +434,16 @@ Using this {% term trigger %} in an {% term automation %} will allow you to dete
|
||||
|
||||
```yaml
|
||||
# Example automations.yaml entry
|
||||
alias: Doorbell Pressed
|
||||
alias: "Doorbell Pressed"
|
||||
description: "Trigger when Amcrest Button Press Event Fires"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: amcrest
|
||||
event_data:
|
||||
event: "CallNoAnswered"
|
||||
payload:
|
||||
action: "Start"
|
||||
action:
|
||||
actions:
|
||||
- type: flash
|
||||
entity_id: light.living_room
|
||||
domain: light
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -146,8 +146,8 @@ 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:
|
||||
|
||||
```yaml
|
||||
action:
|
||||
action: androidtv.adb_command
|
||||
actions:
|
||||
- action: androidtv.adb_command
|
||||
target:
|
||||
entity_id: media_player.androidtv_tv_living_room
|
||||
data:
|
||||
|
20
source/_integrations/aps.markdown
Normal file
20
source/_integrations/aps.markdown
Normal 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 %}
|
24
source/_integrations/aqara.markdown
Normal file
24
source/_integrations/aqara.markdown
Normal 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/)
|
@ -9,7 +9,7 @@ ha_codeowners:
|
||||
- '@balloob'
|
||||
- '@synesthesiam'
|
||||
ha_domain: assist_pipeline
|
||||
ha_integration_type: integration
|
||||
ha_integration_type: system
|
||||
ha_quality_scale: internal
|
||||
ha_platforms:
|
||||
- select
|
||||
|
45
source/_integrations/assist_satellite.markdown
Normal file
45
source/_integrations/assist_satellite.markdown
Normal 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
|
||||
```
|
@ -42,9 +42,18 @@ These sensors are automatically created and associated to the router device:
|
||||
- Upload sensor (unit_of_measurement: Gigabyte - *Daily accumulation*)
|
||||
- Upload Speed sensor (unit_of_measurement: Mbit/s)
|
||||
- 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 %}
|
||||
{% configuration_basic %}
|
||||
|
@ -147,17 +147,17 @@ Using the lock operation sensors, you can detect when a user operates a lock and
|
||||
- id: "1583706446906"
|
||||
alias: "joe_doe_front_door_operate"
|
||||
description: John Doe locks or unlocks the Front Door
|
||||
trigger:
|
||||
- entity_id: sensor.front_door_operator
|
||||
platform: state
|
||||
to: John Doe
|
||||
condition:
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.front_door_operator
|
||||
to: "John Doe"
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ not state_attr('sensor.front_door_operator', 'remote') }}"
|
||||
action:
|
||||
- data: {}
|
||||
actions:
|
||||
- action: camera.turn_off
|
||||
entity_id: camera.inside
|
||||
action: camera.turn_off
|
||||
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -41,3 +41,16 @@ Gain insight into how much energy an inverter produces. The integration will cre
|
||||
|
||||
- AC output power (W)
|
||||
- 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)
|
||||
|
@ -34,3 +34,4 @@ This integration provides a sensor for Azure DevOps:
|
||||
- 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 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.
|
||||
|
@ -81,11 +81,11 @@ See the example below for how an automation trigger translates to a message on t
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Sunset Service Bus message"
|
||||
trigger:
|
||||
platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
action:
|
||||
action: notify.test_queue
|
||||
actions:
|
||||
- action: notify.test_queue
|
||||
data:
|
||||
message: "Sun is going down"
|
||||
title: "Good evening"
|
||||
|
@ -51,11 +51,11 @@ at 3 AM:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Backup Home Assistant every night at 3 AM"
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "03:00:00"
|
||||
action:
|
||||
alias: "Create backup now"
|
||||
actions:
|
||||
- alias: "Create backup now"
|
||||
action: backup.create
|
||||
```
|
||||
|
||||
|
@ -125,6 +125,10 @@ observations:
|
||||
|
||||
## 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.
|
||||
|
||||
```yaml
|
||||
@ -163,6 +167,8 @@ binary_sensor:
|
||||
to_state: "ac"
|
||||
```
|
||||
|
||||
### Numeric State
|
||||
|
||||
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`.
|
||||
|
||||
@ -181,7 +187,9 @@ binary_sensor:
|
||||
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 %}
|
||||
|
||||
@ -202,3 +210,66 @@ binary_sensor:
|
||||
```
|
||||
|
||||
{% 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`.
|
||||
|
@ -39,16 +39,16 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
|
||||
```yaml
|
||||
- alias: "If there is motion and it's dark turn on the gateway light"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
|
||||
from: "off"
|
||||
to: "on"
|
||||
condition:
|
||||
condition: numeric_state
|
||||
conditions:
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.illumination_34ce00xxxx11
|
||||
below: 300
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_34ce00xxxx11
|
||||
@ -58,14 +58,14 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
target:
|
||||
entity_id: automation.MOTION_OFF
|
||||
- alias: "If there no motion for 5 minutes turn off the gateway light"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
|
||||
from: "on"
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 5
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.gateway_light_34ce00xxxx11
|
||||
@ -78,42 +78,42 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
|
||||
```yaml
|
||||
- alias: "If the window is open turn off the radiator"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
action: climate.set_operation_mode
|
||||
actions:
|
||||
- action: climate.set_operation_mode
|
||||
target:
|
||||
entity_id: climate.livingroom
|
||||
data:
|
||||
operation_mode: "Off"
|
||||
- alias: "If the window is closed for 5 minutes turn on the radiator again"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
|
||||
from: "on"
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 5
|
||||
action:
|
||||
action: climate.set_operation_mode
|
||||
actions:
|
||||
- action: climate.set_operation_mode
|
||||
target:
|
||||
entity_id: climate.livingroom
|
||||
data:
|
||||
operation_mode: "Smart schedule"
|
||||
- alias: "Notify if door is opened when away"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.door_window_sensor_15xxxxxxc9xx6b
|
||||
from: "off"
|
||||
to: "on"
|
||||
condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: "not_home"
|
||||
action:
|
||||
actions:
|
||||
- action: notify.notify_person
|
||||
data:
|
||||
message: "The door has been opened"
|
||||
@ -123,16 +123,16 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
|
||||
```yaml
|
||||
- alias: "Send notification on fire alarm"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.smoke_sensor_158d0001574899
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: notify.html5
|
||||
data:
|
||||
title: Fire alarm!
|
||||
message: Fire/Smoke detected!
|
||||
title: "Fire alarm!"
|
||||
message: "Fire/Smoke detected!"
|
||||
- action: xiaomi_aqara.play_ringtone
|
||||
data:
|
||||
gw_mac: xxxxxxxxxxxx
|
||||
@ -146,15 +146,15 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
|
||||
```yaml
|
||||
- alias: "Send notification on gas alarm"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: notify.html5
|
||||
data:
|
||||
title: Gas alarm!
|
||||
title: "Gas alarm!"
|
||||
message: "Gas with a density of {{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }} detected."
|
||||
```
|
||||
|
||||
@ -166,36 +166,36 @@ As indicated in the table on top of this page there are 3 versions of the button
|
||||
|
||||
```yaml
|
||||
- alias: "Toggle dining light on single press"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.switch_158d000xxxxxc2
|
||||
click_type: single
|
||||
action:
|
||||
action: switch.toggle
|
||||
actions:
|
||||
- action: switch.toggle
|
||||
target:
|
||||
entity_id: switch.wall_switch_left_158d000xxxxx01
|
||||
- alias: "Toggle couch light on double click"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.switch_158d000xxxxxc2
|
||||
click_type: double
|
||||
action:
|
||||
action: switch.toggle
|
||||
actions:
|
||||
- action: switch.toggle
|
||||
target:
|
||||
entity_id: switch.wall_switch_right_158d000xxxxx01
|
||||
- alias: "Let a dog bark on long press"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.switch_158d000xxxxxc2
|
||||
click_type: long_click_press
|
||||
action:
|
||||
action: xiaomi_aqara.play_ringtone
|
||||
actions:
|
||||
- action: xiaomi_aqara.play_ringtone
|
||||
data:
|
||||
gw_mac: xxxxxxxxxxxx
|
||||
ringtone_id: 8
|
||||
@ -208,65 +208,65 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi
|
||||
|
||||
```yaml
|
||||
- alias: "Cube event flip90"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_15xxxxxxxxxxxx
|
||||
action_type: flip90
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_28xxxxxxxxxx
|
||||
data:
|
||||
color_name: "springgreen"
|
||||
- alias: "Cube event flip180"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_15xxxxxxxxxxxx
|
||||
action_type: flip180
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_28xxxxxxxxxx
|
||||
data:
|
||||
color_name: "darkviolet"
|
||||
- alias: "Cube event move"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_15xxxxxxxxxxxx
|
||||
action_type: move
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_28xxxxxxxxxx
|
||||
data:
|
||||
color_name: "gold"
|
||||
- alias: "Cube event tap_twice"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_15xxxxxxxxxxxx
|
||||
action_type: tap_twice
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_28xxxxxxxxxx
|
||||
data:
|
||||
color_name: "deepskyblue"
|
||||
- alias: "Cube event shake_air"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.cube_action
|
||||
event_data:
|
||||
entity_id: binary_sensor.cube_15xxxxxxxxxxxx
|
||||
action_type: shake_air
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_28xxxxxxxxxx
|
||||
@ -282,14 +282,14 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac
|
||||
|
||||
```yaml
|
||||
- alias: "Decrease brightness of the gateway light"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12
|
||||
click_type: single
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_34xxxxxxxx13
|
||||
data:
|
||||
@ -305,14 +305,14 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac
|
||||
{% endif %}
|
||||
|
||||
- alias: "Increase brightness of the gateway light"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12
|
||||
click_type: single
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.gateway_light_34xxxxxxxx13
|
||||
data:
|
||||
@ -328,14 +328,14 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac
|
||||
{% endif %}
|
||||
|
||||
- alias: "Turn off the gateway light"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.click
|
||||
event_data:
|
||||
entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12
|
||||
click_type: both
|
||||
action:
|
||||
action: light.turn_off
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.gateway_light_34xxxxxxxx13
|
||||
```
|
||||
@ -348,25 +348,25 @@ This automation toggles the living room lamp on vibration/tilt.
|
||||
|
||||
```yaml
|
||||
- alias: "Turn on Living Room Lamp on vibration"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.movement
|
||||
event_data:
|
||||
entity_id: binary_sensor.vibration_xxxx000000
|
||||
movement_type: vibrate
|
||||
action:
|
||||
action: light.toggle
|
||||
actions:
|
||||
- action: light.toggle
|
||||
target:
|
||||
entity_id: light.living_room_lamp
|
||||
- alias: "Turn on Living Room Lamp on tilt"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: xiaomi_aqara.movement
|
||||
event_data:
|
||||
entity_id: binary_sensor.vibration_xxxx000000
|
||||
movement_type: tilt
|
||||
action:
|
||||
action: light.toggle
|
||||
actions:
|
||||
- action: light.toggle
|
||||
target:
|
||||
entity_id: light.living_room_lamp
|
||||
```
|
||||
|
@ -133,14 +133,13 @@ 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.
|
||||
|
||||
```yaml
|
||||
- id: arm_blink_when_away
|
||||
alias: "Arm Blink When Away"
|
||||
trigger:
|
||||
platform: state
|
||||
- alias: "Arm Blink When Away"
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: all
|
||||
to: "not_home"
|
||||
action:
|
||||
action: alarm_control_panel.alarm_arm_away
|
||||
actions:
|
||||
- action: alarm_control_panel.alarm_arm_away
|
||||
target:
|
||||
entity_id: alarm_control_panel.blink_my_sync_module
|
||||
```
|
||||
@ -150,14 +149,13 @@ 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.
|
||||
|
||||
```yaml
|
||||
- id: disarm_blink_when_home
|
||||
alias: "Disarm Blink When Home"
|
||||
trigger:
|
||||
platform: state
|
||||
- alias: "Disarm Blink When Home"
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: all
|
||||
to: "home"
|
||||
action:
|
||||
action: alarm_control_panel.alarm_disarm
|
||||
actions:
|
||||
- action: alarm_control_panel.alarm_disarm
|
||||
target:
|
||||
entity_id: alarm_control_panel.blink_my_sync_module
|
||||
```
|
||||
@ -171,13 +169,12 @@ The following example assumes your camera's name (in the Blink app) is `My Camer
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- id: save_blink_video_on_motion
|
||||
alias: "Save Blink Video on Motion"
|
||||
trigger:
|
||||
platform: state
|
||||
- alias: "Save Blink Video on Motion"
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.blink_my_camera_motion_detected
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: blink.save_video
|
||||
target:
|
||||
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.
|
||||
|
||||
```yaml
|
||||
- id: save_recent_clips_from_my_camera
|
||||
alias: "Save Recent Clips from My Camera"
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
- alias: "Save Recent Clips from My Camera"
|
||||
triggers:
|
||||
- trigger: time_pattern
|
||||
minutes: /3
|
||||
action:
|
||||
actions:
|
||||
- action: blink.save_recent_clips
|
||||
target:
|
||||
entity_id: camera.my_camera
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -79,8 +79,8 @@ The name of the action is `notify.bmw_connected_drive_<your_vehicle>`.
|
||||
|
||||
```yaml
|
||||
...
|
||||
action:
|
||||
action: notify.bmw_connected_drive_<your_vehicle>
|
||||
actions:
|
||||
- action: notify.bmw_connected_drive_<your_vehicle>
|
||||
data:
|
||||
message: The name of the POI # this is shown on the iDrive dashboard
|
||||
data:
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -12,6 +12,8 @@ ha_codeowners:
|
||||
ha_domain: bring
|
||||
ha_integration_type: service
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
- todo
|
||||
related:
|
||||
- docs: /integrations/todo
|
||||
@ -30,6 +32,13 @@ For authentication, the integration requires the `email` and `password` you used
|
||||
|
||||
{% 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
|
||||
|
||||
You can use the actions from the [to-do list](/integrations/todo/) to create, update, or delete items on your Bring! shopping lists.
|
||||
@ -57,8 +66,8 @@ The **Bring** integration offers an action to send push notifications to the Bri
|
||||
|
||||
```yaml
|
||||
...
|
||||
action:
|
||||
action: bring.send_message
|
||||
actions:
|
||||
- action: bring.send_message
|
||||
target:
|
||||
entity_id: todo.bring_shoppinglist
|
||||
data:
|
||||
@ -71,8 +80,8 @@ Note that for the notification type `urgent_message` the attribute `item` is **r
|
||||
|
||||
```yaml
|
||||
...
|
||||
action:
|
||||
action: bring.send_message
|
||||
actions:
|
||||
- action: bring.send_message
|
||||
target:
|
||||
entity_id: todo.bring_shoppinglist
|
||||
data:
|
||||
|
@ -3,6 +3,7 @@ title: BSB-Lan
|
||||
description: Instructions on how to integrate BSBLan device into Home Assistant.
|
||||
ha_category:
|
||||
- Climate
|
||||
- Sensor
|
||||
ha_release: '0.110'
|
||||
ha_iot_class: Local Polling
|
||||
ha_config_flow: true
|
||||
@ -12,31 +13,32 @@ ha_domain: bsblan
|
||||
ha_platforms:
|
||||
- climate
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: device
|
||||
---
|
||||
|
||||
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 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.
|
||||
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)
|
||||
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 %},
|
||||
For authentication HTTP authentication using a username and password,
|
||||
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)
|
||||
- [`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)
|
||||
[Supported heating systems](https://docs.bsb-lan.de/supported_heating_systems.html)
|
||||
|
||||
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.
|
||||
Please use the latest release. [release 1.0](https://github.com/fredlcore/BSB-LAN/releases/tag/v1.0)
|
||||
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 this release. [release 3.1](https://github.com/fredlcore/BSB-LAN/releases/tag/v3.1)
|
||||
|
@ -8,6 +8,7 @@ ha_release: 2022.9
|
||||
ha_iot_class: Local Push
|
||||
ha_codeowners:
|
||||
- '@Ernst79'
|
||||
- '@thecode'
|
||||
ha_domain: bthome
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
|
@ -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:
|
||||
|
||||
```yaml
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: button.my_button
|
||||
action:
|
||||
actions:
|
||||
- action: notify.frenck
|
||||
data:
|
||||
message: "My button has been pressed!"
|
||||
|
@ -63,8 +63,8 @@ An example of a calendar {% term trigger %} in YAML:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- trigger:
|
||||
- platform: calendar
|
||||
- triggers:
|
||||
- trigger: calendar
|
||||
# Possible values: start, end
|
||||
event: start
|
||||
# The calendar entity_id
|
||||
@ -98,12 +98,12 @@ This example automation consists of:
|
||||
{% raw %}
|
||||
```yaml
|
||||
automation:
|
||||
- alias: Calendar notification
|
||||
trigger:
|
||||
- platform: calendar
|
||||
- alias: "Calendar notification"
|
||||
triggers:
|
||||
- trigger: calendar
|
||||
event: start
|
||||
entity_id: calendar.personal
|
||||
action:
|
||||
actions:
|
||||
- action: persistent_notification.create
|
||||
data:
|
||||
message: >-
|
||||
@ -125,25 +125,27 @@ This example consists of:
|
||||
{% raw %}
|
||||
```yaml
|
||||
automation:
|
||||
- alias: Front Light Schedule
|
||||
trigger:
|
||||
- platform: calendar
|
||||
- alias: "Front Light Schedule"
|
||||
triggers:
|
||||
- trigger: calendar
|
||||
event: start
|
||||
entity_id: calendar.device_automation
|
||||
- platform: calendar
|
||||
- trigger: calendar
|
||||
event: end
|
||||
entity_id: calendar.device_automation
|
||||
condition:
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ 'Front Lights' in trigger.calendar_event.summary }}"
|
||||
action:
|
||||
actions:
|
||||
- if:
|
||||
- "{{ trigger.event == 'start' }}"
|
||||
then:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.front
|
||||
else:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.front
|
||||
```
|
||||
{% endraw %}
|
||||
|
66
source/_integrations/cambridge_audio.markdown
Normal file
66
source/_integrations/cambridge_audio.markdown
Normal 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**.
|
@ -74,8 +74,8 @@ 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.
|
||||
|
||||
```yaml
|
||||
action:
|
||||
action: camera.play_stream
|
||||
actions:
|
||||
- action: camera.play_stream
|
||||
target:
|
||||
entity_id: camera.yourcamera
|
||||
data:
|
||||
@ -102,8 +102,8 @@ For example, the following action in an automation would take a recording from "
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
action:
|
||||
action: camera.record
|
||||
actions:
|
||||
- action: camera.record
|
||||
target:
|
||||
entity_id: camera.yourcamera
|
||||
data:
|
||||
@ -128,8 +128,8 @@ For example, the following action in an automation would take a snapshot from "y
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
action:
|
||||
action: camera.snapshot
|
||||
actions:
|
||||
- action: camera.snapshot
|
||||
target:
|
||||
entity_id: camera.yourcamera
|
||||
data:
|
||||
|
@ -39,11 +39,11 @@ Home Assistant has its own Cast application to show the Home Assistant UI on any
|
||||
cast_downstairs_on_kitchen:
|
||||
alias: "Show Downstairs on kitchen"
|
||||
sequence:
|
||||
- data:
|
||||
- action: cast.show_lovelace_view
|
||||
data:
|
||||
dashboard_path: lovelace-cast
|
||||
entity_id: media_player.kitchen
|
||||
view_path: downstairs
|
||||
action: cast.show_lovelace_view
|
||||
```
|
||||
|
||||
{% important %}
|
||||
@ -242,7 +242,8 @@ Optional:
|
||||
'cast_bubbleupnp_to_my_chromecast':
|
||||
alias: "Cast a video to My Chromecast using BubbleUPNP"
|
||||
sequence:
|
||||
- target:
|
||||
- action: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.my_chromecast
|
||||
data:
|
||||
media_content_type: cast
|
||||
@ -252,7 +253,6 @@ Optional:
|
||||
"media_id": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
|
||||
"media_type": "video/mp4"
|
||||
}'
|
||||
action: media_player.play_media
|
||||
```
|
||||
|
||||
### [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':
|
||||
alias: "Cast NRK Radio to Chromecast"
|
||||
sequence:
|
||||
- target:
|
||||
- action: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.chromecast
|
||||
data:
|
||||
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",
|
||||
"media_id": "l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314"
|
||||
}'
|
||||
action: media_player.play_media
|
||||
```
|
||||
|
||||
### [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':
|
||||
alias: "Cast NRK TV to Chromecast"
|
||||
sequence:
|
||||
- target:
|
||||
- action: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.chromecast
|
||||
data:
|
||||
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",
|
||||
"media_id": "OUHA43000207"
|
||||
}'
|
||||
action: media_player.play_media
|
||||
```
|
||||
|
||||
### Plex
|
||||
@ -367,7 +367,8 @@ Example values to cast the item at <https://www.supla.fi/audio/3601824>
|
||||
'cast_supla_to_my_chromecast':
|
||||
alias: "Cast supla to My Chromecast"
|
||||
sequence:
|
||||
- target:
|
||||
- action: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.my_chromecast
|
||||
data:
|
||||
media_content_type: cast
|
||||
@ -376,7 +377,6 @@ Example values to cast the item at <https://www.supla.fi/audio/3601824>
|
||||
"app_name": "supla",
|
||||
"media_id": "3601824"
|
||||
}'
|
||||
action: media_player.play_media
|
||||
```
|
||||
|
||||
### YouTube
|
||||
@ -399,7 +399,8 @@ Optional:
|
||||
'cast_youtube_to_my_chromecast':
|
||||
alias: "Cast YouTube to My Chromecast"
|
||||
sequence:
|
||||
- target:
|
||||
- action: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.my_chromecast
|
||||
data:
|
||||
media_content_type: cast
|
||||
@ -408,7 +409,6 @@ Optional:
|
||||
"app_name": "youtube",
|
||||
"media_id": "dQw4w9WgXcQ"
|
||||
}'
|
||||
action: media_player.play_media
|
||||
```
|
||||
|
||||
## Troubleshooting automatic discovery
|
||||
|
@ -65,11 +65,11 @@ Here are the automations for the above screenshot:
|
||||
# Rich Text Example 1.
|
||||
# Show a one line message with a red banner
|
||||
- alias: "Notify On Build Failing"
|
||||
trigger:
|
||||
- platform: webhook
|
||||
triggers:
|
||||
- trigger: webhook
|
||||
webhook_id: build_failed
|
||||
action:
|
||||
action: notify.cisco_webex_teams_notify
|
||||
actions:
|
||||
- action: notify.cisco_webex_teams_notify
|
||||
data:
|
||||
message: "<blockquote class=danger>Build 0.89.5 compile failed."
|
||||
|
||||
@ -78,11 +78,11 @@ Here are the automations for the above screenshot:
|
||||
# Show a title and multi-line message with a yellow banner,
|
||||
# with lists, a person mention and a link
|
||||
- alias: "Notify On Build Unstable"
|
||||
trigger:
|
||||
- platform: webhook
|
||||
triggers:
|
||||
- trigger: webhook
|
||||
webhook_id: build_unstable
|
||||
action:
|
||||
action: notify.cisco_webex_teams_notify
|
||||
actions:
|
||||
- action: notify.cisco_webex_teams_notify
|
||||
data:
|
||||
title: "<strong>Build 0.89.6 is unstable.</strong>"
|
||||
message: "<blockquote class=warning>Version 0.89.6 failed verifications.
|
||||
@ -101,11 +101,11 @@ Here are the automations for the above screenshot:
|
||||
# Show a title and multi-line message with a blue banner,
|
||||
# with lists, a person mention and a link
|
||||
- alias: "Notify On Build Passing"
|
||||
trigger:
|
||||
- platform: webhook
|
||||
triggers:
|
||||
- trigger: webhook
|
||||
webhook_id: build_passed
|
||||
action:
|
||||
action: notify.cisco_webex_teams_notify
|
||||
actions:
|
||||
- action: notify.cisco_webex_teams_notify
|
||||
data:
|
||||
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.
|
||||
|
@ -61,10 +61,10 @@ ClickSend is a notify platform and thus can be controlled by calling the notify
|
||||
|
||||
```yaml
|
||||
alias: "The sun has set"
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
action:
|
||||
actions:
|
||||
- action: notify.clicksend_tts
|
||||
data:
|
||||
message: "The sun has set"
|
||||
|
@ -52,10 +52,10 @@ Turn auxiliary heater on/off for climate device
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_aux_heat
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -78,10 +78,10 @@ reflecting a situation where the climate device is set to save energy. For examp
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_preset_mode
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -106,10 +106,10 @@ Set target temperature of climate device
|
||||
```yaml
|
||||
### Set temperature to 24 in heat mode
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_temperature
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -121,10 +121,10 @@ automation:
|
||||
```yaml
|
||||
### Set temperature range to 20 to 24 in heat_cool mode
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_temperature
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -147,10 +147,10 @@ Set target humidity of climate device
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_humidity
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -171,10 +171,10 @@ Set fan operation for climate device
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_fan_mode
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -195,10 +195,10 @@ Set climate device's HVAC mode
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_hvac_mode
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
@ -219,10 +219,10 @@ Set swing operation mode for climate device
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: climate.set_swing_mode
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
|
@ -54,11 +54,11 @@ Example usage in an {% term automation %}, taking the album art present on a Chr
|
||||
#automation.yaml
|
||||
- alias: "Chromecast to Shelf Lights"
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: media_player.chromecast
|
||||
|
||||
action:
|
||||
actions:
|
||||
- action: color_extractor.turn_on
|
||||
data_template:
|
||||
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
|
||||
- alias: "Nicer Chromecast to Shelf Lights"
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: media_player.chromecast
|
||||
|
||||
action:
|
||||
actions:
|
||||
- action: color_extractor.turn_on
|
||||
data_template:
|
||||
color_extract_url: "{{ states.media_player.chromecast.attributes.entity_picture }}"
|
||||
|
@ -17,6 +17,7 @@ ha_codeowners:
|
||||
ha_iot_class: Local Polling
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
- binary_sensor
|
||||
- climate
|
||||
- cover
|
||||
- humidifier
|
||||
@ -38,4 +39,4 @@ There is support for the following platform types within Home Assistant:
|
||||
|
||||
## 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.
|
||||
|
@ -147,15 +147,14 @@ system_log:
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
automation:
|
||||
- id: 'errorcounterautomation'
|
||||
alias: "Error Counting Automation"
|
||||
trigger:
|
||||
platform: event
|
||||
- alias: "Error Counting Automation"
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: system_log_event
|
||||
event_data:
|
||||
level: ERROR
|
||||
action:
|
||||
action: counter.increment
|
||||
actions:
|
||||
- action: counter.increment
|
||||
target:
|
||||
entity_id: counter.error_counter
|
||||
|
||||
|
@ -75,10 +75,10 @@ Available actions: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`,
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: cover.open_cover
|
||||
target:
|
||||
entity_id: cover.demo
|
||||
@ -97,10 +97,10 @@ Set cover position of one or multiple covers.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: cover.set_cover_position
|
||||
target:
|
||||
entity_id: cover.demo
|
||||
@ -121,10 +121,10 @@ Set cover tilt position of one or multiple covers.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: cover.set_cover_tilt_position
|
||||
target:
|
||||
entity_id: cover.demo
|
||||
|
@ -291,11 +291,11 @@ script:
|
||||
|
||||
automation:
|
||||
- alias: "Close covers at night"
|
||||
trigger:
|
||||
- platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
offset: "+00:30:00"
|
||||
action:
|
||||
actions:
|
||||
- action: cover.set_cover_position
|
||||
target:
|
||||
entity_id: cover.cover_group
|
||||
|
36
source/_integrations/deako.markdown
Normal file
36
source/_integrations/deako.markdown
Normal 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
|
||||
|
@ -194,26 +194,26 @@ If you have a Zigbee remote that is not yet supported you can request support fo
|
||||
automation:
|
||||
- alias: "'Toggle lamp from dimmer'"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: deconz_event
|
||||
event_data:
|
||||
id: remote_control_1
|
||||
event: 1002
|
||||
action:
|
||||
actions:
|
||||
- action: light.toggle
|
||||
target:
|
||||
entity_id: light.lamp
|
||||
|
||||
- alias: "Increase brightness of lamp from dimmer"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: deconz_event
|
||||
event_data:
|
||||
id: remote_control_1
|
||||
event: 2002
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.lamp
|
||||
@ -224,13 +224,13 @@ automation:
|
||||
|
||||
- alias: "Decrease brightness of lamp from dimmer"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: deconz_event
|
||||
event_data:
|
||||
id: remote_control_1
|
||||
event: 3002
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.lamp
|
||||
@ -241,13 +241,13 @@ automation:
|
||||
|
||||
- alias: 'Turn lamp on when turning cube clockwise'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: deconz_event
|
||||
event_data:
|
||||
id: remote_control_1
|
||||
gesture: 7
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.lamp
|
||||
@ -262,13 +262,13 @@ automation:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "React to color wheel changes"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: deconz_event
|
||||
event_data:
|
||||
id: tint_remote_1
|
||||
event: 6002
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
xy_color:
|
||||
@ -287,12 +287,11 @@ Note: Requires `on: true` to change color while the Philips Hue bulb is off. If
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Flash Hue Bulb with Doorbell Motion"
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.doorbell_motion
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: deconz.configure
|
||||
data:
|
||||
entity: light.hue_lamp
|
||||
|
@ -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
|
||||
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 %}
|
||||
{% configuration_basic %}
|
||||
|
@ -20,14 +20,13 @@ Device automations are meant to be configured via the UI.
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
- id: "123456789"
|
||||
alias: "Light turns off"
|
||||
trigger:
|
||||
- platform: device
|
||||
- alias: "Light turns off"
|
||||
triggers:
|
||||
- trigger: device
|
||||
device_id: 7a92d5ee74014a0b86903fc669b0bcd6
|
||||
domain: light
|
||||
type: turn_off
|
||||
entity_id: light.bowl
|
||||
action:
|
||||
actions:
|
||||
- action: camera.turn_off
|
||||
```
|
||||
|
@ -77,6 +77,9 @@ Currently the following device types within Home Assistant are supported.
|
||||
- PLC PHY rates
|
||||
- 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.
|
||||
- Last restart of the device
|
||||
- Updates every 15 seconds
|
||||
- Is disabled by default because it's of lower interest to most users.
|
||||
|
||||
### Switch
|
||||
|
||||
|
@ -44,17 +44,17 @@ If you have a sensor session running, and once you have enabled the Dexcom integ
|
||||
## Example automation
|
||||
|
||||
```yaml
|
||||
- id: '1234567890123'
|
||||
alias: "overnight_low_kitchen_lights"
|
||||
description: Turn on the lights in the kitchen if my blood sugar drops low overnight
|
||||
trigger:
|
||||
- below: '65'
|
||||
- alias: "Overnight low kitchen lights"
|
||||
description: "Turn on the lights in the kitchen if my blood sugar drops low overnight"
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.dexcom_YOUR_USERNAME_glucose_value
|
||||
platform: numeric_state
|
||||
condition: time
|
||||
below: 65
|
||||
conditions:
|
||||
- condition: time
|
||||
after: "22:00:00"
|
||||
before: "06:00:00"
|
||||
action:
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.kitchen
|
||||
|
@ -108,7 +108,7 @@ intent_script:
|
||||
TurnLights:
|
||||
speech:
|
||||
text: Turning {{ Room }} lights {{ OnOff }}
|
||||
action:
|
||||
actions:
|
||||
- action: notify.pushbullet
|
||||
data:
|
||||
message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }}
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -215,11 +215,11 @@ image_processing:
|
||||
```yaml
|
||||
# Example advanced automations.yaml entry
|
||||
- alias: "Doods scanning"
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- binary_sensor.driveway
|
||||
action:
|
||||
actions:
|
||||
- action: image_processing.scan
|
||||
target:
|
||||
entity_id: image_processing.doods_camera_driveway
|
||||
|
@ -104,11 +104,11 @@ The example automation below shows how to turn on a light when somebody presses
|
||||
|
||||
```yaml
|
||||
- alias: "Doorbird Ring"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: doorbird_driveway_gate_somebody_pressed_the_button
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.side_entry_porch
|
||||
```
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
- '@starkillerOG'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- button
|
||||
- cover
|
||||
- sensor
|
||||
ha_iot_class: Local Push
|
||||
|
@ -76,11 +76,11 @@ This is a notify platform and thus can be controlled by calling the notify actio
|
||||
# Example automation notification entry
|
||||
automation:
|
||||
- alias: "The sun has set"
|
||||
trigger:
|
||||
platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
action:
|
||||
action: notify.dovado
|
||||
actions:
|
||||
- action: notify.dovado
|
||||
data:
|
||||
message: "The sun has set"
|
||||
target: "+14151234567"
|
||||
|
@ -51,11 +51,11 @@ Along with the event the following payload parameters are available:
|
||||
|
||||
```yaml
|
||||
- alias: "Download Failed Notification"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: downloader_download_failed
|
||||
action:
|
||||
action: persistent_notification.create
|
||||
actions:
|
||||
- action: persistent_notification.create
|
||||
data:
|
||||
message: "{{trigger.event.data.filename}} download failed"
|
||||
title: "Download Failed"
|
||||
|
@ -9,7 +9,6 @@ ha_config_flow: true
|
||||
ha_domain: dsmr
|
||||
ha_codeowners:
|
||||
- '@Robbie1221'
|
||||
- '@frenck'
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
|
39
source/_integrations/duke_energy.markdown
Normal file
39
source/_integrations/duke_energy.markdown
Normal 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**.
|
@ -167,10 +167,10 @@ You can use the response data in a template sensor that is updated every hour:
|
||||
|
||||
```yaml
|
||||
template:
|
||||
- trigger:
|
||||
- platform: time_pattern
|
||||
- triggers:
|
||||
- trigger: time_pattern
|
||||
seconds: "*"
|
||||
action:
|
||||
actions:
|
||||
- action: easyenergy.get_energy_usage_prices
|
||||
response_variable: response
|
||||
data:
|
||||
|
@ -5,6 +5,7 @@ ha_category:
|
||||
- Binary sensor
|
||||
- Climate
|
||||
- Sensor
|
||||
- Switch
|
||||
- Water heater
|
||||
ha_release: 0.61
|
||||
ha_iot_class: Cloud Push
|
||||
@ -16,6 +17,7 @@ ha_platforms:
|
||||
- binary_sensor
|
||||
- climate
|
||||
- sensor
|
||||
- switch
|
||||
- water_heater
|
||||
ha_integration_type: integration
|
||||
---
|
||||
@ -31,6 +33,7 @@ EcoNet devices may be represented by one or more platforms.
|
||||
- [Binary sensor](#binary-sensor)
|
||||
- [Climate](#climate)
|
||||
- [Sensor](#sensor)
|
||||
- [Switch](#switch)
|
||||
- [Water heater](#water-heater)
|
||||
|
||||
### 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.
|
||||
|
||||
### Switch
|
||||
|
||||
The EcoNet Switch platform let's you control the EcoNet thermostat emergency heat.
|
||||
|
||||
### Water heater
|
||||
|
||||
The EcoNet water heater platform lets you control your EcoNet water heater. Water heaters do not report the current water temperature.
|
||||
|
@ -1,15 +1,17 @@
|
||||
---
|
||||
title: ElevenLabs text-to-speech
|
||||
title: ElevenLabs
|
||||
description: Instructions on how to setup ElevenLabs text-to-speech with Home Assistant.
|
||||
ha_category:
|
||||
- Text-to-speech
|
||||
ha_release: 2024.8
|
||||
ha_iot_class: Cloud Push
|
||||
ha_iot_class: Cloud Polling
|
||||
ha_domain: elevenlabs
|
||||
ha_platforms:
|
||||
- tts
|
||||
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.
|
||||
|
@ -81,12 +81,12 @@ Example automation, in YAML format, that triggers a visual notification when
|
||||
a binary sensor (a doorbell) is triggered:
|
||||
|
||||
```yaml
|
||||
- alias: Visual doorbell notification example
|
||||
trigger:
|
||||
- platform: state
|
||||
- alias: "Visual doorbell notification example"
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.doorbell
|
||||
to: "on"
|
||||
action:
|
||||
actions:
|
||||
- action: elgato.identify
|
||||
target:
|
||||
entity_id: light.elgato_key_light
|
||||
|
@ -15,181 +15,26 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
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).
|
||||
|
||||
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 %}.
|
||||
|
||||
## Configuration variables
|
||||
## Prerequisites
|
||||
|
||||
{% configuration %}
|
||||
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 %}
|
||||
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.
|
||||
|
||||
## 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,
|
||||
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".
|
||||
## Sensors
|
||||
|
||||
If `sensor_names` is used, any feeds with defined names will get those names exactly, with no prefix.
|
||||
|
||||
### Examples
|
||||
|
||||
In this section you find some more examples of how this sensor can be used.
|
||||
|
||||
Minimal configuration. All feeds are added as sensors with the unit of measurement being set by the Emoncms Feed or the default unit.
|
||||
|
||||
```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
|
||||
```
|
||||
- **energy** in Wh, kWh
|
||||
- **power** in W
|
||||
- **voltage** in V
|
||||
- **current** in A
|
||||
- **apparent power** in VA
|
||||
- **temperature** in °C, °F or K
|
||||
- **frequency** in Hz
|
||||
- **pressure** in hPa
|
||||
|
@ -116,14 +116,14 @@ The following is an example implementation of an automation:
|
||||
# Example automation
|
||||
- id: amp_volume_up
|
||||
alias: "Increase amplifier volume"
|
||||
trigger:
|
||||
- platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: roku_command
|
||||
event_data:
|
||||
source_name: Home Assistant
|
||||
type: keypress
|
||||
key: Fwd
|
||||
action:
|
||||
actions:
|
||||
- action: media_player.volume_up
|
||||
target:
|
||||
entity_id: media_player.amplifier
|
||||
|
@ -136,10 +136,10 @@ The response data can be added to a template sensor:
|
||||
|
||||
```yaml
|
||||
template:
|
||||
- trigger:
|
||||
- platform: time_pattern
|
||||
- triggers:
|
||||
- trigger: time_pattern
|
||||
hours: "*"
|
||||
action:
|
||||
actions:
|
||||
- action: energyzero.get_energy_prices
|
||||
response_variable: prices
|
||||
data:
|
||||
|
@ -111,14 +111,14 @@ Sample automation to switch lights on and off:
|
||||
# Example automation to turn lights on/off on button release
|
||||
automation:
|
||||
- alias: "Hall light switches"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: button_pressed
|
||||
event_data:
|
||||
id: [0xYY, 0xYY, 0xYY, 0xYY]
|
||||
pushed: 0
|
||||
action:
|
||||
action: "{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}"
|
||||
actions:
|
||||
- action: "{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}"
|
||||
target:
|
||||
entity_id: "{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}"
|
||||
```
|
||||
|
@ -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>.
|
||||
- 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.
|
||||
- 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).
|
||||
- Voltage net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1]
|
||||
- Frequency for production and net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).
|
||||
- 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).
|
||||
- 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:
|
||||
|
||||
- Sensors for battery status and usage
|
||||
- Sensors for grid status (*)
|
||||
- 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 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.
|
||||
- Sensors for grid status *
|
||||
- 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 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. **
|
||||
- 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
|
||||
- Disabled sensors for:
|
||||
- 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)
|
||||
- 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
|
||||
|
||||
|
@ -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 %}
|
||||
|
||||
### Supported features
|
||||
## Supported features
|
||||
|
||||
- turn on/off
|
||||
- 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
|
||||
- send next/previous track
|
||||
|
||||
### Supported devices
|
||||
## Supported devices
|
||||
|
||||
- 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-TW7000
|
||||
- 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.
|
||||
The best is to use iProjection app by Epson to test if it is working.
|
||||
## Configuration
|
||||
|
||||
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`.
|
||||
|
@ -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:
|
||||
|
||||
```yaml
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: event.doorbell
|
||||
action:
|
||||
actions:
|
||||
- action: notify.frenck
|
||||
data:
|
||||
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:
|
||||
|
||||
```yaml
|
||||
trigger:
|
||||
- platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: event.hue_remote_control
|
||||
action:
|
||||
actions:
|
||||
- alias: "Choose an action based on the type of event"
|
||||
choose:
|
||||
- conditions:
|
||||
|
@ -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.
|
||||
|
||||
```yaml
|
||||
- action:
|
||||
- actions:
|
||||
- action: evohome.set_system_mode
|
||||
data:
|
||||
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.
|
||||
|
||||
```yaml
|
||||
- action:
|
||||
- actions:
|
||||
- action: evohome.set_system_mode
|
||||
data:
|
||||
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**).
|
||||
|
||||
```yaml
|
||||
- action:
|
||||
- actions:
|
||||
- action: evohome.set_zone_override
|
||||
target:
|
||||
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.
|
||||
|
||||
```yaml
|
||||
- action:
|
||||
- actions:
|
||||
- action: evohome.set_zone_override
|
||||
target:
|
||||
entity_id: climate.loungeroom
|
||||
|
@ -48,11 +48,11 @@ The phone number used in **target** should be registered with Facebook messenger
|
||||
# Example automation notification entry
|
||||
automation:
|
||||
- alias: "Evening Greeting"
|
||||
trigger:
|
||||
platform: sun
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
action:
|
||||
action: notify.facebook
|
||||
actions:
|
||||
- action: notify.facebook
|
||||
data:
|
||||
message: "Good Evening"
|
||||
target:
|
||||
|
@ -50,10 +50,10 @@ Sets the speed percentage for fan device.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: fan.set_percentage
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
@ -74,10 +74,10 @@ Sets a preset mode for the fan device. Available preset modes are defined by the
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: fan.set_preset_mode
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
@ -98,10 +98,10 @@ Sets the rotation for fan device.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: fan.set_direction
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
@ -122,10 +122,10 @@ Sets the oscillation for fan device.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: fan.oscillate
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
@ -156,10 +156,10 @@ Turn fan device off. This is only supported if the fan device supports being tur
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
platform: time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
actions:
|
||||
- action: fan.turn_off
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
@ -180,13 +180,13 @@ Increases the speed of the fan device.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: device
|
||||
triggers:
|
||||
- trigger: device
|
||||
device_id: 097cd9f706a86e9163acb64ba7d630da
|
||||
domain: lutron_caseta
|
||||
type: press
|
||||
subtype: raise
|
||||
action:
|
||||
actions:
|
||||
- action: fan.increase_speed
|
||||
target:
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
@ -205,13 +205,13 @@ Decreases the speed of the fan device.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: device
|
||||
triggers:
|
||||
- trigger: device
|
||||
device_id: 097cd9f706a86e9163acb64ba7d630da
|
||||
domain: lutron_caseta
|
||||
type: press
|
||||
subtype: lower
|
||||
action:
|
||||
actions:
|
||||
- action: fan.decrease_speed
|
||||
target:
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
|
@ -29,11 +29,11 @@ Feedreader events can be used out of the box to trigger automation actions, e.g.
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Trigger action when new element(s) in RSS feed"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: feedreader
|
||||
action:
|
||||
action: script.turn_on
|
||||
actions:
|
||||
- action: script.turn_on
|
||||
target:
|
||||
entity_id: script.my_action
|
||||
```
|
||||
@ -43,13 +43,13 @@ automation:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Send notification of RSS feed title when updated"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: feedreader
|
||||
event_data:
|
||||
feed_url: "https://hasspodcast.io/feed/podcast"
|
||||
action:
|
||||
action: persistent_notification.create
|
||||
actions:
|
||||
- action: persistent_notification.create
|
||||
data:
|
||||
title: "New HA Podcast available"
|
||||
message: "New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"
|
||||
|
@ -7,7 +7,7 @@ ha_release: 0.29
|
||||
ha_domain: ffmpeg
|
||||
ha_platforms:
|
||||
- camera
|
||||
ha_integration_type: integration
|
||||
ha_integration_type: system
|
||||
---
|
||||
|
||||
The FFmpeg integration allows other Home Assistant integrations to process
|
||||
|
@ -117,49 +117,49 @@ These are documented below.
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Switch on a light when incident is received"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.incidents
|
||||
action:
|
||||
action: light.turn_on
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.bedroom
|
||||
|
||||
- alias: "Play TTS incident details when incident is received"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: sensor.incidents
|
||||
attribute: message_to_speech_url
|
||||
condition:
|
||||
conditions:
|
||||
- condition: not
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: sensor.incidents
|
||||
attribute: message_to_speech_url
|
||||
state: None
|
||||
action:
|
||||
actions:
|
||||
- action: media_player.play_media
|
||||
data_template:
|
||||
data:
|
||||
entity_id: media_player.nest_hub_bedroom
|
||||
media_content_id: >
|
||||
{{ state_attr('sensor.incidents','message_to_speech_url') }}
|
||||
media_content_type: "audio/mp4"
|
||||
|
||||
- alias: "Send response acknowledgement when a button is pressed"
|
||||
trigger:
|
||||
platform: state
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: switch.response_button
|
||||
action:
|
||||
action: homeassistant.turn_on
|
||||
actions:
|
||||
- action: homeassistant.turn_on
|
||||
target:
|
||||
entity_id: switch.incident_response
|
||||
|
||||
- alias: "Cast FireServiceRota dashboard to Nest Hub"
|
||||
trigger:
|
||||
platform: homeassistant
|
||||
triggers:
|
||||
- trigger: homeassistant
|
||||
event: start
|
||||
action:
|
||||
action: cast.show_lovelace_view
|
||||
actions:
|
||||
- action: cast.show_lovelace_view
|
||||
data:
|
||||
entity_id: media_player.nest_hub_bedroom
|
||||
view_path: fsr
|
||||
|
@ -78,14 +78,14 @@ The flic integration fires `flic_click` events on the bus. You can capture the e
|
||||
# Example configuration.yaml automation entry
|
||||
automation:
|
||||
- alias: "Turn on lights in the living room when flic is pressed once"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: flic_click
|
||||
event_data:
|
||||
button_name: flic_81e4ac74b6d2
|
||||
click_type: single
|
||||
action:
|
||||
action: homeassistant.turn_on
|
||||
actions:
|
||||
- action: homeassistant.turn_on
|
||||
target:
|
||||
entity_id: group.lights_livingroom
|
||||
```
|
||||
@ -104,10 +104,10 @@ To help detect and debug flic button clicks, you can use this automation that se
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "FLIC Html5 notify on every click"
|
||||
trigger:
|
||||
platform: event
|
||||
triggers:
|
||||
- trigger: event
|
||||
event_type: flic_click
|
||||
action:
|
||||
actions:
|
||||
- action: notify.html5
|
||||
data:
|
||||
title: "flic click"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user