Home Assistant automation.trigger 动作详解:立即执行自动化动作,无需等待触发条件
2026/9/16 20:40:27 网站建设 项目流程

Home Assistant automation.trigger 动作详解:立即执行自动化动作,无需等待触发条件

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

automation.trigger是 Home Assistant 中用于**立即执行某个自动化动作(actions)**的核心动作:它不等待该自动化自身的触发器(triggers),而是直接运行其定义好的动作序列。本文基于 automation.trigger 官方文档 编写,完整覆盖 UI 操作步骤、YAML 配置、skip_condition参数语义、目标(Targets)选择方式以及真实场景示例,帮助你用它完成自动化测试、自动化间复用与按钮快捷触发等实战需求。

动作定位:触发 vs 开启 vs 重载

在动手配置前,先厘清 automation 域下几个容易混淆的动作。它们共享domain: automation,但语义完全不同:

动作核心作用是否执行动作序列
automation.trigger立即运行某个自动化的动作,跳过/检查条件,不等待触发器
automation.turn_on启用自动化,让它重新监听触发器否(只恢复监听,不执行)
automation.turn_off关闭自动化,停止监听触发器
automation.reload重新加载 YAML 中的自动化配置,无需重启 HA

关键区别(见 automation.turn_on 文档):启用自动化并不会运行它,它只是重新开始监听触发器;要立即运行,请使用automation.trigger。而 automation.reload 文档 则适用于修改 YAML 后热加载配置,它会中断正在运行的动作。

典型应用场景

  • 测试自动化:开发时无需等真实触发器(如传感器变化、时间到达)触发,一键验证动作逻辑是否正确。
  • 自动化复用:在一个自动化中调用另一个自动化的动作,实现"自动化调用自动化",避免复制粘贴大段动作。
  • 按钮/事件快捷触发:按下物理按钮或收到自定义事件时,直接执行某个例行自动化(本文末尾有完整示例)。
  • 脚本编排:在脚本的步骤中插入对其他自动化的调用,组合多个既有自动化完成复杂流程。

使用该动作的注意事项:默认跳过条件

这是automation.trigger与正常触发最关键的行为差异:默认情况下,该自动化自身的条件(conditions)会被跳过,动作无条件执行。如果你希望先检查条件、满足后才执行动作,必须显式关闭Skip conditions(YAML 中为skip_condition: false)。

在 UI 中配置(可视化操作步骤)

按照 automation.trigger 文档 的 UI 引导流程:

  1. 进入Settings > Automations & scenes
  2. 打开一个现有自动化或脚本,或选择Create automation > Create new automation
  3. 如果是新建自动化,先在When部分添加一个触发器(脚本不需要触发器,它们在被调用时才运行)。
  4. Then do部分,选择Add action
  5. 选择要控制的对象:在By target(详见下文 Targets)下,选择你想要运行的自动化。
  6. 在该目标列出的动作中,选择Trigger automation
  7. 可选:如果你希望先检查该自动化的条件,关闭Skip conditions
  8. 选择Save

UI 中的选项

选项说明
Skip conditions是否跳过该自动化的条件。默认开启,即条件不满足时动作也会照常执行。

在 YAML 中使用

基础用法:无条件立即执行

YAML 中以action: automation.trigger引用该动作,通过target.entity_id指定目标自动化:

action: automation.trigger target: entity_id: automation.evening_routine

上面的配置会立即运行automation.evening_routine的动作序列,无论其条件是否满足(因为skip_condition默认值为true)。

检查条件后再执行

如果希望先评估该自动化的条件,将skip_condition设为false

action: automation.trigger target: entity_id: automation.evening_routine data: skip_condition: false

YAML 字段参考

字段类型必填默认值说明
skip_conditionbooleantrue是否跳过该自动化的条件。true(默认)时动作无条件执行;false时先检查条件,条件满足才执行动作。

Targets:该动作的目标选择

automation.trigger必须指定目标(target)。目标是动作的作用对象,你可以把动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会对目标背后所有匹配的automation实体执行该动作(详见 actions/targets.md):

  • Entity:某个具体的 automation 实体,例如automation.living_room
  • Device:属于某个设备的所有 automation 实体。
  • Area:某个房间/区域内的所有 automation 实体。
  • Floor:某个楼层上的所有 automation 实体。
  • Label:共享某个标签的所有 automation 实体。

同一动作中还可以混用不同目标类型,例如同时指定一个实体和一个区域,一次动作同时作用于两者。

完整示例:从按钮运行晚间例程

文档给出了一个非常实用的真实场景:按下门厅按钮时复用已有的晚间例程自动化(见 automation.trigger.markdown)。

  • Trigger(触发器):Event received(收到事件)
    • Target(目标):Hallway button(门厅按钮)
    • Event type(事件类型):Single press(单击)
  • Action(动作):Trigger automation
    • Target(目标):Evening routine(晚间例程)

对应完整 YAML:

automation: - alias: "Run the evening routine from the hallway button" triggers: - trigger: event.received target: entity_id: event.hallway_button options: event_type: - single_press actions: - action: automation.trigger target: entity_id: automation.evening_routine

该示例展示了两个关键点:

  1. 事件类触发器:使用event.received触发器监听设备事件(这里是event.hallway_buttonsingle_press单击事件)。
  2. 动作复用actions中直接调用automation.trigger,将晚间例程的动作串进新自动化,无需复制任何动作内容。

进阶建议:何时用脚本而不是 trigger

文档的 "Good to know" 部分给出了一个重要的工程实践建议:如果同一段步骤需要从多个地方调用,脚本(script)通常比触发自动化更合适。原因是:

  • 脚本天然就是"被调用才运行"的组件,无需触发器。
  • 触发自动化存在隐式依赖:被触发的自动化即使处于关闭状态也会运行(见下节),行为可能出人意料。
  • 脚本的复用语义更清晰,调用链更直观。

使用须知(Good to know)

  1. 关闭状态下也会运行:即使目标自动化处于关闭(turned off)状态,automation.trigger依然会执行它的动作序列。这是测试与复用场景下的便利特性,但也意味着它绕过了自动化的开关状态,使用时需留意。
  2. 模板中的 trigger 数据为空:由于该动作不是由真实触发器引发的,自动化动作里依赖trigger变量(如触发器类型、事件数据)的模板无数据可读。如果动作逻辑强依赖触发器上下文,需要为这种情况做兜底或改用其他方案。
  3. 脚本优先:如上节所述,多处复用的步骤应优先考虑脚本而非触发自动化。
  4. 配合automation.turn_on使用:若需求是先启用某个自动化(恢复监听),再立即执行一次,可将automation.turn_onautomation.trigger组合使用。两者的区别可参考 automation.turn_on 文档。

动手验证:在 Actions 工具中尝试

无需写一行 YAML,即可在Settings > Tools > Actions(开发者工具)中搜索automation.trigger,填写目标实体与选项后点击Perform action,直接在真实实体上观察效果(见 actions/try_it.md)。这是验证自动化逻辑、排查问题的快捷方式。

相关动作一览

  • Turn on automation(automation.turn_on):启用自动化,使其重新监听触发器。
  • Turn off automation(automation.turn_off):关闭自动化,停止监听。
  • Reload automations(automation.reload):重新加载自动化配置,适用于修改 YAML 后热加载。

完整的动作索引可参考 actions 列表页,按集成域分组浏览所有可用动作。

仓库参考

  • automation.trigger 动作文档:本文主体内容来源。
  • automation.turn_on 动作文档:与 trigger 的语义对比。
  • automation.reload 动作文档:自动化配置重载。
  • Targets 说明:目标(实体/设备/区域/楼层/标签)选择规则。
  • actions 索引页:全部动作的搜索与浏览入口。

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询