zigpy / zha-device-handlers

ZHA device handlers bridge the functionality gap created when manufacturers deviate from the ZCL specification, handling deviations and exceptions by parsing custom messages to and from Zigbee devices.
Apache License 2.0
747 stars 682 forks source link

[Device Support Request] LIVARNO LUX/LIDL Remote Control Dimmer (Tuya TS1001 based) #613

Closed docgalaxyblock closed 9 months ago

docgalaxyblock commented 3 years ago

LIDL Service website

https://zigbee.blakadder.com/Lidl_HG06323.html Already supported at Z2M: https://www.zigbee2mqtt.io/devices/FB20-002.html

Describe the solution you'd like

Device signature ``` { "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0)", "endpoints": { "1": { "profile_id": 260, "device_type": "0x0104", "in_clusters": [ "0x0000", "0x0001", "0x0003", "0x0004", "0x1000" ], "out_clusters": [ "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x000a", "0x0019", "0x1000" ] } }, "manufacturer": "_TYZB01_bngwdjsr", "model": "TS1001", "class": "zigpy.device.Device" } ```
Pairing log ``` Device 0xcf04 (bc:33:ac:ff:fe:1a:85:80) joined the network [0xcf04] Requesting 'Node Descriptor' [0xcf04] Node Descriptor: NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0) [0xcf04] Discovering endpoints [0xcf04] Discovered endpoints: [1] [0xcf04:1] Discovering endpoint information Ignoring message (b'01350201330a00') on cluster 8: unknown endpoint or cluster id: 'No cluster ID 0x0008 on (bc:33:ac:ff:fe:1a:85:80, 1)' Ignoring message (b'01360201330a00') on cluster 8: unknown endpoint or cluster id: 'No cluster ID 0x0008 on (bc:33:ac:ff:fe:1a:85:80, 1)' Ignoring message (b'01370201330a00') on cluster 8: unknown endpoint or cluster id: 'No cluster ID 0x0008 on (bc:33:ac:ff:fe:1a:85:80, 1)' [0xcf04:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096]) [0xcf04:1:0x0000] ZCL deserialize: manufacturer=None tsn=12 command_id=Command.Read_Attributes_rsp> [0xcf04:1] Manufacturer: _TYZB01_bngwdjsr [0xcf04:1] Model: TS1001 Checking quirks for _TYZB01_bngwdjsr TS1001 (bc:33:ac:ff:fe:1a:85:80) ... device - 0xCF04:bc:33:ac:ff:fe:1a:85:80 entering async_device_initialized - is_new_join: True device - 0xCF04:bc:33:ac:ff:fe:1a:85:80 has joined the ZHA zigbee network [0xCF04](TS1001): started configuration [0xCF04:ZDO](TS1001): 'async_configure' stage succeeded [0xCF04:1:0x0000]: bound 'basic' cluster: Status.SUCCESS [0xCF04:1:0x0000]: finished channel configuration [0xCF04:1:0x1000]: bound 'lightlink' cluster: Status.SUCCESS [0xCF04:1:0x1000]: finished channel configuration [0xcf04] Delivery error for seq # 0x10, on endpoint id 1 cluster 0x0000: Invalid response status [0xCF04:1:0x0000]: initializing channel: from_cache: False [0xcf04:1:0x0008] ZCL deserialize: manufacturer=None tsn=56 command_id=2> [0xcf04:1:0x0008] ZCL request 0x0002: [1, 51, 10] [0xcf04:1:0x0008] No handler for cluster command 2 [0xCF04:1:0x0001]: bound 'power' cluster: Status.SUCCESS [0xCF04:1:0x0008]: bound 'level' cluster: Status.SUCCESS [0xCF04:1:0x0008]: finished channel configuration [0xCF04:1:0x0006]: bound 'on_off' cluster: Status.SUCCESS [0xCF04:1:0x0006]: finished channel configuration [0xCF04:1:0x0001]: failed to set reporting for 'battery_voltage' attr on 'power' cluster: [0xcf04] Delivery error for seq # 0x16, on endpoint id 1 cluster 0x0001: Invalid response status [0xCF04:1:0x0001]: failed to set reporting for 'battery_percentage_remaining' attr on 'power' cluster: [0xcf04:1:0x0001]: Message send failure [0xCF04:1:0x0001]: finished channel configuration [0xcf04:1:0x0008] ZCL deserialize: manufacturer=None tsn=57 command_id=2> [0xcf04:1:0x0008] ZCL request 0x0002: [1, 51, 10] [0xcf04:1:0x0008] No handler for cluster command 2 [0xCF04:1:0x0019]: bound 'ota' cluster: Status.SUCCESS [0xCF04:1:0x0019]: finished channel configuration [0xCF04:1:0x0005]: Failed to bind 'scenes' cluster: [0xCF04:1:0x0005]: finished channel configuration [0xCF04:1:0x0000]: 'async_configure' stage succeeded [0xCF04:1:0x1000]: 'async_configure' stage succeeded [0xCF04:1:0x0001]: 'async_configure' stage succeeded [0xCF04:1:0x0008]: 'async_configure' stage succeeded [0xCF04:1:0x0006]: 'async_configure' stage succeeded [0xCF04:1:0x0019]: 'async_configure' stage succeeded [0xCF04:1:0x0005]: 'async_configure' stage succeeded [0xCF04](TS1001): completed configuration [0xCF04](TS1001): stored in registry: ZhaDeviceEntry(name='_TYZB01_bngwdjsr TS1001', ieee='bc:33:ac:ff:fe:1a:85:80', last_seen=1607034537.9454782) [0xcf04:1:0x0008] ZCL deserialize: manufacturer=None tsn=58 command_id=2> [0xcf04:1:0x0008] ZCL request 0x0002: [1, 51, 10] [0xcf04:1:0x0008] No handler for cluster command 2 [0xcf04:1:0x0003] ZCL deserialize: manufacturer=None tsn=23 command_id=Command.Default_Response> [0xCF04:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: [64, ] [0xCF04](TS1001): started initialization [0xCF04:ZDO](TS1001): 'async_initialize' stage succeeded [0xCF04:1:0x1000]: initializing channel: from_cache: False [0xCF04:1:0x0008]: initializing channel: from_cache: False [0xCF04:1:0x0006]: initializing channel: from_cache: False [0xCF04:1:0x0019]: initializing channel: from_cache: False [0xCF04:1:0x0005]: initializing channel: from_cache: False [0xcf04:1:0x0000] ZCL deserialize: manufacturer=None tsn=24 command_id=Command.Read_Attributes_rsp> [0xCF04:1:0x0000]: initializing channel: from_cache: False [0xcf04:1:0x0001] ZCL deserialize: manufacturer=None tsn=25 command_id=Command.Read_Attributes_rsp> [0xCF04:1:0x0001]: initializing channel: from_cache: False [0xCF04:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: [0xCF04:1:0x0000]: 'async_initialize' stage succeeded [0xCF04:1:0x1000]: 'async_initialize' stage succeeded [0xCF04:1:0x0001]: 'async_initialize' stage succeeded [0xCF04:1:0x0008]: 'async_initialize' stage succeeded [0xCF04:1:0x0006]: 'async_initialize' stage succeeded [0xCF04:1:0x0019]: 'async_initialize' stage succeeded [0xCF04:1:0x0005]: 'async_initialize' stage succeeded [0xCF04](TS1001): power source: Battery or Unknown [0xCF04](TS1001): completed initialization ```
Events Event 7 fired 5:11 PM: ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "stop", "args": [] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:18.884549+00:00", "context": { "id": "8a8f9c6867c0ae143ab3d1c59c7c9177", "parent_id": null, "user_id": null } } ``` Event 6 fired 5:11 PM: - Button Hold ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "move", "args": [ 1, 51 ] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:17.044388+00:00", "context": { "id": "b4b8cfc2e2c7e3c9bf36d0807c2c7317", "parent_id": null, "user_id": null } } ``` Event 5 fired 5:11 PM: ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "stop", "args": [] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:13.090041+00:00", "context": { "id": "bee595b72027a449e2130ae1ea3645b5", "parent_id": null, "user_id": null } } ``` Event 4 fired 5:11 PM: + Button Hold ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "move", "args": [ 0, 51 ] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:11.542085+00:00", "context": { "id": "39e0d7c39ee6c8a00759b82e5cd75a7d", "parent_id": null, "user_id": null } } ``` Event 3 fired 5:11 PM: - Button ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "step", "args": [ 1, 51, 10 ] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:09.063464+00:00", "context": { "id": "421f009e1ab0407b84199861adfe8dc3", "parent_id": null, "user_id": null } } ``` Event 2 fired 5:11 PM: + Button ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0008", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 8, "command": "step", "args": [ 0, 51, 10 ] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:05.680444+00:00", "context": { "id": "1e12287f957fa0dfbd0ccb6599c3a9ec", "parent_id": null, "user_id": null } } ``` Event 1 fired 5:11 PM: ON Button ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0006", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 6, "command": "on", "args": [] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:11:01.804756+00:00", "context": { "id": "2c0bcd07634cb814e5d17ae68a81c95d", "parent_id": null, "user_id": null } } ``` Event 0 fired 5:10 PM: OFF Button ``` { "event_type": "zha_event", "data": { "device_ieee": "bc:33:ac:ff:fe:1a:85:80", "unique_id": "bc:33:ac:ff:fe:1a:85:80:1:0x0006", "device_id": "1f3ad09c70d9497824448d639e36c0c8", "endpoint_id": 1, "cluster_id": 6, "command": "off", "args": [] }, "origin": "LOCAL", "time_fired": "2020-12-04T16:10:58.138658+00:00", "context": { "id": "e7318c78d062e77e216bafc53458ce89", "parent_id": null, "user_id": null } } ```

full pairing log at my dev VM

MattWestb commented 1 year ago

One device that is have little the same working mode is being added. https://github.com/zigpy/zha-device-handlers/pull/2455#pullrequestreview-1509839238 Its using some of the same commands but is nit having so many buttons and not so strange "working modes". Take one look if you like see how tuya have cooking there devices.

github-actions[bot] commented 10 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.