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:
  • name - name of the slot
  • text - matched text
  • value - output value (see lists)
.
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