You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Waveshare POE TCP Modbus继电器连接成功但无法读写问题求助

Waveshare 8路Modbus POE以太网继电器Home Assistant集成问题

我有一台Waveshare 8路Modbus POE以太网继电器,尝试将其集成到Home Assistant时遇到故障:已通过Python的pymodbus TCP客户端建立连接,Home Assistant日志也显示连接成功,但无论是在HA界面还是Python交互式环境中,都无法切换继电器的开关状态。

Home Assistant测试配置

modbus:
  - name: waveshare_relay
    type: tcp
    host: 192.168.0.107
    port: 502
    binary_sensors:
      - name: relay_1_status
        slave: 1
        address: 0
        input_type: coil
        scan_interval: 5
    switches:
      - name: relay_1
        slave: 1
        address: 0
        write_type: coil

Home Assistant日志信息

2024-05-19 13:40:18.364 INFO (MainThread) [homeassistant.setup]
    Setting up modbus
2024-05-19 13:40:18.376 INFO (MainThread) [homeassistant.setup]
    Setting up switch
2024-05-19 13:40:18.378 INFO (MainThread) [homeassistant.setup]
    Setup of domain switch took 0.00 seconds
2024-05-19 13:40:18.381 INFO (MainThread) [homeassistant.setup]
    Setup of domain modbus took 0.02 seconds
2024-05-19 13:40:18.388 INFO (MainThread) [homeassistant.components.modbus.modbus]
    modbus waveshare_relay communication open
2024-05-19 13:40:29.088 INFO (MainThread) [homeassistant.components.binary_sensor]
    Setting up modbus.binary_sensor
2024-05-19 13:40:29.092 INFO (MainThread) [homeassistant.components.switch] 
    Setting up modbus.switch
2024-05-19 13:40:42.084 ERROR (MainThread) [homeassistant.components.modbus.modbus]
    Pymodbus: waveshare_relay:
    Error: device: 1 address: 0 -> Modbus Error: [Input/Output] 
    ERROR: No response received after 3 retries

VirCOM配置截图

VirCOM配置截图

pymodbus测试代码及结果

Python 3.12.2 (main, Feb 14 2024, 00:14:50) [Clang 15.0.0 (clang-1500.1.0.2.5)]
on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> from pymodbus.client import ModbusTcpClient
>>>
>>> WAVESHARE_IP = '192.168.0.107'
>>> WAVESHARE_PORT = 502
>>>
>>> client = ModbusTcpClient(WAVESHARE_IP, port=WAVESHARE_PORT)
>>> client.connect()
True
>>> print(client.__dict__)

{'comm_params': CommParams(comm_name='comm', comm_type=<CommType.TCP: 1>,
reconnect_delay=0.1, reconnect_delay_max=300.0, timeout_connect=3,
host='192.168.0.107', port=502, source_address=None, handle_local_echo=False,
sslctx=None, baudrate=None, bytesize=None, parity=None, stopbits=None),
'params': ModbusBaseSyncClient._params(retries=3, retry_on_empty=False,
broadcast_enable=False, reconnect_delay=None, source_address=None),
'retry_on_empty': 0, 'no_resend_on_retry': False, 'slaves': [], 'framer':
<pymodbus.framer.socket_framer.ModbusSocketFramer object at 0x102453320>,
'transaction': <pymodbus.transaction.ModbusTransactionManager object at
0x1031fa420>, 'reconnect_delay_current': 0, 'use_udp': False, 'state': 0,
'last_frame_end': 0, 'silent_interval': 0, 'transport': None, 'socket':
<socket.socket fd=3, family=2, type=1, proto=6, laddr=('192.168.0.100', 61189),
raddr=('192.168.0.107', 502)>}

>>> result = client.read_coils(0, 1)

>>> print(result.__dict__)
{'fcode': 1, 'message': '[Input/Output] Modbus Error: [Invalid Message]
 No response received, expected at least 8 bytes (0 received)', 'string':
 '[Input/Output] Modbus Error: [Invalid Message] No response received, expected
 at least 8 bytes (0 received)'}

>>> client.close()

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:47:01