Koenkk / zigbee2mqtt

Zigbee šŸ to MQTT bridge šŸŒ‰, get rid of your proprietary Zigbee bridges šŸ”Ø
https://www.zigbee2mqtt.io
GNU General Public License v3.0
11.5k stars 1.63k forks source link

Loginovo ZG-101ZL button - behaviour does not match docs #20407

Open uncle-fed opened 6 months ago

uncle-fed commented 6 months ago

What happened?

The button's actual behaviour differs from docs plus there is a likely actual bug in implemented behaviour:

  1. The docs state that its possible to change between the event and command modes by sending a message to zigbee2mqtt/FRIENDLY_NAME/set with payload {"operation_mode": NEW_VALUE}. This does not work. Sending the message (bioth in CLI as well as via the web front-end) produces the following error:

Publish 'set' 'operation_mode' to '0x...' failed: 'Error: Write 0x..../1 genOnOff({"tuyaOperationMode":1}, {"sendWhen":"immediate","timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":true,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null," writeUndiv":false}) failed (Timeout - 60044 - 1 - 186 - 6 - 4 after 10000ms)'.

  1. ... However. it is possible to change between the event and command modes by doing a triple-click. I personally am quite puzzled by this behaviour. It is quite easy sometimes to produce 3 clicks when trying to do a double-click, which is a valid action for this button. When the mode changes, all action values become totally different. The single/double become on/off in the command mode. And this can become very confusing for somebody that expects a consistent behaviour from their button. I really don't follow the reasons of this implementation, but I understand that this is most likely the hardware "feature". Still, I wonder if there was a better way of making sure that such a major setting wouldn't be easily changed by a slightly trembling finger.

  2. The docs state that the action can also be one of the following: brightness_move_to_level, color_temperature_move, brightness_step_up, brightness_step_down. How do I get to see those values? I cannot generate them no matter what I try with the button.

The behaviour I have currently is the following. In the event mode the button produces single, double and hold. In the command mode button produces on (when clicked once), off (when clicked twice) and no action when it is being held, however, when the button is long pressed in the command mode, it does generate messages every few hundred ms, but those messages only contain last_seen and linkquality. As if the action is there but is missing in the actual message.

Just in case I will mention that I have device_options: legacy: false set in my config. Is this long press in the command mode where the brightness_step_up/down should be visible? Or do I have to set something extra in my config to make this working properly? In this case I believe the docs should be updated with more detailed information.

What did you expect to happen?

No response

How to reproduce it (minimal and precise)

No response

Zigbee2MQTT version

1.34.0 commit: 56589dcc

Adapter firmware version

20221226

Adapter

SONOFF Zigbee 3.0 USB Dongle Plus (CC2652)

Debug log

No response

kahatie commented 4 months ago

i have same problem i just add by default operation_mode is set to null but act like is on event mode
payload '{"action":"single","battery":100,"linkquality":140,"operation_mode":null,"voltage":3000}'

i tried to made a custom external_converters but failed it always load Loginovo | ZG-101ZL instead of my file

Zigbee2MQTT version

1.35.3 commit: fe0742a

Adapter firmware version

6.10.3.0 build 297

Adapter

SONOFF Zigbee 3.0 USB Dongle Plus E (EFR32MG21)

goldiee36 commented 4 months ago

The triple-click behavior is indeed very annoying. If setting the "operation_mode" would be working, at least we could automatically change back to "event" mode, every time someone accidentally triple-clicks.

numminorih-git commented 2 months ago

i have same problem

Raganal commented 1 month ago

Not working button (after searching issues and configs nothing help):

Zigbee Model TS004F Zigbee Manufacturer _TZ3000_ja5osu5g

Firmware version 0122052017 Manufacturer Loginovo Model ZG-101ZL

Action Triggered action (e.g. a button click) Empty string("")

Failed to configure '0xa4c138f4bf3bcdb2', attempt 4 (Error: ZCL command 0xa4c138f4bf3bcdb2/1 genBasic.read([4,0,1,5,7,65534], {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":true,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (Status 'UNSUPPORTED_ATTRIBUTE') at Endpoint.checkStatus (/app/node_modules/zigbee-herdsman/src/controller/model/endpoint.ts:315:28) at Endpoint.zclCommand (/app/node_modules/zigbee-herdsman/src/controller/model/endpoint.ts:770:26) at Endpoint.read (/app/node_modules/zigbee-herdsman/src/controller/model/endpoint.ts:401:29) at Object.configure (/app/node_modules/zigbee-herdsman-converters/src/devices/moes.ts:473:13) at Configure.configure (/app/lib/extension/configure.ts:121:13) at Configure.onMQTTMessage (/app/lib/extension/configure.ts:55:21) at EventEmitter.wrappedCallback (/app/lib/eventBus.ts:174:17))

darkmattercoder commented 2 weeks ago

I also observe the triple click behaviour. I do not fully understand what command mode and event mode even means. Below is my log what happens when I start in event mode, press once, press twice, hold, then switching to command mode via triple click, then press once, press twice, hold again to see the different log entries:

2024-06-24 16:15:06MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"single","battery":100,"linkquality":51,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:06MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":51,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:06MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'single'
.
.
.
2024-06-24 16:15:13MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"double","battery":100,"linkquality":12,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:13MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":12,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:13MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'double'
2024-06-24 16:15:14MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"on","battery":100,"linkquality":12,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:14MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":12,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:14MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'on'
.
.
.
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"hold","battery":100,"linkquality":18,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":18,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'hold'
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"off","battery":100,"linkquality":18,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":18,"operation_mode":"event","voltage":3000}'
2024-06-24 16:15:24MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'off'
.
.
.
2024-06-24 16:15:35MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":null,"battery":100,"linkquality":48,"operation_mode":"command","voltage":3000}'
.
.
.
2024-06-24 16:15:39MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"on","battery":100,"linkquality":60,"operation_mode":"command","voltage":3000}'
2024-06-24 16:15:39MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":60,"operation_mode":"command","voltage":3000}'
2024-06-24 16:15:39MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'on'
.
.
.
2024-06-24 16:15:43MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"off","battery":100,"linkquality":66,"operation_mode":"command","voltage":3000}'
2024-06-24 16:15:43MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":"","battery":100,"linkquality":66,"operation_mode":"command","voltage":3000}'
2024-06-24 16:15:43MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2/action', payload 'off'
.
.
.
2024-06-24 16:15:55MQTT publish: topic 'zigbee2mqtt/0xa4c1389d9e19f9f2', payload '{"action":null,"battery":100,"linkquality":45,"operation_mode":"event","voltage":3000}'

What you see from there is that when event mode is active, a single click sends single, a double click sends double, immediately followed by on, holding the button sends hold immediately followed by off. Then in command mode, a single click sends on and a double click sends off, while a hold has no effect at all.