自动化触发器全类型解析
触发器概述
触发器决定了自动化何时开始执行。Home Assistant 内置了十余种触发器类型,覆盖最常见的触发场景。
核心触发器类型
State(状态变化触发)
实体从一个状态变成另一个状态时触发:
trigger:
- platform: state
entity_id: sensor.door
from: "closed"
to: "open"
也可以只指定 from 或只指定 to,或者都不指定(任何变化都触发)。还可以监听属性变化:
trigger:
- platform: state
entity_id: climate.living_room
attribute: temperature
to: "24"
Numeric State(数值变化触发)
数值型传感器超过阈值时触发:
trigger:
- platform: numeric_state
entity_id: sensor.temperature_kitchen
above: 28
below: 10
for:
minutes: 5 # 持续 5 分钟在阈值外才触发
Time(定时触发)
trigger:
- platform: time
at: "07:00:00"
- platform: time_pattern
minutes: "/30" # 每 30 分钟
hours: "*/2" # 每 2 小时
Sun(日出日落)
trigger:
- platform: sun
event: sunrise
offset: "+00:15:00" # 日出后 15 分钟
- platform: sun
event: sunset
offset: "-00:20:00" # 日落前 20 分钟
Zone(区域进出触发)
当 Person 实体进入/离开某个区域时触发:
trigger:
- platform: zone
entity_id: person.me
zone: zone.home
event: enter # enter / leave
HomeKit / Xiaomi / Z-Wave 设备事件
某些设备有特有的事件类型。例如小米人体传感器的"2 分钟没人":
trigger:
- platform: event
event_type: xiaomi_aqara.movement_timeout
event_data:
entity_id: binary_sensor.motion_kitchen
Webhook(HTTP 请求触发)
Home Assistant 暴露一个 webhook URL,任何服务发 POST 请求到这个 URL 都会触发:
trigger:
- platform: webhook
webhook_id: my_unique_id
适合和第三方服务(IFTTT、Node-RED、自定义脚本)集成。
Event(自定义事件)
trigger:
- platform: event
event_type: my_custom_event
事件可以由其他自动化的 fire_event 动作触发,也可以由集成、Python 脚本、REST API 触发。
MQTT(MQTT 消息触发)
trigger:
- platform: mqtt
topic: "zigbee2mqtt/+/action"
payload: "single"
Device(设备级触发器)
直接选择某个设备的某个事件(比如"Z-Wave 门锁被手动开锁"),Home Assistant 自动帮你填充底层配置:
trigger:
- domain: lock
entity_id: lock.front_door
device_id: xxxxx
type: opened
sub_type: manual
多个触发器
一个自动化可以有多个触发器,任一触发都会启动执行:
trigger:
- platform: sun
event: sunset
- platform: state
entity_id: person.me
to: "home"
上面这个自动化会在日落时或你回家时(先到先触发)执行。
触发器的"for"防抖
很多触发器支持 for 参数——满足条件持续多久后才真正触发。这是避免瞬态抖动的利器:
trigger:
- platform: state
entity_id: sensor.door
from: "closed"
to: "open"
for:
seconds: 10 # 门开了持续 10 秒才触发
触发器传递的数据
触发后,自动化的 {{ trigger }} 模板变量里包含了触发相关的所有信息:
trigger.platform → 平台名(state / time / sun ...)
trigger.entity_id → 触发的实体 ID
trigger.from_state → 之前的状态
trigger.to_state → 新的状态
trigger.event → 完整事件对象
trigger.id → 2026.10 新增的触发器 ID
这些变量在动作里做模板运算时非常有用。