[TS0505B / ZB-LZD10-RCW / _TZ3210_s9lumfhn] Intermittent invalid brightness level 256 prevents light from turning on
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 15.7k
- Forks
- 2k
- Avg merge
- 18h 55m
- Merged PRs (30d)
- 35
Description
What happened?
Multiple Moes ZB-LZD10-RCW downlights intermittently fail to turn on after they have been off or unused for several hours.
When the problem occurs, Zigbee2MQTT attempts to send a genLevelCtrl.moveToLevelWithOnOff command using brightness level 256. The command is rejected because the level exceeds the valid ZCL value:
[03/08/2026, 10:54:56] z2m: Publish 'set' 'state' to 'Office light' failed: 'Error: ZCL command 0xa4c13882a5a83b6c/1 genLevelCtrl.moveToLevelWithOnOff({"level":256,"transtime":1,"optionsMask":0,"optionsOverride":0}, {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"reservedBits":0,"writeUndiv":false}) failed (Status 'INVALID_VALUE' level requires max of 255)'
The Zigbee2MQTT frontend has also shown a brightness value of 256, even though the brightness exposure shows a maximum of 254.
Immediately before one failure, Zigbee2MQTT published the following state:
[03/08/2026, 10:54:51] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Office light', payload '{"brightness":1,"color":{"h":218,"hue":218,"s":17,"saturation":17,"x":0.3065,"y":0.3166},"color_mode":"color_temp","color_power_on_behavior":null,"color_temp":143,"do_not_disturb":null,"effect":null,"linkquality":176,"state":"OFF"}'
[03/08/2026, 10:54:52] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Office light', payload '{"brightness":1,"color":{"h":21
What did you expect to happen?
What did you expect to happen?
Turning the light on should use a valid brightness level within the device's exposed range of 1–254.
Zigbee2MQTT should not store, restore or send brightness level 256. If an invalid remembered value exists, it should be clamped to the supported maximum before sending the ZCL command.
A state-only ON or TOGGLE command should not fail because of an invalid internally remembered brightness value.
How to reproduce it (minimal and precise)
The issue is intermittent and does not occur on every toggle.
- Pair a TS0505B / ZB-LZD10-RCW downlight manufactured by
_TZ3210_s9lumfhn. - Control the light normally through Zigbee2MQTT and Home Assistant.
- Turn the light off and leave it unused for several hours.
- Send a state-only
ONorTOGGLEcommand. In my setup this is sent by a Home Assistantlight.toggleautomation. - The light sometimes fails to turn on.
- Zigbee2MQTT logs show
moveToLevelWithOnOffbeing sent with"level":256. - Manually send a valid brightness, such as
254, and the light begins working again.
I have observed the issue on multiple downlights of this model.
Zigbee2MQTT version
2.13.0 (unknown)
Adapter firmware version
{"build":0,"ezsp":13,"major":7,"minor":4,"patch":3,"revision":"7.4.3 [GA]","special":0,"type":170}
Adapter
EmberZNet
Setup
os: #1 SMP PREEMPT_DYNAMIC Thu Jul 30 12:31:10 UTC 2026 - 6.18.39-haos - x64
node: v24.18.1
ha: true
Device database.db entry
No response
Debug log
Notes
Device
definition: ZB-LZD10-RCW - Moes (v0.0.0)
software_build_id: z.1.0
date_code: undefined
endpoints:
{"1":{"bindings":[],"clusters":{"input":["genBasic","genIdentify","6280","genGroups","genScenes","genOnOff","genLevelCtrl","lightingColorCtrl","genTime","touchlink","65518"],"output":["genOta","touchlink","65518"]},"configured_reportings":[],"scenes":[]}}
Health
time: Mon Aug 03 2026 10:57:16 GMT+1000 (Australian Eastern Standard Time)
os.load_average: 3.52, 1.97, 1.2
os.memory_percent: 56.8398
process.memory_percent: 2.1305
process.uptime_sec: 96004
{"leave_count":0,"messages":4101,"messages_per_sec":0.0427,"network_address_changes":0}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the state-only ON/TOGGLE path that sends genLevelCtrl.moveToLevelWithOnOff and the handling of the remembered brightness value. Reproduce with the TS0505B / ZB-LZD10-RCW device after several hours off, then verify that ON and TOGGLE never publish level 256 and use a value within the exposed 1–254 range.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100