跳转到内容

Modbus 组件

Modbus 协议被许多消费和工业设备用于通信。 此组件允许 ESPHome 中的组件通过 RTU 协议与这些设备通信。您可以作为传感器、开关、选择器、数字或各种其他 ESPHome 组件访问设备中的线圈、输入、保持寄存器、读取寄存器,并将它们呈现给您喜欢的家庭自动化系统。您甚至可以从 ESPHome 将它们作为二进制或浮点输出写入。

各种子组件实现了以下一些 Modbus 功能(取决于其所需功能):

功能码描述
1读取线圈状态
2读取离散输入状态
3读取保持寄存器
4读取输入寄存器
5写单个线圈
6写单个寄存器
15写多个线圈
16写多个寄存器

Modbus RTU 需要 UART 总线 进行通信。

# 示例配置条目
uart:
...
modbus:
  • id (可选, ID):手动指定用于代码生成的 ID。

  • uart_id (可选, ID):如果您想使用多个 UART 总线, 手动指定 UART 组件 的 ID。

  • flow_control_pin (可选, 引脚):用于切换流控制的引脚。 这对于没有自动流控制切换的 RS485 收发器很有用, 如常见的 MAX485。

  • send_wait_time (可选, 时间):当前一个命令的应答尚未开始时,发送下一个 ModBUS 命令前的等待时间(毫秒)(即何时超时并假设不会有响应)。默认为 250 ms。 将此值设置为总线上最慢设备开始响应所需的最长时间(到第一个字节的时间)。 如果设备在此时间内开始响应,下一个命令将排队并在响应完成后发送,无论响应多长时间。

  • disable_crc (可选, boolean):如果设置为 true,则忽略错误的 CRC。默认为 false

  • role (可选, string):此组件的角色,clientserver。默认为 client