Automation trigger variables
Automations support 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.
The template variable this
is also available when evaluating any trigger_variables
declared in the configuration.
Available this data
The variable this
is the state object of the automation at the moment of triggering the actions. 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 variable trigger
is an object that contains details about which triggerA trigger is a set of values or conditions of a platform that are defined to cause an automation to run. [Learn more] 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 can include additional data specific to that platform.
All
Triggers from all platforms will include the following data.
Template variable | Data |
---|---|
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
These are the properties available for a 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. |
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. |
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 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