ARTICLE DETAIL

资讯详情

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

Home Assistant Modbus Write Coil 动作详解:用 `modbus.write_coil` 远程控制线圈(Coil)

Home Assistant Modbus Write Coil 动作详解:用 `modbus.write_coil` 远程控制线圈(Coil) Home Assistant Modbus Write Coil 动作详解用modbus.write_coil远程控制线圈Coil【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io导读modbus.write_coil是 Home Assistant Modbus 集成提供的核心写动作action用于向已连接设备的一个或多个 Modbus 线圈coil写入开on或关off状态从而直接切换输出、继电器或其他二进制控制点。本文以 modbus.write_coil 动作文档 为主体结合 Modbus 集成配置文档 与仓库内相关实现完整讲解该动作在 UI 与 YAML 两种场景下的配置方法、函数码原理、参数取值范围并给出可直接复制的自动化示例帮助你快速把硬件二进制控制接入 Home Assistant。什么是 Write coil 动作Write coil动作负责向 Modbus 设备上的一个或多个线圈写入开/关布尔状态适合用来直接操控硬件上的输出、继电器等二进制控制点。根据写入的数据形态该动作会自动选择对应的 Modbus 标准功能码写入内容Modbus 功能码说明单个状态0x05Write Single Coil写入单个线圈状态列表0x0FWrite Multiple Coils一次性写入多个线圈仓库佐证在 2021.5 版本发布说明 中记录了 Make modbus WRITE_COIL use write_coils in case of an array即当传入数组时底层会切换为批量写线圈调用与本文档所述功能码行为一致。前置条件先配置 Modbus 通信在调用modbus.write_coil之前必须先在configuration.yaml中定义至少一个 Modbus hub通信连接。hub 的类型可以是 TCP、UDP、TCP-RTUrtuovertcp或串口serial例如典型的 TCP 连接# Example yaml: typical tcp connection modbus: - name: modbus_hub type: tcp host: IP_ADDRESS port: 502其中name是唯一标识也是动作中hub参数所引用的名称。完整的通信参数delay、message_wait_milliseconds、timeout等以及串口、多连接配置请参考 Modbus 集成配置文档。配置完成后需重启 Home Assistant 使 hub 生效。在 UI 中使用该动作如果你习惯用可视化方式搭建自动化或脚本可以按以下步骤操作对应 actions/ui_header.md 的引导流程打开设置Settings 自动化与场景Automations scenes。打开一个已有自动化或脚本或选择创建Create新建一个。如果是新建自动化在When何时部分添加一个触发器脚本不需要触发器。在Then do然后执行部分选择添加动作Add action。在搜索框中搜索并选择Modbus: Write coil。填写线圈地址Address、要写入的状态State以及可选的设备地址Slave和 hub。选择保存Save。注意该动作不支持 targets目标选择。在 UI 中不会提示你选择区域、设备、实体或标签而是直接通过名称选择 Modbus hub。UI 中的选项选项说明Address要写入的线圈地址。State要写入的单个状态或状态列表。SlaveModbus 网络上的设备从站地址默认值为 1可选。Hub要使用的 Modbus hub 名称默认值为modbus_hub可选。在 YAML 中使用该动作在 YAML 中该动作的名称是modbus.write_coil。最基础的示例如下action: modbus.write_coil data: address: 17 state: true此示例使用默认 hub将地址17的线圈切换到开。YAML 参数参考参数说明必填类型默认值address要写入的线圈地址。是整数—state单个状态或状态列表。单个状态调用 Modbus 功能码0x05列表调用功能码0x0F。是任意—slaveModbus 网络上的设备从站地址取值范围 0255。否整数1hub要使用的 Modbus hub 名称。否字符串modbus_hub批量写入多个线圈当需要同时控制多个线圈时将state传入一个布尔列表即可此时底层使用功能码0x0Faction: modbus.write_coil data: address: 17 slave: 1 hub: modbus_hub state: - true - false - true在实际自动化中的应用下面是一个完整的自动化示例当某个触发条件满足时将线圈地址17置为开、并将地址18置为关默认 hub。alias: Control relay via Modbus triggers: - trigger: state entity_id: binary_sensor.my_switch to: on actions: - action: modbus.write_coil data: address: 17 state: true - action: modbus.write_coil data: address: 18 state: false注意address同样支持十六进制写法例如0x789A与实体配置中address的规则一致见 Modbus 集成文档 中实体通用参数部分。与 Write register 动作的区分modbus.write_coil写入的是**线圈coil**的布尔状态对应功能码0x05/0x0F适合继电器、开关等二进制输出。modbus.write_register写入的是**保持寄存器holding register**的数值对应功能码0x06/0x10适合设定值、命令或数值型参数详见 modbus.write_register 动作文档。在实体配置中与 write_coil 的关系除了在自动化/脚本中直接调用动作Modbus 集成的部分实体如 fan、light、switch在配置时也支持把write_type设置为coil或coils此时实体内部的开关写操作同样会调用write_coil/write_coils见 Modbus 集成文档 中 fan 与 light 的write_type配置。这说明write_coil是集成中二进制写操作的基础原语动作调用与实体驱动共享同一套底层逻辑。立即体验想快速验证该动作无需编写 YAML打开设置Settings 工具Tools 动作Actions搜索modbus.write_coil填写字段后选择执行动作Perform action即可观察真实设备上的线圈状态变化参见 actions/try_it.md。相关动作与modbus.write_coil搭配使用的动作包括Write register向一个或多个 Modbus 保持寄存器写入数值。Stop停止 Modbus 集成相关操作。Reload重新加载 Modbus 集成配置。排障建议如果动作执行后设备无响应可以依次检查hub 名称是否匹配hub参数必须与configuration.yaml中modbus:下的name完全一致。从站地址是否正确slave默认是 1多设备 RS-485 总线场景下请核对实际设备地址02550 为广播地址。线圈地址是否正确注意线圈地址空间与寄存器地址空间可能不同部分老设备的线圈与寄存器不共享地址空间写错地址空间是常见故障原因。通信参数连接建立后部分设备需要 12 秒延迟delay或需要对message_wait_milliseconds、timeout做调整详见 Modbus 集成配置文档 的通信参数章节。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表