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
717 stars 665 forks source link

[BUG] GLEDOPTO soposhgu10 signature is vague and misidentifies GLEDOPTO GL-B-008Z #2962

Closed seanmartin01 closed 1 month ago

seanmartin01 commented 7 months ago

Bug description

I have three kinds of GLEDOPTO lights. None of them are the GU10 version. The GL-B-008Z models are being misidentified as the GU10 version. This seems to be causing problems with the lights themselves as the other GLEDOPTO lights I have are not experiencing the same control issues. The issues I experience seem to take some time after doing a join to the network. But once problems start the symptoms are that only the on/off cluster works, reconfiguration fails to all clusters and the light generally becomes unresponsive. This can be resolved by doing a full rejoin to the network. The other GLEDOPTO lights are being identified as regular zigbee.device.Device, which makes sense GLEDOPTO does not do any of the proprietary stuff that requires quirks in the first place. Notably most of the other lights are GL-B-008P and don't experience this issue.

Steps to reproduce

Get a GLEDOPTO GL-B-008Z light and join it to the network. Use it for a while. It seems to occur after a few weeks. I can't really say when it exactly occurs but it's now happened more than a few times.

Expected behavior

I would expect all GLEDOPTO lights to simply be regular zigbee.device.Device classes.

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

GL-B-008P GLEDOPTO_GL-B-008Z

Device signature

Device signature ```json { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=0, maximum_buffer_size=80, maximum_incoming_transfer_size=160, server_mask=0, maximum_outgoing_transfer_size=160, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)", "endpoints": { "11": { "profile_id": "0xc05e", "device_type": "0x0210", "input_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300" ], "output_clusters": [] } }, "manufacturer": "GLEDOPTO", "model": "GL-B-008Z", "class": "zhaquirks.gledopto.soposhgu10.SoposhGU10" } ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.1.6", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.11.6", "docker": true, "arch": "aarch64", "timezone": "America/Toronto", "os_name": "Linux", "os_version": "6.1.63-haos-raspi", "supervisor": "2023.12.1", "host_os": "Home Assistant OS 11.4", "docker_version": "24.0.7", "chassis": "embedded", "run_as_root": true }, "custom_components": {}, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "onboarding", "usb" ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly", "@TheJulianJES" ], "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", "universal_silabs_flasher" ], "requirements": [ "bellows==0.37.6", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.109", "zigpy-deconz==0.22.4", "zigpy==0.60.7", "zigpy-xbee==0.20.1", "zigpy-zigate==0.12.0", "zigpy-znp==0.12.1", "universal-silabs-flasher==0.0.15", "pyserial-asyncio-fast==0.11" ], "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": "0403", "pid": "6015", "description": "*conbee*", "known_devices": [ "Conbee III" ] }, { "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": "_uzg-01._tcp.local.", "name": "uzg-01*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 2564, "manufacturer": "GLEDOPTO", "model": "GL-B-008Z", "name": "GLEDOPTO GL-B-008Z", "quirk_applied": true, "quirk_class": "zhaquirks.gledopto.soposhgu10.SoposhGU10", "quirk_id": null, "manufacturer_code": 0, "power_source": "Mains", "lqi": 120, "rssi": -70, "last_seen": "2024-02-01T15:17:05", "available": true, "device_type": "Router", "signature": { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=0, maximum_buffer_size=80, maximum_incoming_transfer_size=160, server_mask=0, maximum_outgoing_transfer_size=160, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)", "endpoints": { "11": { "profile_id": "0xc05e", "device_type": "0x0210", "input_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300" ], "output_clusters": [] } }, "manufacturer": "GLEDOPTO", "model": "GL-B-008Z" }, "active_coordinator": false, "entities": [ { "entity_id": "button.the_dreaming_ceiling_gledopto_0d_identify", "name": "GLEDOPTO GL-B-008Z" }, { "entity_id": "light.the_dreaming_ceiling_gledopto_0d_light", "name": "GLEDOPTO GL-B-008Z" } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "EXTENDED_COLOR_LIGHT" } ], "user_given_name": "The Dreaming Ceiling GLEDOPTO 0D", "device_reg_id": "144ae2565818f1f7dbaa0fbb70e6acf2", "area_id": "the_dreaming", "cluster_details": { "11": { "device_type": { "name": "EXTENDED_COLOR_LIGHT", "id": 528 }, "profile_id": 49246, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": {}, "unsupported_attributes": {} }, "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} }, "0x0005": { "endpoint_attribute": "scenes", "attributes": {}, "unsupported_attributes": {} }, "0x0006": { "endpoint_attribute": "on_off", "attributes": { "0x0000": { "attribute_name": "on_off", "value": 0 } }, "unsupported_attributes": { "0x4003": { "attribute_name": "start_up_on_off" } } }, "0x0008": { "endpoint_attribute": "level", "attributes": { "0x0000": { "attribute_name": "current_level", "value": 254 } }, "unsupported_attributes": { "0x4000": { "attribute_name": "start_up_current_level" }, "0x0013": { "attribute_name": "off_transition_time" }, "0x0011": { "attribute_name": "on_level" }, "0x0014": { "attribute_name": "default_move_rate" }, "0x0010": { "attribute_name": "on_off_transition_time" }, "0x0012": { "attribute_name": "on_transition_time" } } }, "0x0300": { "endpoint_attribute": "light_color", "attributes": { "0x400a": { "attribute_name": "color_capabilities", "value": 31 }, "0x4002": { "attribute_name": "color_loop_active", "value": 0 }, "0x0008": { "attribute_name": "color_mode", "value": 1 }, "0x0007": { "attribute_name": "color_temperature", "value": 500 }, "0x0000": { "attribute_name": "current_hue", "value": 20 }, "0x0001": { "attribute_name": "current_saturation", "value": 219 }, "0x0003": { "attribute_name": "current_x", "value": 12480 }, "0x0004": { "attribute_name": "current_y", "value": 47190 }, "0x4000": { "attribute_name": "enhanced_current_hue", "value": 0 } }, "unsupported_attributes": { "0x400c": { "attribute_name": "color_temp_physical_max" }, "0x4010": { "attribute_name": "start_up_color_temperature" }, "0x000f": { "attribute_name": "options" }, "0x400b": { "attribute_name": "color_temp_physical_min" } } } }, "out_clusters": {} } } } } ```

Logs

Logs ```python [Paste the logs here] ```

Additional information

No response

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