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
720 stars 669 forks source link

[Device Support Request] Double gangs remote switch by Legrand #2641

Open lboue opened 11 months ago

lboue commented 11 months ago

Problem description

Hello, I am trying to connect a Double gangs remote switch (NLD) by Legrand 067724A to Home Assistant and ZHA. I am able to connect the switch and I can see the entity in HA. However, even if I see the 2 sensors (for both switches), they remain in “desactivated” state when I press any of the two buttons. Battery sensor state is also “Off”.

Solution description

Device Support for Double gangs remote switch by Legrand

Screenshots/Video

Screenshots/Video ![image](https://github.com/zigpy/zha-device-handlers/assets/938089/3e22a056-c1ca-49fa-9da2-5afbbdd5d94f)

Device signature

Device signature ```json { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4129, maximum_buffer_size=89, maximum_incoming_transfer_size=63, server_mask=11264, maximum_outgoing_transfer_size=63, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)", "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0104", "input_clusters": [ "0x0000", "0x0001", "0x0003", "0x000f", "0x0020", "0xfc01" ], "output_clusters": [ "0x0000", "0x0003", "0x0006", "0x0008", "0x0019", "0xfc01" ] }, "2": { "profile_id": "0x0104", "device_type": "0x0104", "input_clusters": [ "0x0003", "0x000f" ], "output_clusters": [ "0x0003", "0x0006", "0x0008" ] } }, "manufacturer": " Legrand", "model": " Double gangs remote switch", "class": "zigpy.device.Device" } ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2023.8.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.11.4", "docker": true, "arch": "armv7l", "timezone": "Europe/Paris", "os_name": "Linux", "os_version": "6.1.21-v7", "supervisor": "2023.10.0", "host_os": "Home Assistant OS 10.2", "docker_version": "23.0.6", "chassis": "embedded", "run_as_root": true }, "custom_components": { "rpi_gpio": { "version": "2022.7.0", "requirements": [ "RPi.GPIO==0.7.1" ] }, "alexa_media": { "version": "4.6.1", "requirements": [ "alexapy==1.26.5", "packaging>=20.3", "wrapt>=1.12.1" ] }, "thermal_comfort": { "version": "2.1.1", "requirements": [] }, "prix_carburant": { "version": "2.5.0", "requirements": [ "xmltodict==0.13.0" ] }, "better_thermostat": { "version": "1.0.1", "requirements": [] }, "nodered": { "version": "1.1.3", "requirements": [] }, "eufy_security": { "version": "6.2.0", "requirements": [ "websocket-client==1.1.0", "aiortsp==1.3.6" ] }, "huawei_mesh_router": { "version": "0.8.7", "requirements": [ "pycryptodome>=3.12.0" ] }, "localtuya": { "version": "5.0.0", "requirements": [] }, "aarlo": { "version": "0.7.4b6", "requirements": [ "unidecode", "cloudscraper>=1.2.64", "paho-mqtt" ] }, "ble_monitor": { "version": "11.7.1", "requirements": [ "pycryptodomex>=3.14.1", "janus>=1.0.0", "aioblescan>=0.2.14", "btsocket>=0.2.0", "pyric>=0.1.6.3" ] }, "entsoe": { "version": "0.0.1", "requirements": [ "entsoe-py==0.5.8" ] }, "ecodevices": { "version": "4.3.1", "requirements": [ "xmltodict==0.12.0", "pyecodevices==1.5.1" ] }, "tahoma": { "version": "2.14.0", "requirements": [ "pyoverkiz==1.5.6" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "onboarding", "usb" ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "config_flow": true, "dependencies": [ "file_upload" ], "documentation": "https://www.home-assistant.io/integrations/zha", "iot_class": "local_polling", "loggers": [ "aiosqlite", "bellows", "crccheck", "pure_pcapy3", "zhaquirks", "zigpy", "zigpy_deconz", "zigpy_xbee", "zigpy_zigate", "zigpy_znp" ], "requirements": [ "bellows==0.35.9", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.102", "zigpy-deconz==0.21.0", "zigpy==0.56.4", "zigpy-xbee==0.18.1", "zigpy-zigate==0.11.0", "zigpy-znp==0.11.4" ], "usb": [ { "vid": "10C4", "pid": "EA60", "description": "*2652*", "known_devices": [ "slae.sh cc2652rb stick" ] }, { "vid": "1A86", "pid": "55D4", "description": "*sonoff*plus*", "known_devices": [ "sonoff zigbee dongle plus v2" ] }, { "vid": "10C4", "pid": "EA60", "description": "*sonoff*plus*", "known_devices": [ "sonoff zigbee dongle plus" ] }, { "vid": "10C4", "pid": "EA60", "description": "*tubeszb*", "known_devices": [ "TubesZB Coordinator" ] }, { "vid": "1A86", "pid": "7523", "description": "*tubeszb*", "known_devices": [ "TubesZB Coordinator" ] }, { "vid": "1A86", "pid": "7523", "description": "*zigstar*", "known_devices": [ "ZigStar Coordinators" ] }, { "vid": "1CF1", "pid": "0030", "description": "*conbee*", "known_devices": [ "Conbee II" ] }, { "vid": "10C4", "pid": "8A2A", "description": "*zigbee*", "known_devices": [ "Nortek HUSBZB-1" ] }, { "vid": "0403", "pid": "6015", "description": "*zigate*", "known_devices": [ "ZiGate+" ] }, { "vid": "10C4", "pid": "EA60", "description": "*zigate*", "known_devices": [ "ZiGate" ] }, { "vid": "10C4", "pid": "8B34", "description": "*bv 2010/10*", "known_devices": [ "Bitron Video AV2010/10" ] } ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" }, { "type": "_zigstar_gw._tcp.local.", "name": "*zigstar*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 40706, "manufacturer": " Legrand", "model": " Double gangs remote switch", "name": " Legrand Double gangs remote switch", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4129, "power_source": "Battery or Unknown", "lqi": 68, "rssi": -83, "last_seen": "2023-10-11T19:11:24", "available": true, "device_type": "EndDevice", "signature": { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4129, maximum_buffer_size=89, maximum_incoming_transfer_size=63, server_mask=11264, maximum_outgoing_transfer_size=63, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)", "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0104", "input_clusters": [ "0x0000", "0x0001", "0x0003", "0x000f", "0x0020", "0xfc01" ], "output_clusters": [ "0x0000", "0x0003", "0x0006", "0x0008", "0x0019", "0xfc01" ] }, "2": { "profile_id": "0x0104", "device_type": "0x0104", "input_clusters": [ "0x0003", "0x000f" ], "output_clusters": [ "0x0003", "0x0006", "0x0008" ] } }, "manufacturer": " Legrand", "model": " Double gangs remote switch" }, "active_coordinator": false, "entities": [ { "entity_id": "binary_sensor.legrand_double_gangs_remote_switch_binary_input", "name": " Legrand Double gangs remote switch" }, { "entity_id": "binary_sensor.legrand_double_gangs_remote_switch_binary_input_2", "name": " Legrand Double gangs remote switch" }, { "entity_id": "button.legrand_double_gangs_remote_switch_identify", "name": " Legrand Double gangs remote switch" }, { "entity_id": "sensor.legrand_double_gangs_remote_switch_battery", "name": " Legrand Double gangs remote switch" } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "DIMMER_SWITCH" }, { "name": "DIMMER_SWITCH" } ], "user_given_name": null, "device_reg_id": "5808be65fb30022114ea1d0a313a8623", "area_id": "bureau_ludo", "cluster_details": { "1": { "device_type": { "name": "DIMMER_SWITCH", "id": 260 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": " Legrand" }, "0x0005": { "attribute_name": "model", "value": " Double gangs remote switch" } }, "unsupported_attributes": {} }, "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x000f": { "endpoint_attribute": "binary_input", "attributes": { "0x0055": { "attribute_name": "present_value", "value": 0 } }, "unsupported_attributes": {} }, "0x0020": { "endpoint_attribute": "poll_control", "attributes": { "0x0000": { "attribute_name": "checkin_interval", "value": 13200 } }, "unsupported_attributes": {} }, "0x0001": { "endpoint_attribute": "power", "attributes": { "0x0020": { "attribute_name": "battery_voltage", "value": 27 } }, "unsupported_attributes": { "0x0021": { "attribute_name": "battery_percentage_remaining" }, "0x0033": { "attribute_name": "battery_quantity" }, "0x0031": { "attribute_name": "battery_size" } } }, "0xfc01": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x0006": { "endpoint_attribute": "on_off", "attributes": {}, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": {}, "unsupported_attributes": {} }, "0x0000": { "endpoint_attribute": "basic", "attributes": {}, "unsupported_attributes": {} }, "0xfc01": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} }, "0x0019": { "endpoint_attribute": "ota", "attributes": {}, "unsupported_attributes": {} } } }, "2": { "device_type": { "name": "DIMMER_SWITCH", "id": 260 }, "profile_id": 260, "in_clusters": { "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x000f": { "endpoint_attribute": "binary_input", "attributes": { "0x0055": { "attribute_name": "present_value", "value": 0 } }, "unsupported_attributes": {} } }, "out_clusters": { "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x0006": { "endpoint_attribute": "on_off", "attributes": {}, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": {}, "unsupported_attributes": {} } } } } } } ```

Logs

Logs ```python [0x4AB3](ZB-SW02): Device seen - marking the device available and resetting counter [0x4AB3](ZB-SW02): Update device availability - device available: True - new availability: True - changed: False New device 0x9f02 (00:04:74:00:00:8a:b2:75) joined the network [0x9f02] Scheduling initialization Tries remaining: 5 [0x9f02] Requesting 'Node Descriptor' [0x9f02] Extending timeout for 0x31 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=), dst_ep=0, source_route=None, extended_timeout=False, tsn=130, profile_id=0, cluster_id=19, data=Serialized[b'\x00\x02\x9fu\xb2\x8a\x00\x00t\x04\x00\x80'], tx_options=, radius=0, non_member_radius=0, lqi=92, rssi=-77) Device 0x9f02 (00:04:74:00:00:8a:b2:75) joined the network [0x9f02] Scheduling initialization [0x9f02] Canceling old initialize call Received frame on uninitialized device from ep 0 to ep 0, cluster 19: b'\x00\x02\x9fu\xb2\x8a\x00\x00t\x04\x00\x80' [0x9f02:zdo] ZDO request ZDOCmd.Device_annce: [0x9F02, 00:04:74:00:00:8a:b2:75, 128] Tries remaining: 5 [0x9f02] Requesting 'Node Descriptor' [0x9f02] Extending timeout for 0x33 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=131, profile_id=0, cluster_id=2, data=Serialized[b'\x01\x00\x00'], tx_options=, radius=0, non_member_radius=0, lqi=92, rssi=-77) Received frame on uninitialized device from ep 0 to ep 0, cluster 2: b'\x01\x00\x00' [0x9f02:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000] [0x9f02:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000]) Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=), dst_ep=0, source_route=None, extended_timeout=False, tsn=134, profile_id=0, cluster_id=54, data=Serialized[b'\x02\xb4\x01'], tx_options=, radius=0, non_member_radius=0, lqi=92, rssi=-77) Received frame on uninitialized device from ep 0 to ep 0, cluster 54: b'\x02\xb4\x01' [0x9f02:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [180, ] Tries remaining: 4 [0x9f02] Requesting 'Node Descriptor' [0x9f02] Extending timeout for 0x35 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=135, profile_id=0, cluster_id=32770, data=Serialized[b'5\x00\x02\x9f\x12@\x80!\x10Y?\x00\x00,?\x00\x00'], tx_options=, radius=0, non_member_radius=0, lqi=92, rssi=-77) Received frame on uninitialized device from ep 0 to ep 0, cluster 32770: b'5\x00\x02\x9f\x12@\x80!\x10Y?\x00\x00,?\x00\x00' [0x9f02] Got Node Descriptor: NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4129, maximum_buffer_size=89, maximum_incoming_transfer_size=63, server_mask=11264, maximum_outgoing_transfer_size=63, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False) [0x9f02] Discovering endpoints [0x9f02] Extending timeout for 0x37 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=136, profile_id=0, cluster_id=32773, data=Serialized[b'7\x00\x02\x9f\x02\x01\x02'], tx_options=, radius=0, non_member_radius=0, lqi=100, rssi=-75) Received frame on uninitialized device from ep 0 to ep 0, cluster 32773: b'7\x00\x02\x9f\x02\x01\x02' [0x9f02] Discovered endpoints: [1, 2] [0x9f02] Initializing endpoints [>, >] [0x9f02:1] Discovering endpoint information [0x9f02] Extending timeout for 0x39 request [0x1998](lumi.remote.b686opcn01): Device seen - marking the device available and resetting counter [0x1998](lumi.remote.b686opcn01): Update device availability - device available: True - new availability: True - changed: False Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=136, profile_id=0, cluster_id=32773, data=Serialized[b'7\x00\x02\x9f\x02\x01\x02'], tx_options=, radius=0, non_member_radius=0, lqi=68, rssi=-83) Received frame on uninitialized device from ep 0 to ep 0, cluster 32773: b'7\x00\x02\x9f\x02\x01\x02' [0x9f02:zdo] ZDO request ZDOCmd.Active_EP_rsp: [, 0x9F02, [1, 2]] [0x9f02:zdo] No handler for ZDO request:ZDOCmd.Active_EP_rsp([, 0x9F02, [1, 2]]) Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=137, profile_id=0, cluster_id=32772, data=Serialized[b'9\x00\x02\x9f \x01\x04\x01\x04\x01\x01\x06\x00\x00\x03\x00\x0f\x00 \x00\x01\x00\x01\xfc\x06\x03\x00\x06\x00\x08\x00\x00\x00\x01\xfc\x19\x00'], tx_options=, radius=0, non_member_radius=0, lqi=60, rssi=-85) Received frame on uninitialized device from ep 0 to ep 0, cluster 32772: b'9\x00\x02\x9f \x01\x04\x01\x04\x01\x01\x06\x00\x00\x03\x00\x0f\x00 \x00\x01\x00\x01\xfc\x06\x03\x00\x06\x00\x08\x00\x00\x00\x01\xfc\x19\x00' [0x9f02:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 3, 15, 32, 1, 64513], output_clusters=[3, 6, 8, 0, 64513, 25]) [0x9f02:2] Discovering endpoint information [0x9f02] Extending timeout for 0x3b request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=138, profile_id=0, cluster_id=32772, data=Serialized[b';\x00\x02\x9f\x12\x02\x04\x01\x04\x01\x01\x02\x03\x00\x0f\x00\x03\x03\x00\x06\x00\x08\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) Received frame on uninitialized device from ep 0 to ep 0, cluster 32772: b';\x00\x02\x9f\x12\x02\x04\x01\x04\x01\x01\x02\x03\x00\x0f\x00\x03\x03\x00\x06\x00\x08\x00' [0x9f02:2] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=2, profile=260, device_type=260, device_version=1, input_clusters=[3, 15], output_clusters=[3, 6, 8]) [0x9F02:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=61, command_id=, *direction=) [0x9F02:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5]) [0x9f02] Extending timeout for 0x3d request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=139, profile_id=260, cluster_id=0, data=Serialized[b'\x18=\x01\x04\x00\x00B\x1f Legrand\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00B\x1f Double gangs remote switch\x00\x00\x00\x00'], tx_options=, radius=0, non_member_radius=0, lqi=76, rssi=-81) [0x9F02:1:0x0000] Received ZCL frame: b'\x18=\x01\x04\x00\x00B\x1f Legrand\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00B\x1f Double gangs remote switch\x00\x00\x00\x00' [0x9F02:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=61, command_id=1, *direction=) [0x9F02:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=, value=TypeValue(type=CharacterString, value=' Legrand')), ReadAttributeRecord(attrid=0x0005, status=, value=TypeValue(type=CharacterString, value=' Double gangs remote switch'))]) [0x9f02] Read model ' Double gangs remote switch' and manufacturer ' Legrand' from > [0x9f02] Discovered basic device information for Device is initialized Checking quirks for Legrand Double gangs remote switch (00:04:74:00:00:8a:b2:75) Considering Fail because endpoint list mismatch: {1, 2, 242} {1, 2} Considering Fail because endpoint list mismatch: {1, 2, 41, 42, 242, 51, 21, 31} {1, 2} Considering Fail because endpoint list mismatch: {232, 230} {1, 2} Considering Fail because endpoint list mismatch: {232, 230} {1, 2} Considering Fail because endpoint list mismatch: {1} {1, 2} Considering Fail because endpoint list mismatch: {1} {1, 2} Considering Fail because endpoint list mismatch: {1} {1, 2} Considering Fail because endpoint list mismatch: {1} {1, 2} Considering Fail because endpoint list mismatch: {11, 13} {1, 2} Creating cluster handler for cluster id: 0 class: Creating cluster handler for cluster id: 3 class: Creating cluster handler for cluster id: 15 class: Creating cluster handler for cluster id: 32 class: Creating cluster handler for cluster id: 1 class: Creating cluster handler for cluster id: 64513 class: Discovering entities for endpoint: 00:04:74:00:00:8a:b2:75-1 'binary_sensor' component -> 'BinaryInput' using ['binary_input'] 'button' component -> 'ZHAIdentifyButton' using ['identify'] 'sensor' component -> 'Battery' using ['power'] 'sensor' component -> 'RSSISensor' using ['basic'] 'sensor' component -> 'LQISensor' using ['basic'] Creating cluster handler for cluster id: 3 class: Creating cluster handler for cluster id: 15 class: Discovering entities for endpoint: 00:04:74:00:00:8a:b2:75-2 'binary_sensor' component -> 'BinaryInput' using ['binary_input'] 'button' component -> 'ZHAIdentifyButton' using ['identify'] device - 0x9F02:00:04:74:00:00:8a:b2:75 entering async_device_initialized - is_new_join: True device - 0x9F02:00:04:74:00:00:8a:b2:75 has joined the ZHA zigbee network [0x9F02]( Double gangs remote switch): started configuration [0x9F02:ZDO]( Double gangs remote switch): 'async_configure' stage succeeded Error handling '_save_attribute' event with (00:04:74:00:00:8a:b2:75, 1, 0, 4, ' Legrand', datetime.datetime(2023, 10, 11, 17, 6, 1, 809647, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed [0x9F02:1:0x0001]: Performing cluster binding [0x9f02] Extending timeout for 0x3f request [0x9F02:1:0x0003]: Configuring cluster attribute reporting [0x9F02:1:0x0003]: finished cluster handler configuration [0x9F02:1:0x0000]: Configuring cluster attribute reporting [0x9F02:1:0x0000]: finished cluster handler configuration [0x9F02:1:0x000f]: Performing cluster binding [0x9f02] Extending timeout for 0x41 request [0x9F02:1:0x0020]: Performing cluster binding [0x9f02] Extending timeout for 0x43 request [0x9F02:1:0x0008]: Performing cluster binding [0x9f02] Extending timeout for 0x45 request [0x9F02:1:0x0006]: Performing cluster binding [0x9f02] Extending timeout for 0x47 request [0x9F02:1:0x0019]: finished cluster handler configuration [0x9F02:2:0x000f]: Performing cluster binding [0x9f02] Extending timeout for 0x49 request [0x9F02:2:0x0003]: Configuring cluster attribute reporting [0x9F02:2:0x0003]: finished cluster handler configuration [0x9F02:2:0x0008]: Performing cluster binding [0x9f02] Extending timeout for 0x4b request [0x9F02:2:0x0006]: Performing cluster binding [0x9f02] Extending timeout for 0x4d request Error handling '_save_attribute' event with (00:04:74:00:00:8a:b2:75, 1, 0, 5, ' Double gangs remote switch', datetime.datetime(2023, 10, 11, 17, 6, 1, 809789, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=140, profile_id=0, cluster_id=32801, data=Serialized[b'?\x00'], tx_options=, radius=0, non_member_radius=0, lqi=80, rssi=-80) [0x9F02:1:0x0001]: bound 'power' cluster: Status.SUCCESS [0x9F02:1:0x0001]: Configuring cluster attribute reporting [0x9F02:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=79, command_id=, *direction=) [0x9F02:1:0x0001] Sending request: Configure_Reporting(config_records=[AttributeReportingConfig(direction=0, attrid=0x0020, datatype=32, min_interval=3600, max_interval=10800, reportable_change=1), AttributeReportingConfig(direction=0, attrid=0x0021, datatype=32, min_interval=3600, max_interval=10800, reportable_change=1)]) [0x9f02] Extending timeout for 0x4f request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=141, profile_id=0, cluster_id=32801, data=Serialized[b'A\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) [0x9F02:1:0x000f]: bound 'binary_input' cluster: Status.SUCCESS [0x9F02:1:0x000f]: Configuring cluster attribute reporting [0x9F02:1:0x000f] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=81, command_id=, *direction=) [0x9F02:1:0x000f] Sending request: Configure_Reporting(config_records=[AttributeReportingConfig(direction=0, attrid=0x0055, datatype=16, min_interval=30, max_interval=900, reportable_change=1)]) [0x9f02] Extending timeout for 0x51 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=142, profile_id=0, cluster_id=32801, data=Serialized[b'C\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) [0x9F02:1:0x0020]: bound 'poll_control' cluster: Status.SUCCESS [0x9F02:1:0x0020]: Configuring cluster attribute reporting [0x9F02:1:0x0020]: Performing cluster handler specific configuration [0x9F02:1:0x0020] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=83, command_id=, *direction=) [0x9F02:1:0x0020] Sending request: Write_Attributes(attributes=[Attribute(attrid=0x0000, value=TypeValue(type=uint32_t, value=13200))]) [0x9f02] Extending timeout for 0x53 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=143, profile_id=0, cluster_id=32801, data=Serialized[b'K\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) [0x9F02:2:0x0008]: bound 'level' cluster: Status.SUCCESS [0x9F02:2:0x0008]: finished cluster handler configuration Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=144, profile_id=260, cluster_id=1, data=Serialized[b'\x18O\x07\x8c\x00 \x00\x86\x00!\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) [0x9F02:1:0x0001] Received ZCL frame: b'\x18O\x07\x8c\x00 \x00\x86\x00!\x00' [0x9F02:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=79, command_id=7, *direction=) [0x9F02:1:0x0001] Decoded ZCL frame: PowerConfiguration:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=, direction=, attrid=32), ConfigureReportingResponseRecord(status=, direction=, attrid=33)]) [0x9F02:1:0x0001]: Successfully configured reporting for 'set()' on 'power' cluster [0x9F02:1:0x0001]: Failed to configure reporting for '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: [ConfigureReportingResponseRecord(status=, direction=, attrid=32), ConfigureReportingResponseRecord(status=, direction=, attrid=33)] [0x9F02:1:0x0001]: finished cluster handler configuration Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=145, profile_id=260, cluster_id=15, data=Serialized[b'\x18Q\x07\x00\x00U\x00'], tx_options=, radius=0, non_member_radius=0, lqi=72, rssi=-82) [0x9F02:1:0x000f] Received ZCL frame: b'\x18Q\x07\x00\x00U\x00' [0x9F02:1:0x000f] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=81, command_id=7, *direction=) [0x9F02:1:0x000f] Decoded ZCL frame: BinaryInput:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=)]) [0x9F02:1:0x000f]: Successfully configured reporting for '{'present_value': (30, 900, 1)}' on 'binary_input' cluster: [ConfigureReportingResponseRecord(status=)] [0x9F02:1:0x000f]: finished cluster handler configuration Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=146, profile_id=260, cluster_id=32, data=Serialized[b'\x18S\x04\x00'], tx_options=, radius=0, non_member_radius=0, lqi=60, rssi=-85) [0x9F02:1:0x0020] Received ZCL frame: b'\x18S\x04\x00' [0x9F02:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=83, command_id=4, *direction=) [0x9F02:1:0x0020] Decoded ZCL frame: PollControl:Write_Attributes_rsp(status_records=[WriteAttributesStatusRecord(status=)]) [0x9F02:1:0x0020]: 3300.0s check-in interval set: Write_Attributes_rsp(status_records=[WriteAttributesStatusRecord(status=)]) [0x9F02:1:0x0020]: finished cluster handler configuration Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=147, profile_id=260, cluster_id=0, data=Serialized[b'\x14!\x10\x01\x00\x00\xf0'], tx_options=, radius=0, non_member_radius=0, lqi=100, rssi=-75) [0x9F02:1:0x0000] Received ZCL frame: b'\x14!\x10\x01\x00\x00\xf0' [0x9F02:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=True, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), manufacturer=4129, tsn=1, command_id=0, *direction=) [0x9F02:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes(attribute_ids=[61440]) [0x9F02:1:0x0000] Received command 0x00 (TSN 1): Read_Attributes(attribute_ids=[61440]) Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=148, profile_id=260, cluster_id=32, data=Serialized[b'\x19\x02\x00'], tx_options=, radius=0, non_member_radius=0, lqi=88, rssi=-78) [0x9F02:1:0x0020] Received ZCL frame: b'\x19\x02\x00' [0x9F02:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), tsn=2, command_id=0, *direction=) [0x9F02:1:0x0020] Decoded ZCL frame: PollControl:checkin() [0x9F02:1:0x0020] Received command 0x00 (TSN 2): checkin() [0x9F02:1:0x0020] No explicit handler for cluster command 0x00: checkin() [0x9F02:1:0x0020]: Received 2 tsn command 'checkin': checkin() Tries remaining: 3 [0x9F02:1:0x0020] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=2, command_id=0, *direction=) [0x9F02:1:0x0020] Sending request: checkin_response(start_fast_polling=, fast_poll_timeout=8) [0x9f02] Extending timeout for 0x02 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=), dst_ep=0, source_route=None, extended_timeout=False, tsn=149, profile_id=0, cluster_id=6, data=Serialized[b'\x03\xfd\xff\x04\x01\x01\x19\x00\x00'], tx_options=, radius=0, non_member_radius=0, lqi=88, rssi=-78) [0x9f02:zdo] ZDO request ZDOCmd.Match_Desc_req: [0xFFFD, 260, [25], []] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=150, profile_id=260, cluster_id=32, data=Serialized[b'\x18\x02\x0b\x00\x00'], tx_options=, radius=0, non_member_radius=0, lqi=100, rssi=-75) [0x9F02:1:0x0020] Received ZCL frame: b'\x18\x02\x0b\x00\x00' [0x9F02:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=2, command_id=11, *direction=) [0x9F02:1:0x0020] Decoded ZCL frame: PollControl:Default_Response(command_id=0, status=) Tries remaining: 3 [0x9F02:1:0x0020] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=87, command_id=2, *direction=) [0x9F02:1:0x0020] Sending request: set_long_poll_interval(new_long_poll_interval=24) [0x9f02] Extending timeout for 0x57 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=151, profile_id=260, cluster_id=32, data=Serialized[b'\x18W\x0b\x02\x81'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:1:0x0020] Received ZCL frame: b'\x18W\x0b\x02\x81' [0x9F02:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=87, command_id=11, *direction=) [0x9F02:1:0x0020] Decoded ZCL frame: PollControl:Default_Response(command_id=2, status=) Tries remaining: 3 [0x9F02:1:0x0020] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=89, command_id=1, *direction=) [0x9F02:1:0x0020] Sending request: fast_poll_stop() [0x9f02] Extending timeout for 0x59 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=152, profile_id=260, cluster_id=32, data=Serialized[b'\x18Y\x0b\x01\x00'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:1:0x0020] Received ZCL frame: b'\x18Y\x0b\x01\x00' [0x9F02:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=89, command_id=11, *direction=) [0x9F02:1:0x0020] Decoded ZCL frame: PollControl:Default_Response(command_id=1, status=) Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x97C4), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=73, profile_id=260, cluster_id=0, data=Serialized[b'\x08[\n\x01\x00 F\xe2\xff \x1f\xe4\xff \x00'], tx_options=, radius=0, non_member_radius=0, lqi=184, rssi=-54) [0x97C4:1:0x0000] Received ZCL frame: b'\x08[\n\x01\x00 F\xe2\xff \x1f\xe4\xff \x00' [0x97C4:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=91, command_id=10, *direction=) [0x97C4:1:0x0000] Decoded ZCL frame: Basic:Report_Attributes(attribute_reports=[Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=70)), Attribute(attrid=0xFFE2, value=TypeValue(type=uint8_t, value=31)), Attribute(attrid=0xFFE4, value=TypeValue(type=uint8_t, value=0))]) [0x97C4:1:0x0000] Received command 0x0A (TSN 91): Report_Attributes(attribute_reports=[Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=70)), Attribute(attrid=0xFFE2, value=TypeValue(type=uint8_t, value=31)), Attribute(attrid=0xFFE4, value=TypeValue(type=uint8_t, value=0))]) [0x97C4:1:0x0000] Attribute report received: app_version=70, 0xFFE2=31, 0xFFE4=0 [0x97C4:1:0x0000] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=91, command_id=, *direction=) [0x97C4:1:0x0000] Sending reply: Default_Response(command_id=10, status=) Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=153, profile_id=0, cluster_id=1, data=Serialized[b'\x04\x00\x00\x00\x01'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9f02:zdo] ZDO request ZDOCmd.IEEE_addr_req: [0x0000, , 1] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=154, profile_id=260, cluster_id=25, data=Serialized[b"\x01\x03\x01\x00!\x10\x16\x00\xffC'\x00"], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:1:0x0019] Received ZCL frame: b"\x01\x03\x01\x00!\x10\x16\x00\xffC'\x00" [0x9F02:1:0x0019] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=3, command_id=1, *direction=) [0x9F02:1:0x0019] Decoded ZCL frame: Ota:QueryNextImageCommand(field_control=, manufacturer_code=4129, image_type=22, current_file_version=2573311) [0x9F02:1:0x0019] Received command 0x01 (TSN 3): QueryNextImageCommand(field_control=, manufacturer_code=4129, image_type=22, current_file_version=2573311) [0x9F02:1:0x0019] OTA query_next_image handler for ' Legrand Double gangs remote switch': field_control=0, manufacturer_id=4129, image_type=22, current_file_version=2573311, hardware_version=None, model=' Double gangs remote switch' [0x9F02:1:0x0019] No OTA image is available [0x9F02:1:0x0019] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), tsn=3, command_id=2, *direction=) [0x9F02:1:0x0019] Sending reply: query_next_image_response(status=, manufacturer_code=None, image_type=None, file_version=None, image_size=None) [0xE82A](Classic A60 TW): Device seen - marking the device available and resetting counter [0xE82A](Classic A60 TW): Update device availability - device available: True - new availability: True - changed: False [0x97C4](TS0601): Device seen - marking the device available and resetting counter [0x97C4](TS0601): Update device availability - device available: True - new availability: True - changed: False [0xAE67](TS0101): Device seen - marking the device available and resetting counter [0xAE67](TS0101): Update device availability - device available: True - new availability: True - changed: False [0x9F02:1:0x0008]: Failed to bind 'level' cluster: [0x9F02:1:0x0008]: finished cluster handler configuration [0x9F02:1:0x0006]: Failed to bind 'on_off' cluster: [0x9F02:1:0x0006]: finished cluster handler configuration [0x9F02:2:0x000f]: Failed to bind 'binary_input' cluster: [0x9F02:2:0x000f]: Configuring cluster attribute reporting [0x9F02:2:0x000f] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=94, command_id=, *direction=) [0x9F02:2:0x000f] Sending request: Configure_Reporting(config_records=[AttributeReportingConfig(direction=0, attrid=0x0055, datatype=16, min_interval=30, max_interval=900, reportable_change=1)]) [0x9f02] Extending timeout for 0x5e request [0x9F02:1:0x0001]: 'async_configure' stage succeeded [0x9F02:1:0x0003]: 'async_configure' stage succeeded [0x9F02:1:0x0000]: 'async_configure' stage succeeded [0x9F02:1:0x000f]: 'async_configure' stage succeeded [0x9F02:1:0x0020]: 'async_configure' stage succeeded [0x9F02:1:0x0008]: 'async_configure' stage succeeded [0x9F02:1:0x0006]: 'async_configure' stage succeeded [0x9F02:1:0x0019]: 'async_configure' stage succeeded [0x9F02:2:0x0006]: Failed to bind 'on_off' cluster: [0x9F02:2:0x0006]: finished cluster handler configuration Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=2, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=2, source_route=None, extended_timeout=False, tsn=155, profile_id=260, cluster_id=15, data=Serialized[b'\x18^\x07\x00\x00U\x00'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:2:0x000f] Received ZCL frame: b'\x18^\x07\x00\x00U\x00' [0x9F02:2:0x000f] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=94, command_id=7, *direction=) [0x9F02:2:0x000f] Decoded ZCL frame: BinaryInput:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=)]) [0x9F02:2:0x000f]: Successfully configured reporting for '{'present_value': (30, 900, 1)}' on 'binary_input' cluster: [ConfigureReportingResponseRecord(status=)] [0x9F02:2:0x000f]: finished cluster handler configuration [0x9F02:2:0x000f]: 'async_configure' stage succeeded [0x9F02:2:0x0003]: 'async_configure' stage succeeded [0x9F02:2:0x0008]: 'async_configure' stage succeeded [0x9F02:2:0x0006]: 'async_configure' stage succeeded [0x9F02]( Double gangs remote switch): completed configuration Tries remaining: 3 [0x9F02:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=96, command_id=64, *direction=) [0x9F02:1:0x0003] Sending request: trigger_effect(effect_id=, effect_variant=) [0x9f02] Extending timeout for 0x60 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=156, profile_id=260, cluster_id=3, data=Serialized[b'\x18`\x0b@\x00'], tx_options=, radius=0, non_member_radius=0, lqi=100, rssi=-75) [0x9F02:1:0x0003] Received ZCL frame: b'\x18`\x0b@\x00' [0x9F02:1:0x0003] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=96, command_id=11, *direction=) [0x9F02:1:0x0003] Decoded ZCL frame: Identify:Default_Response(command_id=64, status=) [0x9F02]( Double gangs remote switch): started initialization [0x9F02:ZDO]( Double gangs remote switch): 'async_initialize' stage succeeded [0x9F02:1:0x0001]: initializing cluster handler: from_cache: False [0x9F02:1:0x0001]: initializing uncached cluster handler attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False] [0x9F02:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining'] [0x9F02:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=98, command_id=, *direction=) [0x9F02:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33]) [0x9f02] Extending timeout for 0x62 request [0x9F02:1:0x0003]: initializing cluster handler: from_cache: False [0x9F02:1:0x0003]: finished cluster handler initialization [0x9F02:1:0x0000]: initializing cluster handler: from_cache: False [0x9F02:1:0x0000]: finished cluster handler initialization [0x9F02:1:0x000f]: initializing cluster handler: from_cache: False [0x9F02:1:0x000f]: initializing uncached cluster handler attributes: ['present_value'] - from cache[False] [0x9F02:1:0x000f]: Reading attributes in chunks: ['present_value'] [0x9F02:1:0x000f] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=100, command_id=, *direction=) [0x9F02:1:0x000f] Sending request: Read_Attributes(attribute_ids=[85]) [0x9f02] Extending timeout for 0x64 request [0x9F02:1:0x0020]: initializing cluster handler: from_cache: False [0x9F02:1:0x0020]: finished cluster handler initialization [0x9F02:1:0x0008]: initializing cluster handler: from_cache: False [0x9F02:1:0x0008]: finished cluster handler initialization [0x9F02:1:0x0006]: initializing cluster handler: from_cache: False [0x9F02:1:0x0006]: finished cluster handler initialization [0x9F02:1:0x0019]: initializing cluster handler: from_cache: False [0x9F02:1:0x0019]: finished cluster handler initialization [0x9F02:2:0x000f]: initializing cluster handler: from_cache: False [0x9F02:2:0x000f]: initializing uncached cluster handler attributes: ['present_value'] - from cache[False] [0x9F02:2:0x000f]: Reading attributes in chunks: ['present_value'] [0x9F02:2:0x000f] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=102, command_id=, *direction=) [0x9F02:2:0x000f] Sending request: Read_Attributes(attribute_ids=[85]) [0x9f02] Extending timeout for 0x66 request [0x9F02:2:0x0003]: initializing cluster handler: from_cache: False [0x9F02:2:0x0003]: finished cluster handler initialization [0x9F02:2:0x0008]: initializing cluster handler: from_cache: False [0x9F02:2:0x0008]: finished cluster handler initialization [0x9F02:2:0x0006]: initializing cluster handler: from_cache: False [0x9F02:2:0x0006]: finished cluster handler initialization Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=157, profile_id=260, cluster_id=1, data=Serialized[b'\x18b\x01 \x00\x00 \x1b!\x00\x86'], tx_options=, radius=0, non_member_radius=0, lqi=96, rssi=-76) [0x9F02:1:0x0001] Received ZCL frame: b'\x18b\x01 \x00\x00 \x1b!\x00\x86' [0x9F02:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=98, command_id=1, *direction=) [0x9F02:1:0x0001] Decoded ZCL frame: PowerConfiguration:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0020, status=, value=TypeValue(type=uint8_t, value=27)), ReadAttributeRecord(attrid=0x0021, status=)]) [0x9F02:1:0x0001]: Performing cluster handler specific initialization: ['battery_voltage', 'battery_percentage_remaining'] [0x9F02:1:0x0001]: Reading attributes in chunks: ['battery_size', 'battery_quantity'] [0x9F02:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=False, direction=, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=104, command_id=, *direction=) [0x9F02:1:0x0001] Sending request: Read_Attributes(attribute_ids=[49, 51]) [0x9f02] Extending timeout for 0x68 request Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=158, profile_id=260, cluster_id=15, data=Serialized[b'\x18d\x01U\x00\x00\x10\x00'], tx_options=, radius=0, non_member_radius=0, lqi=96, rssi=-76) [0x9F02:1:0x000f] Received ZCL frame: b'\x18d\x01U\x00\x00\x10\x00' [0x9F02:1:0x000f] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=100, command_id=1, *direction=) [0x9F02:1:0x000f] Decoded ZCL frame: BinaryInput:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0055, status=, value=TypeValue(type=Bool, value=))]) [0x9F02:1:0x000f]: finished cluster handler initialization Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=2, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=2, source_route=None, extended_timeout=False, tsn=159, profile_id=260, cluster_id=15, data=Serialized[b'\x18f\x01U\x00\x00\x10\x00'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:2:0x000f] Received ZCL frame: b'\x18f\x01U\x00\x00\x10\x00' [0x9F02:2:0x000f] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=102, command_id=1, *direction=) [0x9F02:2:0x000f] Decoded ZCL frame: BinaryInput:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0055, status=, value=TypeValue(type=Bool, value=))]) [0x9F02:2:0x000f]: finished cluster handler initialization Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0x9F02), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=160, profile_id=260, cluster_id=1, data=Serialized[b'\x18h\x011\x00\x863\x00\x86'], tx_options=, radius=0, non_member_radius=0, lqi=104, rssi=-74) [0x9F02:1:0x0001] Received ZCL frame: b'\x18h\x011\x00\x863\x00\x86' [0x9F02:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=104, command_id=1, *direction=) [0x9F02:1:0x0001] Decoded ZCL frame: PowerConfiguration:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0031, status=), ReadAttributeRecord(attrid=0x0033, status=)]) [0x9F02:2:0x000f]: 'async_initialize' stage succeeded [0x9F02:2:0x0003]: 'async_initialize' stage succeeded [0x9F02:2:0x0008]: 'async_initialize' stage succeeded [0x9F02:2:0x0006]: 'async_initialize' stage succeeded [0x9F02:1:0x0001]: finished cluster handler initialization [0x9F02:1:0x0001]: 'async_initialize' stage succeeded [0x9F02:1:0x0003]: 'async_initialize' stage succeeded [0x9F02:1:0x0000]: 'async_initialize' stage succeeded [0x9F02:1:0x000f]: 'async_initialize' stage succeeded [0x9F02:1:0x0020]: 'async_initialize' stage succeeded [0x9F02:1:0x0008]: 'async_initialize' stage succeeded [0x9F02:1:0x0006]: 'async_initialize' stage succeeded [0x9F02:1:0x0019]: 'async_initialize' stage succeeded [0x9F02]( Double gangs remote switch): power source: Battery or Unknown [0x9F02]( Double gangs remote switch): completed initialization [0x0A2A](WarningDevice-EF-3.0): Device seen - marking the device available and resetting counter [0x0A2A](WarningDevice-EF-3.0): Update device availability - device available: True - new availability: True - changed: False [0xCE6B](TS0201): Device seen - marking the device available and resetting counter [0xCE6B](TS0201): Update device availability - device available: True - new availability: True - changed: False ```

Custom quirk

Custom quirk ```python [Paste your custom quirk here] ```

Additional information

Device info Double gangs remote switch by Legrand Connected via Zigbee Coordinator Firmware: 0x002743ff Zigbee info IEEE: 00:04:74:00:00:8a:b2:75 Nwk: 0x9f02 Device Type: EndDevice LQI: 68 RSSI: -83 Power Source: Battery or Unknown Last Seen: 2023-10-11T19:11:24

lboue commented 11 months ago

I just added the missing signature

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4129, maximum_buffer_size=89, maximum_incoming_transfer_size=63, server_mask=11264, maximum_outgoing_transfer_size=63, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0104",
      "input_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x000f",
        "0x0020",
        "0xfc01"
      ],
      "output_clusters": [
        "0x0000",
        "0x0003",
        "0x0006",
        "0x0008",
        "0x0019",
        "0xfc01"
      ]
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x0104",
      "input_clusters": [
        "0x0003",
        "0x000f"
      ],
      "output_clusters": [
        "0x0003",
        "0x0006",
        "0x0008"
      ]
    }
  },
  "manufacturer": " Legrand",
  "model": " Double gangs remote switch",
  "class": "zigpy.device.Device"
}
lboue commented 10 months ago

Any idea? Do I have to add a quirk?

github-actions[bot] commented 4 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.

lboue commented 4 months ago

Still not working.