Board unreachable from Homey (timeout) while Modbus TCP port 502 is confirmed open from a PC on the same subnet

Hi, I’m running into a persistent “Timed out waiting for Waveshare response” and hope you can help pinpoint it.

Setup:

  • Homey Pro 2026, wired Ethernet, IP 192.168.1.241
  • Waveshare Modbus POE ETH Relay (8-channel), firmware V1.486, fixed IP 192.168.1.91, port 502, Modbus device ID 1, Work Mode TCP Server, “Modbus TCP to RTU” enabled, Multi-TCP Connection enabled
  • Network: UniFi (UDM SE + US-24 switch), no VLAN separation; Homey reaches all my other local LAN devices without issue

What I have verified:

  • From a Windows PC on the same subnet (192.168.1.232): Test-NetConnection 192.168.1.91 -Port 502 returns TcpTestSucceeded: True. Confirmed twice, with VirCom fully closed (also killed via Task Manager).
  • Ping to 192.168.1.91 succeeds, 0% packet loss
  • Board power-cycled several times (PoE unplugged 30s)
  • App fully uninstalled and reinstalled; board re-added through Add Device → Waveshare Relay
  • Tried polling interval 100 ms and 1000 ms, response timeout 750 ms and 2000 ms

Result: the PC connects to port 502 without any problem, but the Homey app keeps timing out. Live status shows “Last successful poll: never” with consecutive errors climbing. Board settings in the app are 192.168.1.91:502, Modbus ID 1.

Question: could there be something in how the app opens or frames the Modbus TCP session that this Waveshare model does not answer, even though a plain TCP connection to port 502 succeeds from another client on the same subnet? Happy to run any diagnostics or share a diagnostic report.

Tried other IDs, like ID 0?

Changed it to ID:0 but stil a timed out error

The readme mentions that you have to add it using the Configure page first:

Have you done this?

1. Transfer Protocol was None (VirCom → Device Settings). The board then forwards Modbus TCP unchanged to the internal RS485 bus, where the relay chip does not recognise the MBAP header and never replies. Set to Modbus TCP protocol → Modify Setting → Restart Dev. Close VirCom fully afterwards.

**2.	Modbus ID is 1**, not 0.

**3.	The board only supports coil functions.** FC01 replies; FC02/03/04 return nothing. The Waveshare app also polls the contact inputs, times out there and fails the whole cycle — which is why "Test this board" passed while the board stayed offline. No setting to disable it.

Fix: generic Modbus app (org.modbus), device type Modbus Device. Port 502, unit ID 1. Write Coil on addresses 0–7 for CH1–CH8, Read Coil to read back. Only sends what you put in a flow card, so FC02 is never requested.

Tip: an open port 502 proves the TCP handshake, not that the board answers Modbus. Test the function codes individually from a PC.