自动化触发变量
自动化支持与脚本相同的模板化。除了可用于脚本的Home Assistant模板扩展,还可以使用trigger
和this
模板变量。
在评估配置中声明的任何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 |
触发事件类型,可以是start 或end
|
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 |
事件的时间差对象(如果有) |
设备
这些是适用于设备触发器的属性。
根据所选设备的触发器类型,从event或state模板继承模板变量。
模板变量 | 数据 |
---|---|
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 |
按名称详细匹配的槽详情对象,如通配符。每个详细信息包含:
|
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 |
刚刚发生的事件:sunset 或sunrise 。 |
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 |
持久通知更新的类型added 、removed 、current 或updated 。 |
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 |
触发观察到的事件:enter 或leave 。 |
示例
# 示例 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