SonoffLAN icon indicating copy to clipboard operation
SonoffLAN copied to clipboard

Zigbee 4CH switch channels not working independently in HA

Open fdaneluzzi opened this issue 2 months ago • 1 comments

Hi,

I’m having an issue with Zigbee 4-channel switches when connected through SonoffLAN.

  • Device: Sonoff Zigbee 4CH switch (paired via NSPanel Pro acting as Zigbee gateway)
  • Integration: SonoffLAN v3.9.3
  • HA Core 2025.9.4
  • Mode: auto

Problem: In Home Assistant, all 4 channels are visible as separate entities. However, they don’t work independently:

  • When I turn on one channel, the others are automatically turned off.
  • In the eWeLink app everything works fine: I can keep multiple channels ON at the same time.

Expected behavior: Each channel should be independent in Home Assistant, just like in the eWeLink app.

Here is a debug log when I first turn ON outlet 0 and then outlet 1:

2025-09-27 17:18:13.304 DEBUG [...] {'switches': [{'outlet': 0, 'switch': 'on'}, {'outlet': 1, 'switch': 'off'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:21.981 DEBUG [...] {'switches': [{'outlet': 0, 'switch': 'off'}, {'outlet': 1, 'switch': 'on'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}

As you can see, the payload reports all 4 outlets together, and the “on” state is exclusive. This causes HA to treat the device as if only one channel can be active at a time, even though in eWeLink multiple outlets can stay ON simultaneously.

Extra: possible event loop / duplicate updates

Even with only two user actions (turn ON outlet 0, then turn ON outlet 1), the debug log keeps growing with many duplicate state messages within a few seconds, often repeating the exact same switches array multiple times.

Short sample (trimmed to show repetition):

2025-09-27 17:18:13.304 DEBUG [...] => Cloud4 | {'switches': [{'outlet': 0, 'switch': 'on'}, {'outlet': 1, 'switch': 'off'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:15.280 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'on'}, {'outlet': 1, 'switch': 'off'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:17.343 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'on'}, {'outlet': 1, 'switch': 'off'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:18.032 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'on'}, {'outlet': 1, 'switch': 'off'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}

2025-09-27 17:18:21.981 DEBUG [...] => Cloud4 | {'switches': [{'outlet': 0, 'switch': 'off'}, {'outlet': 1, 'switch': 'on'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:24.754 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'off'}, {'outlet': 1, 'switch': 'on'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:27.311 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'off'}, {'outlet': 1, 'switch': 'on'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}
2025-09-27 17:18:28.093 DEBUG [...] <= Cloud3 | {'switches': [{'outlet': 0, 'switch': 'off'}, {'outlet': 1, 'switch': 'on'}, {'outlet': 2, 'switch': 'off'}, {'outlet': 3, 'switch': 'off'}]}

Please let me know if you’d like me to capture a longer debug log or enable extra logging.

Thanks a lot for your work on this integration!

fdaneluzzi avatar Sep 27 '25 20:09 fdaneluzzi

Start with device diagnostics. I have no idea what device you talking about. https://github.com/AlexxIT/SonoffLAN?tab=readme-ov-file#issues

AlexxIT avatar Sep 28 '25 10:09 AlexxIT