Skip to content

Zigbee 4CH switch channels not working independently in HA #1663

@fdaneluzzi

Description

@fdaneluzzi

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions