zigpy-cc icon indicating copy to clipboard operation
zigpy-cc copied to clipboard

[Device Support Request] Lonsonho 2 Gang wall switch

Open scaytrase opened this issue 5 years ago • 7 comments

Is your feature request related to a problem? Please describe. Device almost works good without quirk but HA cannot control second (right) switch at the moment

Describe the solution you'd like Control second switch as the first one. Currently issuing any commands to it results in timout error (stactrace below)

Device signature - this can be acquired by removing the device from ZHA and pairing it again from the add devices screen. Be sure to add the entire content of the log panel after pairing the device to a code block below this line. Full log

Device 0xa474 (bc:33:ac:ff:fe:65:5c:e2) joined the network
[0xa474:zdo] ZDO request ZDOCmd.Device_annce: [0xa474, bc:33:ac:ff:fe:65:5c:e2, 142]
[0xa474] Requesting 'Node Descriptor'
Tries remaining: 2
[0xa474] Extending timeout for 0x15 request
[0xa474] Node Descriptor: <Optional byte1=1 byte2=64 mac_capability_flags=142 manufacturer_code=0 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0xa474] Discovering endpoints
Tries remaining: 3
[0xa474] Discovered endpoints: [1, 2]
[0xa474:1] Discovering endpoint information
Tries remaining: 3
[0xa474:1] Discovered endpoint information: <Optional endpoint=1 profile=260 device_type=256 device_version=0 input_clusters=[0, 3, 4, 5, 6] output_clusters=[25]>
[0xa474:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=27 command_id=Command.Read_Attributes_rsp>
[0xa474:1] Manufacturer: _TYZB01_6sadkhcy
[0xa474:1] Model: TS0002
[0xa474:2] Discovering endpoint information
Tries remaining: 3
[0xa474:2] Discovered endpoint information: <Optional endpoint=2 profile=260 device_type=256 device_version=0 input_clusters=[0, 3, 4, 5, 6] output_clusters=[25]>
Checking quirks for _TYZB01_6sadkhcy TS0002 (bc:33:ac:ff:fe:65:5c:e2)
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1, 2}
Considering <class 'zhaquirks.lutron.lzl4bwhl01remote.LutronLZL4BWHL01Remote2'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.osram.a19twhite.A19TunableWhite'>
Fail because endpoint list mismatch: {3} {1, 2}
Considering <class 'zhaquirks.philips.rom001.PhilipsROM001'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.philips.rwl020.PhilipsRWL020'>
Fail because profile_id mismatch on at least one endpoint
Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
Fail because profile_id mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2}
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2}
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because endpoint list mismatch: {1} {1, 2}
device - 0xa474:bc:33:ac:ff:fe:65:5c:e2 entering async_device_initialized - is_new_join: True
device - 0xa474:bc:33:ac:ff:fe:65:5c:e2 has joined the ZHA zigbee network
[0xa474](TS0002): started configuration
[0xa474:ZDO](TS0002): 'async_configure' stage succeeded
[0xa474:1:0x0006]: bound 'on_off' cluster: Status.SUCCESS
[0xa474:1:0x0000]: bound 'basic' cluster: Status.SUCCESS
[0xa474:1:0x0000]: finished channel configuration
[0xa474:1:0x0019]: bound 'ota' cluster: Status.SUCCESS
[0xa474:1:0x0019]: finished channel configuration
[0xa474:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=37 command_id=Command.Default_Response>
[0xa474:1:0x0006]: reporting 'on_off' attr on 'on_off' cluster: 0/900/1: Result: '[6, <Status.UNSUP_GENERAL_COMMAND: 130>]'
[0xa474:1:0x0006]: finished channel configuration
[0xa474:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=39 command_id=Command.Read_Attributes_rsp>
[0xa474:1:0x0000]: initializing channel: from_cache: False
[0xa474:2:0x0006]: bound 'on_off' cluster: Status.SUCCESS
[0xa474:1:0x0006]: 'async_configure' stage succeeded
[0xa474:1:0x0000]: 'async_configure' stage succeeded
[0xa474:1:0x0019]: 'async_configure' stage succeeded
[0xa474:2:0x0000]: bound 'basic' cluster: Status.SUCCESS
[0xa474:2:0x0000]: finished channel configuration
[0xa474:2:0x0019]: bound 'ota' cluster: Status.SUCCESS
[0xa474:2:0x0019]: finished channel configuration
[0xa474:2:0x0006]: failed to set reporting for 'on_off' attr on 'on_off' cluster: 
[0xa474:2:0x0006]: finished channel configuration
[0xa474:2:0x0000]: initializing channel: from_cache: False
[0xa474:2:0x0006]: 'async_configure' stage succeeded
[0xa474:2:0x0000]: 'async_configure' stage succeeded
[0xa474:2:0x0019]: 'async_configure' stage succeeded
[0xa474](TS0002): completed configuration
[0xa474](TS0002): stored in registry: ZhaDeviceEntry(name='_TYZB01_6sadkhcy TS0002', ieee='bc:33:ac:ff:fe:65:5c:e2', last_seen=1597344000.3796937)
[0xa474:1:0x0003] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=51 command_id=Command.Default_Response>
[0xa474:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: [64, <Status.UNSUP_CLUSTER_COMMAND: 129>]
[0xa474](TS0002): started initialization
[0xa474:ZDO](TS0002): 'async_initialize' stage succeeded
[0xa474:1:0x0019]: initializing channel: from_cache: False
[0xa474:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=53 command_id=Command.Read_Attributes_rsp>
[0xa474:1:0x0006]: initializing channel: from_cache: False
[0xa474:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=55 command_id=Command.Read_Attributes_rsp>
[0xa474:1:0x0000]: initializing channel: from_cache: False
[0xa474:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=59 command_id=Command.Read_Attributes_rsp>
[0xa474:2:0x0006]: initializing channel: from_cache: False
[0xa474:2:0x0000]: initializing channel: from_cache: False
[0xa474:2:0x0019]: initializing channel: from_cache: False
[0xa474:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: 
[0xa474:2:0x0006]: 'async_initialize' stage succeeded
[0xa474:2:0x0000]: 'async_initialize' stage succeeded
[0xa474:2:0x0019]: 'async_initialize' stage succeeded
[0xa474:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: 
[0xa474:1:0x0006]: 'async_initialize' stage succeeded
[0xa474:1:0x0000]: 'async_initialize' stage succeeded
[0xa474:1:0x0019]: 'async_initialize' stage succeeded
[0xa474](TS0002): power source: Mains
[0xa474](TS0002): completed initialization
[0xa474:1:0x0006]: attempting to update onoff state - from cache: False
[0xa474:2:0x0006]: attempting to update onoff state - from cache: False
[0xa474:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=65 command_id=Command.Read_Attributes_rsp>
None: polling current state
None: polling current state

Signature of paired dervice

{
  "node_descriptor": "<Optional byte1=1 byte2=64 mac_capability_flags=142 manufacturer_code=0 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": "0x0100",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006"
      ],
      "out_clusters": [
        "0x0019"
      ]
    },
    "2": {
      "profile_id": 260,
      "device_type": "0x0100",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006"
      ],
      "out_clusters": [
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TYZB01_6sadkhcy",
  "model": "TS0002",
  "class": "zigpy.device.Device"
}

Additional context Same device in Koenkk/zigbee-herdsman-converters devices

https://github.com/Koenkk/zigbee-herdsman-converters/blob/f0882b47a7d4df564ef00248364d5a687b07ee35/devices.js#L1215-L1234

for reference

timeout error stacktrace

Уровень: ERROR
Logger: homeassistant.components.websocket_api.http.connection.281473257193424
Source: components/zha/core/device.py:549
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 22:04:57 (2 occurrences)
Last logged: 22:08:13

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 130, in handle_call_service
    connection.context(msg),
  File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1295, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 518, in admin_handler
    await result
  File "/usr/src/homeassistant/homeassistant/components/zha/api.py", line 925, in issue_zigbee_cluster_command
    manufacturer=manufacturer,
  File "/usr/src/homeassistant/homeassistant/components/zha/core/device.py", line 549, in issue_cluster_command
    command, *args, manufacturer=manufacturer, expect_reply=True
  File "/usr/local/lib/python3.7/site-packages/zigpy/device.py", line 210, in request
    result = await asyncio.wait_for(req.result, timeout)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 449, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError

scaytrase avatar Aug 13 '20 19:08 scaytrase

what radio? it can't communicate with the switch

 [0xa474:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: 
...
[0xa474:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: 

Adminiuga avatar Aug 14 '20 14:08 Adminiuga

сс2531. i've tried zigbee2mqtt (linked the config) and it works perfectly on the same radio, both endpoints.

scaytrase avatar Aug 14 '20 15:08 scaytrase

enable debug log and submit the logs. This could be a problem with zigpy-cc

Adminiuga avatar Aug 14 '20 15:08 Adminiuga

Ok, will try to do this. WIth debug logs you mean these https://www.home-assistant.io/integrations/zha/#debug-logging ?

scaytrase avatar Aug 14 '20 16:08 scaytrase

here is the log. I sanitized some info, but if needed I can share full log privately for reasearch. On this log I set up zigbee integration, paired my device and do some on-offs on both channels, having left work ok and right giving me timeouts

UPD. moved to pastebin, didn't realize it's soooo big

https://pastebin.com/id52fkgf

scaytrase avatar Aug 14 '20 20:08 scaytrase

I experienced this problem as well.

bajo avatar Sep 29 '20 18:09 bajo

Same issue here with CC2531 and Zemismart 2 gangs w/o neutral

Ultraboss77 avatar Apr 14 '21 21:04 Ultraboss77