Koenkk / Koenkk/zigbee2mqtt

[ZG-101ZL] _TZ3000_wc3gjyp3 does not implement tuyaOperationMode; operation_mode should not be exposed

Open Beginner friendly
#33,123 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?

The ZG-101ZL definition exposes operation_mode, but the variant _TZ3000_wc3gjyp3 does not implement the tuyaOperationMode attribute of genOnOff at all.

Both write and read fail with UNSUPPORTED_ATTRIBUTE:

Publish 'set' 'operation_mode' to 'test_btn' failed: 'Error: ZCL command
0xa4c1387b4250eb63/1 genOnOff.write({"tuyaOperationMode":0}, ...)
failed (Status 'UNSUPPORTED_ATTRIBUTE')'

Publish 'set' 'read' to 'test_btn' failed: 'Error: ZCL command
0xa4c1387b4250eb63/1 genOnOff.read(["tuyaOperationMode"], ...)
failed (Status 'UNSUPPORTED_ATTRIBUTE')'

The read was issued manually from the dev console while the device was
awake, so this is not a sleepy-end-device timeout — the device actively
rejects the attribute.

The triple click documented on the device page has no effect either:
it produces no action and no attribute change. The device stays in
event mode permanently.

Consequences:

  • operation_mode is unusable and z2m logs an error on every attempt
  • binding cannot work: the device keeps sending commands to the
    coordinator regardless of the binding table

Observed behaviour (unchanged before and after binding genOnOff
to another device): each press produces two messages ~200 ms apart —
a Tuya action and a standard genOnOff command.

gesture action genOnOff command
single single (no action field, likely toggle)
double double on
hold hold off

Binding genOnOff from this device to a light succeeds
("Successfully bound cluster 'genOnOff'"), but the light does not
react and the commands still reach the coordinator.

What did you expect to happen?

Either operation_mode works, or it is not exposed for this
fingerprint.

Suggested fix: a separate fingerprint for _TZ3000_wc3gjyp3 without
operation_mode and without the tuyaOperationMode write in
configure.

How to reproduce it (minimal and precise)
  1. Pair the device.
  2. Publish {"operation_mode": "command"} to <device>/set
    → UNSUPPORTED_ATTRIBUTE.
  3. Dev console → read tuyaOperationMode from genOnOff ep 1
    → UNSUPPORTED_ATTRIBUTE.
Zigbee2MQTT version

2.14.1

Adapter firmware version

9.1.0 [GA]

Adapter

SOnOff Dongle-M (EmberZNet)

Setup

plain Z2M docker container

Device database.db entry

{"id":9,"type":"EndDevice","ieeeAddr":"0xa4c1387b4250eb63","nwkAddr":51692,"manufId":4742,"manufName":"_TZ3000_wc3gjyp3","powerSource":"Battery","modelId":"TS004F","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":0,"inClusterList":[0,1,3,4,6,4096,57345],"outClusterList":[25,10,3,4,6,8,4096],"clusters":{"genBasic":{"attributes":{"modelId":"TS004F","manufacturerName":"_TZ3000_wc3gjyp3","powerSource":3,"zclVersion":3,"appVersion":151,"stackVersion":2,"hwVersion":1,"dateCode":"16042026","swBuildId":"0116042026"}},"genOnOff":{"attributes":{"32772":1,"tuyaOperationMode":1}},"genPowerCfg":{"attributes":{"batteryPercentageRemaining":200,"batteryVoltage":30}}},"binds":[{"cluster":6,"type":"endpoint","deviceIeeeAddress":"0xa4c138692471623a","endpointID":1}],"configuredReportings":[],"meta":{}}},"appVersion":151,"stackVersion":2,"hwVersion":1,"dateCode":"16042026","swBuildId":"0116042026","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{},"lastSeen":1789331181015}

Debug log

No response

Notes

Zigbee Model: TS004F
Zigbee Manufacturer: _TZ3000_wc3gjyp3
manufacturerID: 4742
Definition: ZG-101ZL (Loginovo)
Sold as: KOJIMA-SPB-ZGB-W (kojima.ru)
IEEE OUI: Telink Semiconductor (Taipei)
applicationVersion: 151
stackVersion: 2
hardwareVersion: 1
dateCode: 16042026
softwareBuildID: 0116042026

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

Start from the ZG-101ZL device definition and its fingerprint and configure handling. Add a separate fingerprint for _TZ3000_wc3gjyp3 without operation_mode or the tuyaOperationMode write, then verify that operation_mode is no longer exposed and the reported UNSUPPORTED_ATTRIBUTE operations are not attempted.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
embedded-iot
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.