Automation Templates
Automations support the advanced features of templating in the same way as scripts do. In addition to the Home Assistant template extensions available to scripts, the trigger
and this
template variables are available for automations.
Example of variables used in templates:
is the name of the automation executing from this trigger
is the type of trigger object, like `calendar`
Available state data
The template variable this
is an object that contains the state of the automation at the moment of triggering the actions and can be used to evaluate trigger_variables
declared in the configuration of the active triggerA trigger is a set of values or conditions of a platform that are defined to cause an automation to run. [Learn more].
State objects also contain context data which can be used to identify the user that caused a scriptScripts are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on. [Learn more] or automationAutomations in Home Assistant allow you to automatically respond to things that happen in and around your home. [Learn more] to execute. Note that this
will not change while executing the actionsActions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called sequence. [Learn more].
Available trigger data
The template variable trigger
is an object that contains details about which platformPlatforms are building blocks provided by some integrations to be used by other integrations. [Learn more] triggered the automation. The platform
property contains the name of the platformPlatforms are building blocks provided by some integrations to be used by other integrations. [Learn more] whose event triggered the automation.
Templates can use the data to modify the actions performed by the automation or displayed in a message. For example, you could create an automation that multiple sensors can trigger and then use the sensor’s location to specify a light to activate; or you could send a notification containing the friendly name of the sensor that triggered it.
Each trigger platform includes additional data specific to that platformPlatforms are building blocks provided by some integrations to be used by other integrations. [Learn more].
All
Triggers from all platforms will include the following properties.
Template variable | Data |
---|---|
trigger.platform |
Trigger object type. |
trigger.alias |
Alias of the trigger. |
trigger.id |
The id of the trigger. |
trigger.idx |
Index of the trigger. (The first trigger idx is 0 .) |
Calendar
These are the properties available for a Calendar trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: calendar
|
trigger.event |
The trigger event type, either start or end . |
trigger.calendar_event |
The calendar event object matched. |
trigger.calendar_event.summary |
The title or summary of the calendar event. |
trigger.calendar_event.start |
String representation of the start date or date time of the calendar event e.g. 2022-04-10 , or 2022-04-10 11:30:00-07:00
|
trigger.calendar_event.end |
String representation of the end time of date time the calendar event in UTC e.g. 2022-04-11 , or 2022-04-10 11:45:00-07:00
|
trigger.calendar_event.all_day |
Indicates the event spans the entire day. |
trigger.calendar_event.description |
A detailed description of the calendar event, if available. |
trigger.calendar_event.location |
Location information for the calendar event, if available. |
trigger.offset |
Timedelta object with offset to the event, if any. |
Device
These are the properties available for a Device trigger.
Inherites template variables from event or state template based on the type of trigger selected for the device.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: device
|
Event
An Event trigger is fired each time an entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] state changes or an event matching the configured event_type occurs.
These are the properties available for an Event trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: event
|
trigger.event |
Event object that matched. |
trigger.event.event_type |
Event type. |
trigger.event.data |
Optional event data. |
Geolocation
These are the properties available for a Geolocation trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: geo_location
|
trigger.event |
The trigger event type, either enter or leave . |
trigger.source |
The Geolocation platform creating the trigger event. |
trigger.zone |
State object of the zone. |
Home Assistant
The Home Assistant trigger is recommended for automations instead of homeassistant_start or homeassistant_stop events.
These are the properties available for a Home Assistant trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: homeassistant
|
trigger.event |
The trigger event type, either start or shutdown . |
MQTT
These are the properties available for a MQTT trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: mqtt
|
trigger.topic |
Topic that received payload. |
trigger.payload |
Payload. |
trigger.payload_json |
Dictionary of the JSON parsed payload. |
trigger.qos |
QOS of payload. |
Numeric state
These are the properties available for a numeric state trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: numeric_state
|
trigger.entity_id |
Entity ID that we observe. |
trigger.below |
The below threshold, if any. |
trigger.above |
The above threshold, if any. |
trigger.from_state |
The previous state object of the entity. |
trigger.to_state |
The new state object that triggered trigger. |
trigger.for |
Timedelta object how long state has met above/below criteria, if any. |
Sentence
These are the properties available for a Sentence trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: conversation
|
trigger.sentence |
Text of the sentence that was matched. |
trigger.slots |
Object with matched slot values. |
trigger.details |
Object with matched slot details by name, such as wildcards. Each detail contains:
|
trigger.device_id |
The device ID that captured the command, if any. |
State
These are the properties available for a State trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: state
|
trigger.entity_id |
Entity ID that we observe. |
trigger.from_state |
The previous state object of the entity. |
trigger.to_state |
The new state object that triggered trigger. |
trigger.for |
Timedelta object how long state has been to state, if any. |
Sun
These are the properties available for a Sun trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: sun
|
trigger.event |
The event that just happened: sunset or sunrise . |
trigger.offset |
Timedelta object with offset to the event, if any. |
Tag
These are the properties available for a Tag trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: tag
|
trigger.tag_id |
The tag ID captured. |
trigger.device_id |
Optional device ID that captured the tag. |
Template
These are the properties available for a Template trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: template
|
trigger.entity_id |
Entity ID that caused change. |
trigger.from_state |
Previous state object of entity that caused change. |
trigger.to_state |
New state object of entity that caused template to change. |
trigger.for |
Timedelta object how long state has been to state, if any. |
Time
These are the properties available for a Time trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: time
|
trigger.now |
DateTime object that triggered the time trigger. |
Time pattern
These are the properties available for a time pattern trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: time_pattern
|
trigger.now |
DateTime object that triggered the time_pattern trigger. |
Persistent notification
These properties are available for a persistent notification trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: persistent_notification
|
trigger.update_type |
Type of persistent notification update added , removed , current , or updated . |
trigger.notification |
Notification object that triggered the persistent notification trigger. |
trigger.notification.notification_id |
The notification ID. |
trigger.notification.title |
Title of the notification. |
trigger.notification.message |
Message of the notification. |
trigger.notification.created_at |
DateTime object indicating when the notification was created. |
Webhook
These are the properties available for a Webhook trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: webhook
|
trigger.webhook_id |
The webhook ID that was triggered. |
trigger.json |
The JSON data of the request (if it had a JSON content type) as a mapping. |
trigger.data |
The form data of the request (if it had a form data content type). |
trigger.query |
The URL query parameters of the request (if provided). |
Zone
These are the properties available for a Zone trigger.
Template variable | Data |
---|---|
trigger.platform |
Hardcoded: zone
|
trigger.entity_id |
Entity ID that we are observing. |
trigger.from_state |
Previous state object of the entity. |
trigger.to_state |
New state object of the entity. |
trigger.zone |
State object of the zone. |
trigger.event |
Event that trigger observed: enter or leave . |
Examples
# Example configuration.yaml entries
automation:
triggers:
- trigger: state
entity_id: device_tracker.paulus
id: paulus_device
actions:
- action: notify.notify
data:
message: >
Paulus just changed from {{ trigger.from_state.state }}
to {{ trigger.to_state.state }}
This was triggered by {{ trigger.id }}
automation 2:
triggers:
- trigger: mqtt
topic: "/notify/+"
actions:
- action: >
notify.{{ trigger.topic.split('/')[-1] }}
data:
message: "{{ trigger.payload }}"
automation 3:
triggers:
# Multiple entities for which you want to perform the same action.
- trigger: state
entity_id:
- light.bedroom_closet
- light.kiddos_closet
- light.linen_closet
to: "on"
# Trigger when someone leaves one of those lights on for 10 minutes.
for: "00:10:00"
actions:
- action: light.turn_off
target:
# Turn off whichever entity triggered the automation.
entity_id: "{{ trigger.entity_id }}"
automation 4:
triggers:
# When an NFC tag is scanned by Home Assistant...
- trigger: event
event_type: tag_scanned
# ...By certain people
context:
user_id:
- 06cbf6deafc54cf0b2ffa49552a396ba
- 2df8a2a6e0be4d5d962aad2d39ed4c9c
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'}}"
actions:
# Turn off various lights
- action: light.turn_off
target:
entity_id:
- light.kitchen
- light.bedroom
- light.living_room