ARTICLE DETAIL

资讯详情

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

Home Assistant 中使用 isy994.send_program_command 控制 ISY 程序:完整配置指南

Home Assistant 中使用 isy994.send_program_command 控制 ISY 程序:完整配置指南 Home Assistant 中使用 isy994.send_program_command 控制 ISY 程序完整配置指南【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io导读isy994.send_program_command是 Home Assistant 的 ISY/IoX 集成提供的一项核心动作Action用于向 Universal Devices ISY 控制器上的**程序Program或文件夹Folder**发送运行、停止、启用、禁用等控制命令。本文基于该动作的官方文档source/_actions/isy994.send_program_command.markdown结合 ISY/IoX 集成说明source/_integrations/isy994.markdown与同域关联动作文档系统讲解该动作的适用场景、UI 与 YAML 两种配置方式、全部参数取值与含义并给出可直接套用的自动化示例。读完本文你将能够在自动化或脚本中精确地远程驱动 ISY 控制器上的任意程序包括运行 THEN/ELSE 分支、中止运行中的程序以及控制程序的开机自启状态。动作概述它能做什么isy994.send_program_command的官方描述是Sends a command to control an ISY program or folder.也就是说该动作把 Home Assistant 作为命令下发端通过 ISY 控制器自身的 REST 接口向指定程序或文件夹发送一条控制指令。典型场景包括运行某个 ISY 程序run触发其 THEN 或 ELSE 分支逻辑停止一个正在循环或持续执行的程序stop启用/禁用程序enable/disable控制程序是否在控制器开机重启时自动运行enable_run_at_startup/disable_run_at_startup直接运行程序的 THEN 或 ELSE 分支run_then/run_else。与节点命令的关键区别该动作不支持目标targets这一点与同为 ISY 域的 isy994.send_node_command 截然不同。节点命令需要选定一个实体、设备、区域或标签作为目标而程序命令是通过**地址Address或名称Name**直接锁定 ISY 上的程序。此外当同时连接了多台 ISY 控制器时还可以通过可选的isy参数指定由哪一台控制器执行命令。值得强调的是ISY 上的程序能力非常强。根据 ISY/IoX 集成文档ISY 是 Universal Devices 出品的家庭自动化控制器支持 Insteon、X10、Z-Wave 与 Zigbee/Matter 设备通过 ISY 管理控制台Admin Console里的 Programs 标签页还能利用HA.binary_sensor、HA.cover、HA.fan、HA.lock、HA.switch等特殊目录创建自定义设备——这些设备最终也由 ISY 程序驱动。因此send_program_command正是从 Home Assistant 侧按需拨动这些控制器内部逻辑的开关。在用户界面中使用该动作如果你更习惯用可视化方式编排自动化source/_includes/actions/ui_header.md可以按以下步骤操作进入设置自动化与场景Automations scenes打开一个现有的自动化或脚本或者选择创建自动化创建新自动化如果是新建自动化先在当When区域添加一个触发器脚本Script不需要触发器它们在被其他自动化或服务调用时才运行在那么执行Then do区域选择添加动作Add action在搜索框中搜索并选择ISY: Send program command选择要下发的命令Command并通过地址Address或名称Name中的任意一个来指定目标程序点击保存Save。UI 中的可配置选项选项说明Command发送给程序的命令取值为run、run_then、run_else、stop、enable、disable、enable_run_at_startup或disable_run_at_startup之一Address要控制的程序的地址地址与名称二选一Name要控制的程序的名称地址与名称二选一ISY连接了多台 ISY 时指定使用哪一台留空则在每一台含有匹配程序的 ISY 上执行命令在 YAML 中使用该动作如果直接在 YAML 中编写自动化或脚本或者想精确了解 Home Assistant 底层做了什么事source/_includes/actions/yaml_header.md在 YAML 中该动作的名称为isy994.send_program_command。官方文档给出的基础示例如下action: isy994.send_program_command data: command: run name: My program该示例会把run命令发送给名为My program的 ISY 程序即运行它。将其放入一个完整的自动化中例如配合homeassistant域的时间触发器使用automation: - alias: Run ISY morning program at 7am triggers: - trigger: time at: 07:00:00 actions: - action: isy994.send_program_command data: command: run name: Morning Routine如果希望更精确地定位程序例如名称可能重复、或需要引用文件夹层级中的程序可以改用地址定位action: isy994.send_program_command data: command: run address: 0001YAML 参数参考表参数必填类型说明command是string发送给程序的命令取值为run、run_then、run_else、stop、enable、disable、enable_run_at_startup、disable_run_at_startup之一address否string要控制的程序的地址地址与名称二选一必须提供其中一个name否string要控制的程序的名称地址与名称二选一必须提供其中一个isy否string连接了多台 ISY 时指定使用哪一台留空则在每一台含有匹配程序的 ISY 上执行注意address与name必须提供至少一个来标识目标程序二者可同时提供但至少要有一个非空见文档末尾的 note 提示。命令取值逐项解析command是唯一必填参数理解每个取值对正确使用该动作至关重要命令作用run运行程序按程序的 IF/THEN/ELSE 逻辑正常执行run_then强制运行程序的 THEN 分支run_else强制运行程序的 ELSE 分支stop停止当前正在运行的程序enable启用程序允许其被运行/触发disable禁用程序阻止其运行enable_run_at_startup启用开机时自动运行标志ISY 控制器重启后会自动运行该程序disable_run_at_startup关闭开机时自动运行标志从源码结构看这 8 个取值直接对应 ISY 控制器 REST API 中程序命令的标准枚举Home Assistant 侧仅负责将字符串透传给控制器。因此在编写自动化时可以把run_then/run_else视为对 ISY 程序内部分支逻辑的直接寻址而enable/disable则用于在不需要改动 ISY 程序本身的前提下动态开关某个程序的功能。多 ISY 场景下的isy参数当 Home Assistant 中同时配置了多台 ISY例如家中有 ISY994 与 eisy/Polisy 同时接入程序名或地址可能在多台控制器上重复。此时指定isy参数命令只发送到该名称对应的那一台 ISY留空isy命令会发送到每一台含有匹配程序同名或同地址的 ISY 上。这一行为与集成文档中ISY 是一个 hub 类型的集成的定位一致——Home Assistant 把每台 ISY 控制器作为一个 hub 管理动作层因此需要额外的消歧字段。与相关动作的配合使用官方文档在该动作的related_actions中声明了三个关系紧密的动作它们共同构成了 ISY 域在 Home Assistant 中的远程控制能力isy994.send_node_command向 ISY节点发送命令如beep、brighten、dim、fade_up、fast_on、fast_off、query等。它使用targets定位实体适合控制具体设备而非程序逻辑。isy994.rename_node在 ISY 上重命名节点或场景。注意该动作不会自动同步 Home Assistant 的实体名称需要在重载集成或重启后才会更新实体名/实体 ID且仅当你在 Home Assistant 中未自定义过该名称时。isy994.send_raw_node_command向节点发送原始命令。一个典型的组合用法是先用send_program_command运行 ISY 上的某个场景程序例如回家模式随后用send_node_command对个别灯具执行fast_on或dim微调——程序负责整体编排节点命令负责细粒度修正。动手验证在开发者工具中试跑想在不写任何 YAML 的情况下快速验证该动作source/_includes/actions/try_it.md可以进入设置工具操作Actions开发者工具中的 Actions 页面搜索isy994.send_program_command填入command与程序名/地址点击执行动作Perform action即可在真实实体上立即观察效果。这对确认程序名拼写、地址格式以及命令行为非常有用。排查思路与注意事项程序定位失败务必提供address或name中的至少一项名称需要与 ISY Admin Console 中的程序名称完全一致。多控制器误触发若连接了多台 ISY 且未指定isy命令会在所有匹配的控制器上执行需按需显式指定。程序状态与实体状态不同步send_program_command操作的是 ISY 控制器的内部程序不是某个 Home Assistant 实体若要感知程序执行结果可结合集成文档中提到的isy994_control事件source/_integrations/isy994.markdown#L88-L121编写基于事件的自动化。与自定义设备程序的关系如果你在 ISY 上通过HA.*目录创建了自定义 binary_sensor/cover/fan/lock/switch 设备这些设备的状态与动作本身也由status/actions程序驱动详见 ISY/IoX 集成文档的Creating Custom Devices using ISY Programs章节本动作可对这些底层程序做手动干预。小结isy994.send_program_command是打通 Home Assistant 与 ISY 控制器程序层的关键动作它不需要 targets而是以地址/名称直接寻址程序支持run、run_then、run_else、stop、enable、disable以及两个开机自启标志共 8 种命令并能通过isy参数在多控制器环境中精确路由。无论是编排 ISY 内置场景程序、强制触发某个分支还是动态启停程序掌握本文的参数表与示例即可在自动化与脚本中直接落地使用。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表