自动化触发变量

自动化支持与脚本相同的模板化。除了可用于脚本的Home Assistant模板扩展,还可以使用triggerthis模板变量。

在评估配置中声明的任何trigger_variables时,模板变量this也可用。

可用的this数据

变量this是触发操作时自动化的状态对象。状态对象还包含上下文数据,可以用来识别导致script脚本是允许用户指定 Home Assistant 打开时要执行的动作序列的组件。 [Learn more]automationHome Assistant 中的自动化允许您自动响应在家中和周围发生的事情。 [Learn more]执行的用户。请注意,this在执行actions动作在 Home Assistant 的多个地方使用。作为脚本或自动化的一部分,动作定义了触发器被激活后将发生的事情。在脚本中,动作被称为序列 [Learn more]时不会改变。

可用的触发器数据

变量trigger是一个对象,包含触发自动化的哪个trigger触发器是定义的一组平台值或条件,用于触发自动化运行。 [Learn more]的详细信息。

模板可以使用这些数据来修改自动化执行的操作或在消息中显示。例如,您可以创建一个多个传感器可以触发的自动化,然后使用传感器的位置来指定要激活的灯;或者您可以发送一条通知,包含触发它的传感器的友好名称。

每个触发平台可以包含该平台特定的附加数据。

所有平台

来自所有平台的触发器将包含以下数据。

模板变量 数据
trigger.alias 触发器的别名。
trigger.id 触发器的id
trigger.idx 触发器的索引。(第一个触发器的索引是0。)

日历

这些是适用于日历触发器的属性。

模板变量 数据
trigger.platform 硬编码:calendar
trigger.event 触发事件类型,可以是startend
trigger.calendar_event 匹配的日历事件对象。
trigger.calendar_event.summary 日历事件的标题或摘要。
trigger.calendar_event.start 日历事件的开始日期或时间的字符串表示,例如2022-04-10,或2022-04-10 11:30:00-07:00
trigger.calendar_event.end 日历事件结束时间的字符串表示(UTC),例如2022-04-11,或2022-04-10 11:45:00-07:00
trigger.calendar_event.all_day 指示事件跨越整天。
trigger.calendar_event.description 日历事件的详细描述(如果可用)。
trigger.calendar_event.location 日历事件的位置信息(如果可用)。
trigger.offset 事件的时间差对象(如果有)

设备

这些是适用于设备触发器的属性。

根据所选设备的触发器类型,从eventstate模板继承模板变量。

模板变量 数据
trigger.platform 硬编码:device

事件

这些是适用于事件触发器的属性。

模板变量 数据
trigger.platform 硬编码:event
trigger.event 匹配的事件对象。
trigger.event.event_type 事件类型。
trigger.event.data 可选的事件数据。

MQTT

这些是适用于MQTT触发器的属性。

模板变量 数据
trigger.platform 硬编码:mqtt
trigger.topic 接收到有效负载的主题。
trigger.payload 有效负载。
trigger.payload_json 解析的有效负载的字典。
trigger.qos 有效负载的QoS。

数字状态

这些是适用于数字状态触发器的属性。

模板变量 数据
trigger.platform 硬编码:numeric_state
trigger.entity_id 我们观察的实体ID。
trigger.below 下限阈值(如果有)。
trigger.above 上限阈值(如果有)。
trigger.from_state 实体的前一个state object
trigger.to_state 触发器触发的新state object
trigger.for 及时差对象,表示状态满足以上/以下标准的时长(如果有)

句子

这些是适用于句子触发器的属性。

模板变量 数据
trigger.platform 硬编码:conversation
trigger.sentence 匹配的句子的文本
trigger.slots 匹配的槽值的对象
trigger.details 按名称详细匹配的槽详情对象,如通配符。每个详细信息包含:
  • name - 槽的名称
  • text - 匹配的文本
  • value - 输出值(参见列表
trigger.device_id 捕获命令的设备ID(如果有)。

状态

这些是适用于状态触发器的属性。

模板变量 数据
trigger.platform 硬编码:state
trigger.entity_id 我们观察的实体ID。
trigger.from_state 实体的前一个state object
trigger.to_state 触发器触发的新state object
trigger.for 及时差对象,表示状态保持的时长(如果有)

太阳

这些是适用于太阳触发器的属性。

模板变量 数据
trigger.platform 硬编码:sun
trigger.event 刚刚发生的事件:sunsetsunrise
trigger.offset 及其时间差对象的事件(如果有)

模板

这些是适用于模板触发器的属性。

模板变量 数据
trigger.platform 硬编码:template
trigger.entity_id 引起变化的实体ID。
trigger.from_state 引起变化的实体的前一个state object
trigger.to_state 引起模板变化的实体的新state object
trigger.for 及时差对象,表示状态保持的时长(如果有)

时间

这些是适用于时间触发器的属性。

模板变量 数据
trigger.platform 硬编码:time
trigger.now 触发时间触发的DateTime对象。

时间模式

这些是适用于时间模式触发器的属性。

模板变量 数据
trigger.platform 硬编码:time_pattern
trigger.now 触发时间模式触发的DateTime对象。

持久通知

这些属性适用于持久通知触发器

模板变量 数据
trigger.platform 硬编码:persistent_notification
trigger.update_type 持久通知更新的类型addedremovedcurrentupdated
trigger.notification 触发持久通知触发器的通知对象。
trigger.notification.notification_id 通知ID
trigger.notification.title 通知的标题
trigger.notification.message 通知的消息
trigger.notification.created_at 表示通知创建时间的DateTime对象。

Webhook

这些是适用于Webhook触发器的属性。

模板变量 数据
trigger.platform 硬编码:webhook
trigger.webhook_id 被触发的webhook ID。
trigger.json 请求的JSON数据(如果有JSON内容类型)作为映射。
trigger.data 请求的表单数据(如果有表单数据内容类型)。
trigger.query 请求的URL查询参数(如提供)。

区域

这些是适用于区域触发器的属性。

模板变量 数据
trigger.platform 硬编码:zone
trigger.entity_id 我们正在观察的实体ID。
trigger.from_state 实体的前一个state object
trigger.to_state 实体的新state object
trigger.zone 区域的状态对象
trigger.event 触发观察到的事件:enterleave

示例

# 示例 configuration.yaml 条目
automation:
  triggers:
    - trigger: state
      entity_id: device_tracker.paulus
      id: paulus_device
  actions:
    - action: notify.notify
      data:
        message: >
          Paulus 刚刚从 {{ trigger.from_state.state }}
          切换到 {{ trigger.to_state.state }}
          
          这是由 {{ trigger.id }} 触发的

automation 2:
  triggers:
    - trigger: mqtt
      topic: "/notify/+"
  actions:
    - action: >
        notify.{{ trigger.topic.split('/')[-1] }}
      data:
        message: "{{ trigger.payload }}"

automation 3:
  triggers:
    # 多个实体想要执行相同操作。
    - trigger: state
      entity_id:
        - light.bedroom_closet
        - light.kiddos_closet
        - light.linen_closet
      to: "on"
      # 当有人将其中一个灯开着10分钟时触发。
      for: "00:10:00"
  actions:
    - action: light.turn_off
      target:
        # 关闭触发自动化的任何实体。
        entity_id: "{{ trigger.entity_id }}"

automation 4:
  triggers:
    # 当Home Assistant扫描NFC标签时...
    - trigger: event
      event_type: tag_scanned
      # ...由特定人员执行
      context:
        user_id:
          - 06cbf6deafc54cf0b2ffa49552a396ba
          - 2df8a2a6e0be4d5d962aad2d39ed4c9c
  conditions:
    # 检查NFC标签(ID)是否是前门的标签
    - condition: template
      value_template: "{{ trigger.event.data.tag_id == '8b6d6755-b4d5-4c23-818b-cf224d221ab7'}}"
  actions:
    # 关闭各种灯光
    - action: light.turn_off
      target:
        entity_id:
          - light.kitchen
          - light.bedroom
          - light.living_room