ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Home Assistant `automation.turn_off` 动作完全指南:停用自动化与优雅停止运行中的动作

Home Assistant `automation.turn_off` 动作完全指南:停用自动化与优雅停止运行中的动作 Home Assistantautomation.turn_off动作完全指南停用自动化与优雅停止运行中的动作【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io本篇技术指南围绕 Home Assistant 官方文档中的automation.turn_off动作展开系统讲解如何在可视化界面与 YAML 中停用自动化、如何通过stop_actions控制是否中断正在运行的动作、如何借助目标Target机制批量操作实体以及如何与其他自动化动作turn_on、toggle配合实现看电影时暂停感应灯这类真实场景。读完本文你将掌握停用自动化的全部姿势并能用源码级视角理解其背后的行为约定。动作概览停用自动化意味着什么automation.turn_off用于禁用disable一条自动化。当自动化处于关闭状态时它不再监听自己的 {% term triggers %}触发器因此也不会因为触发器被满足而运行。需要注意两个关键行为默认情况下该动作会同时停止这条自动化当前正在运行的动作actions。如果你希望让正在运行的动作执行完毕可以将Stop actions即 YAML 中的stop_actions关闭。此外文档明确说明了一个重要细节停用自动化不会撤销它已经做过的事情。例如一条自动化已经打开了灯此时停用该自动化只会阻止它未来继续触发并不会把灯关掉。从界面使用Settings Automations scenes如果你习惯用可视化方式构建自动化或脚本可以在界面中逐步完成配置无需编写 YAML对应文档片段见 source/_includes/actions/ui_header.md进入SettingsAutomations scenes。打开一条现有的自动化或脚本或者选择Create automationCreate new automation新建一条。如果是新建自动化在When触发条件部分添加一个触发器。脚本script不需要触发器——它们由其他东西调用时才运行。在Then do执行部分选择Add action。选择你要控制的对象在By target参见下文动作的目标下选择你想要停用的那条自动化。在该目标对应的动作列表中选择Turn off automation。可选如果你希望当前正在运行的动作执行完再停止关闭Stop actions选项。点击Save保存。界面中的选项选项说明Stop actions是否停止当前正在运行的动作。默认开启。在 YAML 中使用语法与字段参考如果直接在 YAML 中工作或者想了解 Home Assistant 底层到底做了什么可以参考本节的技术参考对应文档片段见 source/_includes/actions/yaml_header.md其中列出了 YAML 字段名、类型与是否必填。基本示例停用一条自动化在 YAML 中该动作名为automation.turn_off。一个基础示例如下action: automation.turn_off target: entity_id: automation.away_lighting这段配置会停用automation.away_lighting这条自动化并停止它当前正在运行的任何动作。让正在运行的动作执行完毕stop_actions如果需要让正在运行的动作自然结束将stop_actions设为falseaction: automation.turn_off target: entity_id: automation.away_lighting data: stop_actions: falseYAML 字段参考字段说明必填类型默认值stop_actions是否停止当前正在运行的动作。否布尔值true动作的目标Targetsautomation.turn_off必须指定目标。目标是动作的作用对象详见 source/_includes/actions/targets.md。你可以把动作指向单个实体、设备、区域area、楼层floor或标签labelHome Assistant 会对该目标背后每一个匹配的自动化实体执行此动作实体Entity某一条具体的自动化实体例如automation.living_room。设备Device属于某台设备的所有自动化实体。区域Area某个房间或区域内的所有自动化实体。楼层Floor某一楼层上的所有自动化实体。标签Label共享某个标签的所有自动化实体。你也可以在同一个动作中混用不同类型的目标。例如在同一个动作里同时添加一个具体实体和一个区域作为目标让动作同时作用于两者。实操示例看电影时暂停感应灯下面的完整自动化示例来自官方文档Automation: pause the motion lights while you watch a movie。场景是当媒体播放器开始播放时停用感应灯自动化让灯光在电影期间保持现状、不被触发改变。触发器媒体播放器开始播放Media player started playing目标Living room客厅动作Turn off automation停用自动化目标Motion lights感应灯对应的完整 YAMLautomation: - alias: Pause the motion lights during a movie triggers: - trigger: media_player.started_playing target: entity_id: media_player.living_room actions: - action: automation.turn_off target: entity_id: automation.motion_lights注意这里使用了新式triggers/actions列表语法trigger类型为media_player.started_playing这是媒体播放器实体开始播放时触发的事件触发器。你可以直接复制该示例并适配自己的实体 ID。快速验证在 Actions 工具中试运行想不写任何 YAML 就验证这个动作的行为打开SettingsToolsActions开发者工具中的操作界面搜索automation.turn_off填写字段并点击Perform action即可在你的真实实体上立即观察效果对应文档片段见 source/_includes/actions/try_it.md。Good to know三条必须牢记的行为约定官方文档总结了三条容易被忽视的行为约定被停用的自动化仍然保留在自动化列表中其配置不会被清除。它只是不再运行设置、历史状态等信息都会保留。停止正在运行的动作并不会撤销该自动化已经执行过的事情。例如已发送的通知、已切换的开关状态不会因为停用而回滚。如果只想临时停用一段时间可以把automation.turn_off与 Turn on automation 配对使用例如在另一条自动化中先停用、延迟后再启用实现离开时禁用、回家时恢复的效果。与其他相关动作配合使用automation.turn_off通常与以下两个动作协同使用相关动作的官方文档定义见对应文件automation.turn_on启用一条自动化。启用后自动化会重新监听其触发器并在触发时运行。注意启用不会立即运行该自动化只会让它重新开始监听需要立即运行请使用automation.trigger。一个典型场景是离家时启用离家模式自动化。automation.toggle在启用与停用之间翻转自动化——关闭则开启开启则关闭并停止其正在运行的动作。它没有stop_actions选项总会停止正在运行的动作因此适合用在单一控制如墙面按钮、toggle helper上如果你需要精确的停用但让动作跑完或仅启用应分别使用turn_off或turn_on。从源码结构看这三个动作共享同一套automation域的目标解析机制区别主要在于对是否停止正在运行的动作和翻转后的目标状态的处理策略这也是文档建议需要明确结果时优先使用turn_on/turn_off而非toggle的原因。更多示例与求助渠道官方为每个动作都提供了可复制的真实场景示例见 source/_includes/actions/more_examples.md你可以把示例复制到自己的自动化中仅需替换为自身环境的实体 ID。如果使用过程中遇到问题官方建议在社区中提供你调用的动作名称与预期行为来寻求帮助见 source/_includes/actions/stuck.md现代 AI 助手也能根据你的自然语言描述解释动作或推荐合适的动作。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表