资讯动态

Home Assistant 自动化动作详解:使用 `automation.turn_on` 在自动化与脚本中启用自动化

发布时间:2026/9/16 18:45:32 来源:尧图企业网站定制
Home Assistant 自动化动作详解使用automation.turn_on在自动化与脚本中启用自动化【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io导读automation.turn_on是 Home Assistant 自动化域automation domain提供的标准动作action用于把一条已关闭的自动化automation重新启用使其恢复对触发条件triggers的监听并在触发时执行。本指南以仓库中的动作参考文档 source/_actions/automation.turn_on.markdown 为主体结合其相关动作文档与界面模板说明完整讲解该动作的界面操作路径、YAML 调用语法、目标target选择方式并给出离家时启用离家灯光例程等可直接复用的实战示例帮助你实现一条自动化管理另一条自动化的场景编排。动作概述做什么、何时用按照文档定义automation.turn_on用于启用一条自动化一旦自动化处于开启状态它会重新开始监听自身的 {% term triggers %}触发条件并在这些触发条件满足时运行。与之对应的启用/禁用动作还包括automation.turn_off关闭并默认停止正在运行的 action与automation.toggle在开启/关闭之间翻转。典型的使用场景是让一条自动化去开启另一条自动化。例如当你离开家外出旅行时用一条自动化去启用一条模拟有人在家的离家灯光例程Use this action to enable an automation. Once its on, the automation listens for its {% term triggers %} again and runs when they fire. This is handy when you want one automation to switch another one on, for example to enable your away routines when you leave for a trip.关于术语仓库在 source/_data/glossary.yml 中对 automation 有统一定义自动化是一旦触发条件满足便采取行动的功能其 actions 定义触发发生之后将要发生什么。这正解释了automation.turn_on的语义它不执行任何动作只是把监听触发条件这个开关重新打开。从用户界面UI使用该动作如果你习惯用可视化方式构建自动化与脚本可以在界面中逐步完成配置无需编写 YAML对应模板见 source/_includes/actions/ui_header.md。文档给出了完整的操作路径进入SettingsAutomations scenes自动化与场景。打开一条现有的自动化或脚本或者选择Create automationCreate new automation新建。如果是新建自动化在When何时部分添加一个触发条件。脚本不需要触发条件——它们在被其他东西调用时运行。在Then do然后做什么部分选择Add action添加动作。选择要控制的对象在By target按目标详见下文目标选择下选中你想要启用的自动化。从该目标对应的动作列表中选择Turn on automation打开自动化。选择Save保存。这条路径同样适用于脚本script脚本本身没有触发条件而是通过其他自动化、仪表盘或script.turn_on等方式被调用因此可以在脚本里用automation.turn_on作为步骤之一来启用某条自动化。在 YAML 中使用该动作如果你直接编写 YAML或者想精确掌握 Home Assistant 底层做了什么事文档提供了技术参考对应模板见 source/_includes/actions/yaml_header.md。在 YAML 中该动作的调用名称为automation.turn_on最基本的形式如下action: | action: automation.turn_on target: entity_id: automation.away_lighting上面的例子会启用automation.away_lighting这条自动化。动作参数说明automation.turn_on的调用结构由三部分组成字段类型必填说明actionstring是动作名称固定为automation.turn_ontargetmap是目标选择器至少指定一个目标详见下一节datamap否扩展数据automation.turn_on本身没有额外的可选参数需要说明的是与automation.turn_off拥有stop_actions是否停止正在运行的动作默认true这一选项不同automation.turn_on没有任何附加参数——它只负责把自动化切换到开启状态。如果你想控制更多行为应组合使用相关动作例如先automation.turn_on再automation.trigger立即执行。目标Targets选择详解该动作必须有目标target。目标就是动作的作用对象对应模板见 source/_includes/actions/targets.md。你可以把动作指向单个实体、设备、区域、楼层或标签Home Assistant 会针对该目标背后所有匹配的 automation 实体执行动作Entity实体某一条具体的 automation 实体例如automation.living_room。Device设备隶属于某个设备的所有 automation 实体。Area区域某个房间/区域内的所有 automation 实体。Floor楼层某一楼层上的所有 automation 实体。Label标签共享某个标签的所有 automation 实体。你还可以在同一个动作中混用不同类型的目标。例如可以在同一个动作中同时添加一个具体实体和一个区域作为目标让动作一次性作用于两者。这在需要启用家里某几处灯光例程时非常实用——不必逐条写entity_id直接用区域或标签即可批量生效。关键行为与使用要点Good to know文档专门列出了三条容易踩坑的要点启用 ≠ 立即运行。启用一条自动化并不会运行它只是让它重新开始监听触发条件。如果你要立刻执行它的 actions应该使用 Trigger automation 动作automation.trigger它可以在不等待触发条件的情况下立即运行自动化。关闭状态会被保留。一条处于关闭状态的自动化会保留它自己的状态包括之前跟踪的信息例如它上次运行的时间。也就是说关闭再启用不会重置自动化的内部状态。也可以在自动化列表里手动启停。除了用动作控制你还可以直接在SettingsAutomations scenes的自动化列表中手动启用/禁用某条自动化。与相关动作的对比turn_off / toggle / triggerautomation.turn_on的 front matter 中声明了三个相关动作对应模板见 source/_includes/actions/related.mdautomation.turn_off、automation.toggle和automation.trigger。它们语义不同选择合适的动作很重要动作文档定义关键行为automation.turn_onEnables an automation启用自动化恢复监听触发条件不运行 actionsautomation.turn_offDisables an automation关闭自动化默认同时停止正在运行的 actions可用stop_actions: false让其跑完automation.toggleEnables or disables an automation开则关、关则开总是停止正在运行的 actions且没有让动作跑完的选项automation.triggerRuns the actions of an automation立即运行某条自动化的 actions默认跳过条件检查skip_condition默认true即使自动化处于关闭状态也会运行依据仓库中的相关动作文档source/_actions/automation.turn_off.markdown、source/_actions/automation.toggle.markdown、source/_actions/automation.trigger.markdown在实际使用中应注意如果你需要临时关闭一段时间再恢复可以像 turn_off 文档建议的那样用一条自动化调用automation.turn_off再用另一条调用automation.turn_on来恢复。如果你想要单一控制点例如一个按钮或一个 toggle 辅助实体来切换某条自动化的启停automation.toggle最合适但如果你需要明确的结果文档建议改用automation.turn_on或automation.turn_off。调用automation.trigger时由于没有真实触发事件自动化内部依赖 trigger 数据的模板会无数据可读——这一点在使用模板时需留意。实战示例离家时启用离家灯光例程文档提供了一个完整的实战示例用于演示离家时开启一条模拟有人在家的灯光自动化。场景设定为触发条件Trigger离开区域Zone left目标TargetPaulus人物实体区域ZoneHome家动作Action打开自动化Turn on automation目标TargetAway lighting离家灯光完整的 YAML 如下可以直接复制并按需修改实体 IDautomation: | - alias: Enable the away lighting routine triggers: - trigger: zone.left target: entity_id: person.paulus options: zone: zone.home actions: - action: automation.turn_on target: entity_id: automation.away_lighting这个例子的要点在于两层自动化的协作外层自动化以zone.left离开家区域为触发条件其 actions 中调用automation.turn_on去启用内层的automation.away_lighting。内层自动化启用后会按自身的触发条件继续工作例如按时间随机开关灯光从而实现模拟有人在家的效果。尝试与验证用开发者工具直接测试如果你想在不写一行 YAML 的情况下验证该动作文档提供了快捷路径对应模板见 source/_includes/actions/try_it.md打开SettingsToolsActions开发者工具中的动作页面。搜索automation.turn_on这个动作。填写目标字段例如实体automation.away_lighting。点击Perform action执行动作。你会在真实的实体上立即看到效果——自动化被启用后其状态由off变为on具体状态名称与版本有关以你当前安装版本为准。这非常适合在把动作写进自动化之前先做一次快速验证。更多真实场景示例可以通过仓库中的 source/_includes/actions/more_examples.md 模板了解其组织方式该模板说明这些动作会出现在自动化与脚本中的真实场景里可以复制并根据自己的环境调整。小结automation.turn_on是 Home Assistant 自动化编排中最基础也最高频的动作之一它让自动化管理自动化成为可能是构建分层自动化、场景切换与临时启停控制的关键工具。使用时牢记三条原则启用不等于运行要立即执行请用automation.trigger关闭状态与历史信息会被保留目标可以是实体、设备、区域、楼层或标签且可混用。配合automation.turn_off与automation.toggle你就能完整覆盖自动化的启停控制需求。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价