Merge branch 'rc' into current

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

View File

@ -15,6 +15,7 @@ source/_integrations/acmeda.markdown @atmurray
source/_integrations/acomax.markdown @starkillerOG
source/_integrations/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

View File

@ -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)

View File

@ -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.

View File

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

View File

@ -23,7 +23,7 @@ The sections view lets you organize your cards in sections on a grid.
You can group cards without using horizontal or vertical stack cards.
<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
![Add Section button](/images/dashboards/sections_view_add-card-or-section.png)
2. To add a new section, select the **Create section** button.
3. To edit the section title, select the 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

View File

@ -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).

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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:
- ...
```

View File

@ -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:

View File

@ -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.

View File

@ -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
```

View File

@ -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"

View File

@ -1381,7 +1381,7 @@ Targets are meant to be used with the `target` property of an action in
a script sequence. For example:
```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
```

View File

@ -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

View File

@ -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

View File

@ -1180,6 +1180,178 @@ See: [Python regular expression operations](https://docs.python.org/3/library/re
- Filter `value | regex_findall(find='', ignorecase=False)` will find all regex matches of the find expression in `value` and return the array of matches.
- Filter `value | regex_findall_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.

View File

@ -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:

View File

@ -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
```

View File

@ -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"

View File

@ -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]

View File

@ -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 }}"

View File

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

View File

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

View File

@ -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 %}

View File

@ -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

View File

@ -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 %}

View File

@ -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

View File

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

View File

@ -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:

View File

@ -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

View File

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

View File

@ -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:

View File

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

View File

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

View File

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

View File

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

View File

@ -42,9 +42,18 @@ These sensors are automatically created and associated to the router device:
- Upload sensor (unit_of_measurement: Gigabyte - *Daily accumulation*)
- Upload 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 %}

View File

@ -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 %}

View File

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

View File

@ -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.

View File

@ -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"

View File

@ -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
```

View File

@ -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`.

View File

@ -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
```

View File

@ -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

View File

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

View File

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

View File

@ -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:

View File

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

View File

@ -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:

View File

@ -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)

View File

@ -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:

View File

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

View File

@ -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 %}

View File

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

View File

@ -74,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:

View File

@ -39,11 +39,11 @@ Home Assistant has its own Cast application to show the Home Assistant UI on any
cast_downstairs_on_kitchen:
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

View File

@ -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.

View File

@ -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"

View File

@ -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

View File

@ -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 }}"

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

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

View File

@ -194,26 +194,26 @@ If you have a Zigbee remote that is not yet supported you can request support fo
automation:
- 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

View File

@ -21,7 +21,7 @@ ha_integration_type: helper
The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that estimates the derivative of the
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 %}

View File

@ -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
```

View File

@ -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

View File

@ -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

View File

@ -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 }}

View File

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

View File

@ -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

View File

@ -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
```

View File

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

View File

@ -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"

View File

@ -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"

View File

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

View File

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

View File

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

View File

@ -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.

View File

@ -1,15 +1,17 @@
---
title: ElevenLabs text-to-speech
title: ElevenLabs
description: Instructions on how to setup ElevenLabs text-to-speech with Home Assistant.
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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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 %}"
```

View File

@ -53,10 +53,13 @@ For Envoy S Metered / IQ Gateway Metered with installed and configured current t
- Sensors for net production (grid export) and net consumption (grid import) if the consumption <abbr title="current transformers">CT</abbr> is a net-consumption <abbr title="current transformers">CT</abbr>.
- 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

View File

@ -20,7 +20,7 @@ When you want to add a device for the first time, turn it on before following th
{% include integrations/config_flow.md %}
### 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`.

View File

@ -45,10 +45,10 @@ In addition, the entity can have the following states:
Because the state of an event entity in Home Assistant is a timestamp, it means we can use it in our automations. For example:
```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:

View File

@ -129,7 +129,7 @@ This action call will set the operating `mode` of the system for a specified per
For **AutoWithEco**, the period of time is a `duration` is up to 24 hours.
```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

View File

@ -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:

View File

@ -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

View File

@ -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) }}"

View File

@ -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

View File

@ -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

View File

@ -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