Koenkk / Koenkk/zigbee2mqtt

MH03-3Z-OLED: Home Assistant discovery generates invalid command_topic for L1/L2/L3 switches

Open
#32,673 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

problem
Dominant language
TypeScript
Stars
15.7k
Forks
2k
Avg merge
18h 55m
Merged PRs (30d)
35

Description

What happened?

I paired a Manhot MH03-3Z-OLED (TS0601, _TZE284_59dz7ioi) with Zigbee2MQTT 2.12.1-1 and enabled Home Assistant discovery.

The automatically discovered Home Assistant entities for L1, L2 and L3 do not work.

When a discovered entity is turned ON or OFF from Home Assistant, MQTT messages are published to:

zigbee2mqtt/<friendly_name>/l1/set
zigbee2mqtt/<friendly_name>/l2/set
zigbee2mqtt/<friendly_name>/l3/set

and Zigbee2MQTT logs:

Device '<friendly_name>' has no endpoint 'l1'
Device '<friendly_name>' has no endpoint 'l2'
Device '<friendly_name>' has no endpoint 'l3'

I verified with MQTT Explorer that the discovered entities publish to the endpoint-specific topics above.

The device itself works correctly from the Zigbee2MQTT web UI.

What did you expect to happen?

I expected the automatically discovered Home Assistant entities for L1, L2 and L3 to control the device correctly.

According to the Zigbee2MQTT documentation for the MH03-3Z-OLED, the device exposes state_l1, state_l2 and state_l3 and can be controlled by publishing:

{"state_l1":"ON"}
{"state_l2":"ON"}
{"state_l3":"ON"}
to:
zigbee2mqtt/<friendly_name>/set

I expected the Home Assistant discovery configuration to generate command topics and payloads that match the documented control method.
The discovered entities should operate the switches without generating endpoint errors.

The device itself works correctly when controlled from the Zigbee2MQTT frontend.
It also works correctly when publishing the documented MQTT payloads such as:
{"state_l1":"ON"}
to:
zigbee2mqtt/<friendly_name>/set
The problem only affects the Home Assistant entities created through MQTT discovery.

How to reproduce it (minimal and precise)
  1. Pair a Manhot MH03-3Z-OLED (TS0601, _TZE284_59dz7ioi) with Zigbee2MQTT.

  2. Enable Home Assistant MQTT discovery.

  3. Wait for Home Assistant to create the discovered entities for L1, L2 and L3.

  4. Turn one of the discovered entities ON or OFF from Home Assistant.

  5. Observe that Zigbee2MQTT logs:

    Device '<friendly_name>' has no endpoint 'l1'

    (or l2 / l3 depending on the entity used)

  6. Observe with MQTT Explorer that Home Assistant publishes to:

    zigbee2mqtt/<friendly_name>/l1/set

  7. Publish the documented command manually:

    Topic:
    zigbee2mqtt/<friendly_name>/set

    Payload:
    {"state_l1":"ON"}

  8. Observe that the switch operates correctly.

Zigbee2MQTT version

2.12.1

Adapter firmware version

Revision: 9.0.1 [GA]

Adapter

SLZB-06Mg24

Setup

Home Assistant OS 2026.7.4
Supervisor 2026.07.3
Operating System 18.1
Add-on on HAOS, Raspberry Pi4

Device database.db entry

No response

Debug log

[2026/7/28 23:32:47] z2m: Device 'Zigbee Switch Garden' has no endpoint 'l1'
[2026/7/28 23:32:48] z2m: Device 'Zigbee Switch Garden' has no endpoint 'l2'
[2026/7/28 23:32:49] z2m: Device 'Zigbee Switch Garden' has no endpoint 'l3'

Notes

Additional findings:

  • The device works correctly from the Zigbee2MQTT frontend.

  • The device also works correctly when publishing:

    Topic:
    zigbee2mqtt/<friendly_name>/set

    Payload:
    {"state_l1":"ON"}

  • This behavior matches the official documentation for MH03-3Z-OLED.

  • The problem seems limited to the Home Assistant MQTT discovery entities.

  • MQTT Explorer confirms that the discovered entities publish to:

    zigbee2mqtt/<friendly_name>/l1/set
    zigbee2mqtt/<friendly_name>/l2/set
    zigbee2mqtt/<friendly_name>/l3/set

    while the documented control method uses:

    zigbee2mqtt/<friendly_name>/set

    with payloads containing state_l1, state_l2 and state_l3.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or test is named in the issue. Reproduce the problem with the MH03-3Z-OLED and trace the Home Assistant MQTT discovery entry point for the L1/L2/L3 entities, comparing their generated topics and payloads with the documented zigbee2mqtt/<friendly_name>/set commands. Done means the discovered switches control all three outputs without endpoint errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.