尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Home Assistant 中的 siren.toggle 动作:语法、目标与自动化实战指南

Home Assistant 中的 siren.toggle 动作:语法、目标与自动化实战指南 Home Assistant 中的 siren.toggle 动作语法、目标与自动化实战指南【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io导读siren.toggle是 Home Assistant 中 Siren警笛/门铃实体的核心控制动作之一用于在开启与关闭之间切换警笛或铃声设备。本篇指南以 source/_actions/siren.toggle.markdown 为骨架结合其姊妹动作siren.turn_on、siren.turn_off以及 Siren 集成文档 中的实体状态模型系统讲解该动作的 UI 操作步骤、YAML 语法、目标Target机制与典型自动化场景。读完本篇你将能够独立编写按钮切换警笛门开报警定时静音等实战自动化并理解 siren 动作在 Home Assistant 动作体系中的定位与限制。一、认识 siren.toggle动作语义与适用前提Siren集成ha_domain: siren自 2021.8 版本引入属于实体型集成见 source/_integrations/siren.markdown 的前置元数据用于控制警笛和铃声类设备。一个 siren 实体的状态只有两种On或Off另有 Unavailable 表示实体暂不可用、Unknown 表示状态未知。在此基础上siren.toggle的语义非常直接如果警笛当前是开启的则将其关闭如果当前是关闭的则将其开启。官方描述为 Toggles a siren on or off.有一个必须记住的适用前提见原文档 Good to know该动作仅对同时支持开启和关闭的 siren 设备有效。如果你的设备只支持单向操作toggle无法正常工作此时应改用siren.turn_on或siren.turn_off。siren.toggle也是 source/_actions/siren.turn_on.markdown 与 source/_actions/siren.turn_off.markdown 的关联动作related_actions三者共同构成了 siren 实体的完整控制面。二、在 UI 中调用该动作原文档给出的 UI 操作路径适用于**自动化Automations与脚本Scripts**两类场景二者唯一区别在于是否必须有触发器进入Settings Automations scenes设置 自动化与场景。打开一个已有的自动化或脚本新建时选择Create automationCreate new automation。如果是新建自动化在When当…时部分添加一个触发器脚本不需要触发器它们由其他对象调用时执行。在Then do然后执行部分选择Add action添加动作。选择要控制的对象在By target按目标详见下文目标机制下选择要切换的警笛。在该目标列出的动作中选择Toggle siren切换警笛。点击Save保存。UI 中的可选参数该动作在 UI 中除目标外没有任何额外选项。与之对比siren.turn_on在 UI 中提供 Tone音调、Volume音量、Duration时长三个可选参数但它们都属于开启类参数toggle只负责状态翻转不携带任何运行参数。三、在 YAML 中使用 siren.toggle在 YAML 中该动作的完整名称是siren.toggle。原文档给出的基础示例action: siren.toggle target: entity_id: siren.entry这段配置的作用是将实体siren.entry在开启与关闭之间翻转一次。YAML 可选参数与 UI 一致该动作在 YAML 中同样没有除目标外的额外参数。它只有两个字段action动作名必填与target目标必填。在自动化或脚本中siren.toggle需要作为actions列表的一项出现。一个完整的自动化骨架如下automation: - alias: Example toggle automation triggers: - trigger: state entity_id: input_button.entry_siren actions: - action: siren.toggle target: entity_id: siren.entry这里用trigger: state监听一个输入按钮的状态变化来触发切换动作正是原文档按钮切换警笛示例的底层结构。四、目标机制Targets动作的作用对象siren.toggle要求指定一个target。Home Assistant 的目标机制非常灵活你可以把动作指向单个实体、设备、区域、楼层或标签动作会作用于匹配到的每一个 siren 实体Entity实体单个具体的 siren 实体如siren.entry。Device设备属于某台设备的所有 siren 实体。Area区域某个房间或区域内的所有 siren 实体。Floor楼层某一楼层上的所有 siren 实体。Label标签共享同一标签的所有 siren 实体。你还可以在同一次动作中混合不同目标类型例如同时添加一个具体实体和一个区域让动作对两者一起执行。这意味着一个siren.toggle动作就能批量切换全屋或全楼的警笛与铃声设备非常适合一键静默一键警戒类场景。五、与 siren.turn_on / siren.turn_off 的协作要写好 toggle 场景必须理解三兄弟的分工动作语义附加参数适用前提siren.toggle开→关、关→开无设备同时支持开与关siren.turn_on开启警笛/铃声tonestring音调可用 key 或 value、volume_levelfloat0~1、durationinteger秒设备支持开启附加参数需设备支持siren.turn_off关闭警笛/铃声无设备支持关闭turn_on的三个可选参数见 source/_actions/siren.turn_on.markdown在 YAML 中的类型分别为tone为 string、volume_level为 float0 为无声1 为最大音量、duration为 integer声音播放的秒数。它们只有在设备本身支持音调、音量、时长设置时才生效具体能力以提供该 siren 的集成的文档为准。一个典型组合用siren.turn_on指定音调、音量和时长发起报警用siren.turn_off或toggle在条件满足时静音。toggle由于不含参数通常用于纯状态翻转的交互型场景如按钮、语音指令而有参的turn_on更适合报警策略。六、自动化实战示例以下三个示例分别取自siren.toggle、siren.turn_on、siren.turn_off三个动作文档覆盖了最常见的 siren 自动化形态。示例 1用按钮切换警笛toggle 核心场景按下物理或仪表盘上的按钮翻转门口警笛的开/关状态automation: - alias: Toggle the entry siren with a button triggers: - trigger: state entity_id: input_button.entry_siren actions: - action: siren.toggle target: entity_id: siren.entry要点input_button实体每次被按下都会产生一次状态变化恰好与toggle的每次触发翻转一次语义匹配。示例 2离家时门开即响铃turn_on 场景出门在外时前门打开触发入口警笛automation: - alias: Sound the siren when the door opens while away triggers: - trigger: state entity_id: binary_sensor.front_door to: on conditions: - condition: state entity_id: zone.home state: 0 actions: - action: siren.turn_on target: entity_id: siren.entry要点condition: state检查zone.home的人数为 0无人确保只有离家时才触发。若你的设备支持还可在此处追加tone、volume_level、duration参数。示例 3警笛响 5 分钟后自动关闭turn_off 场景automation: - alias: Turn off the patio siren after 5 minutes triggers: - trigger: state entity_id: siren.patio to: on for: 00:05:00 actions: - action: siren.turn_off target: entity_id: siren.patio要点for: 00:05:00表示状态保持 on 满 5 分钟才触发关闭动作这是定时静音的推荐写法。若希望在无人处理时兜底也可以改用 source/_integrations/siren.markdown 中提供的轮询式写法每分钟用trigger: time_patterncondition: siren.is_on检查持续时长。七、快速验证开发者工具Try it yourself无需编写任何 YAML即可验证siren.toggle的真实行为打开Settings Tools Actions设置 工具 动作。搜索siren.toggle。在目标字段中选择一个 siren 实体点击Perform action执行动作。你会立即看到该实体在真实设备上的状态翻转结果。这也可以用来确认设备是否同时支持开启与关闭——若执行后状态未变化说明设备可能不支持双向操作。八、常见问题与边界为什么 toggle 没有音调、音量、时长参数因为toggle只做状态翻转不传递运行参数这些能力被设计在siren.turn_on中由开启动作统一携带。设备不支持关闭时怎么办用siren.turn_on代替切勿依赖toggle。如何知道设备支持哪些能力查看提供该 siren 的集成文档及其音调/音量/时长支持情况从源码结构看siren 域的能力差异主要由各设备集成的特性声明决定属于设备相关实现。批量切换怎么做在target中直接指定区域、楼层或标签Home Assistant 会自动展开为所有匹配的 siren 实体。结语siren.toggle是 siren 域中最简洁的交互型动作无附加参数、语义单一、天然适配按钮与语音等翻转场景。结合siren.turn_on的参数化报警能力、siren.turn_off的定时静音能力以及实体/设备/区域/楼层/标签五级目标机制你可以在 Home Assistant 中搭建从门开报警到一键全屋静音的完整警笛自动化体系。相关动作的完整参考文档可在仓库的 source/_actions 目录siren.toggle.markdown、siren.turn_on.markdown、siren.turn_off.markdown以及 Siren 集成文档 中继续查阅。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表