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
758 stars 695 forks source link

[Device Support Request] IKEA Tradfri GU10 LED2005R5 bulb #1690

Closed kekonn closed 2 years ago

kekonn commented 2 years ago

Is your feature request related to a problem? Please describe. The device is not supported yet, but it is available in Zigbee2MQTT.

Describe the solution you'd like Support for dimming, on/off and colour temperature.

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=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": { "1": { "profile_id": 260, "device_type": "0x010c", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000", "0xfc57" ], "out_clusters": [ "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [ "0x0021" ], "out_clusters": [ "0x0021" ] } }, "manufacturer": "IKEA of Sweden", "model": "TRADFRIbulbGU10WS345lm", "class": "zigpy.device.Device" } ```
Diagnostic information ```yaml { "home_assistant": { "installation_type": "Home Assistant Supervised", "version": "2022.8.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.5", "docker": true, "arch": "aarch64", "timezone": "Europe/Brussels", "os_name": "Linux", "os_version": "5.15.0-1012-raspi", "supervisor": "2022.08.3", "host_os": null, "docker_version": "20.10.17", "chassis": null, "run_as_root": true }, "custom_components": { "knmi": { "version": "1.2.0", "requirements": [] }, "hacs": { "version": "1.26.2", "requirements": [ "aiogithubapi>=22.2.4" ] }, "deebot": { "version": "1.4.1", "requirements": [ "deebot-client==1.5.1", "numpy>=1.21.2" ] }, "programmable_thermostat": { "version": "8.1", "requirements": [] }, "nodered": { "version": "1.0.9", "requirements": [] }, "monitor_docker": { "version": "1.10", "requirements": [ "aiodocker==0.21.0", "python-dateutil==2.8.2" ] }, "microsoft_graph": { "version": "2.0.0", "requirements": [ "ha-graphapi==0.0.20" ] }, "mass": { "version": "2022.8.2", "requirements": [ "music-assistant==1.8.5" ] }, "jellyfin": { "version": "1.1.1", "requirements": [ "jellyfin-apiclient-python==1.7.2" ] }, "skodaconnect": { "version": "v1.0.69", "requirements": [ "skodaconnect>=1.1.21", "homeassistant>=2021.12.0" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ "bellows==0.31.3", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.78", "zigpy-deconz==0.18.0", "zigpy==0.49.0", "zigpy-xbee==0.15.0", "zigpy-zigate==0.9.1", "zigpy-znp==0.8.1" ], "usb": [ { "vid": "10C4", "pid": "EA60", "description": "*2652*", "known_devices": [ "slae.sh cc2652rb stick" ] }, { "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" ] } ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" } ], "after_dependencies": [ "onboarding", "usb", "zeroconf" ], "iot_class": "local_polling", "loggers": [ "aiosqlite", "bellows", "crccheck", "pure_pcapy3", "zhaquirks", "zigpy", "zigpy_deconz", "zigpy_xbee", "zigpy_zigate", "zigpy_znp" ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 21984, "manufacturer": "IKEA of Sweden", "model": "TRADFRIbulbGU10WS345lm", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4476, "power_source": "Mains", "lqi": 255, "rssi": -37, "last_seen": "2022-08-10T21:17:59", "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=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": { "1": { "profile_id": 260, "device_type": "0x010c", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000", "0xfc57" ], "out_clusters": [ "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [ "0x0021" ], "out_clusters": [ "0x0021" ] } } }, "active_coordinator": false, "entities": [ { "entity_id": "button.living_left_identifybutton", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" }, { "entity_id": "light.living_left_light", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" }, { "entity_id": "number.living_left_onlevelconfiguration", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" }, { "entity_id": "number.living_left_onofftransitiontimeconfiguration", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" }, { "entity_id": "number.living_left_startupcurrentlevelconfiguration", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" }, { "entity_id": "select.living_left_startuponoffselect", "name": "IKEA of Sweden TRADFRIbulbGU10WS345lm" } ], "neighbors": [ { "device_type": "Coordinator", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x0000", "permit_joining": "Unknown", "depth": "0", "lqi": "97" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Parent", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x102B", "permit_joining": "Unknown", "depth": "15", "lqi": "174" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x1B9A", "permit_joining": "Unknown", "depth": "15", "lqi": "255" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x62F3", "permit_joining": "Unknown", "depth": "15", "lqi": "178" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x6407", "permit_joining": "Unknown", "depth": "15", "lqi": "136" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xE063", "permit_joining": "Unknown", "depth": "15", "lqi": "167" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xE8AE", "permit_joining": "Unknown", "depth": "15", "lqi": "255" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xFD5F", "permit_joining": "Unknown", "depth": "15", "lqi": "190" } ], "endpoint_names": [ { "name": "COLOR_TEMPERATURE_LIGHT" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": "Living left", "device_reg_id": "7840d5231bd464096c4e3f9e4833b4f7", "area_id": "living_room", "cluster_details": { "1": { "device_type": { "name": "COLOR_TEMPERATURE_LIGHT", "id": 268 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "IKEA of Sweden" }, "0x0005": { "attribute_name": "model", "value": "TRADFRIbulbGU10WS345lm" } }, "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 }, "0x4003": { "attribute_name": "start_up_on_off", "value": 1 } }, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": { "0x0000": { "attribute_name": "current_level", "value": 130 }, "0x0010": { "attribute_name": "on_off_transition_time", "value": 5 }, "0x0011": { "attribute_name": "on_level", "value": 255 }, "0x4000": { "attribute_name": "start_up_current_level", "value": 255 } }, "unsupported_attributes": { "0x0013": { "attribute_name": "off_transition_time" }, "0x0014": { "attribute_name": "default_move_rate" }, "0x0012": { "attribute_name": "on_transition_time" } } }, "0x0300": { "endpoint_attribute": "light_color", "attributes": { "0x0003": { "attribute_name": "current_x", "value": 30138 }, "0x0004": { "attribute_name": "current_y", "value": 26909 }, "0x0007": { "attribute_name": "color_temperature", "value": 370 }, "0x0008": { "attribute_name": "color_mode", "value": 2 }, "0x400a": { "attribute_name": "color_capabilities", "value": 16 }, "0x400b": { "attribute_name": "color_temp_physical_min", "value": 250 }, "0x400c": { "attribute_name": "color_temp_physical_max", "value": 454 } }, "unsupported_attributes": { "0x0000": { "attribute_name": "current_hue" }, "0x4000": { "attribute_name": "enhanced_current_hue" }, "0x0001": { "attribute_name": "current_saturation" }, "0x4002": { "attribute_name": "color_loop_active" } } }, "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} }, "0xfc57": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": {}, "unsupported_attributes": {} } } }, "242": { "device_type": { "name": "unknown", "id": 97 }, "profile_id": 41440, "in_clusters": { "0x0021": { "endpoint_attribute": "green_power", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0021": { "endpoint_attribute": "green_power", "attributes": {}, "unsupported_attributes": {} } } } } } } ```
Additional logs ``` ```

Additional context

The entities attached to the lights are named really weird: image

dmulcahey commented 2 years ago

What isn’t supported?

kekonn commented 2 years ago

It's not so much unsupported as not displaying properly. See the labels in my screenshots. This is probably solved with assigning a quirk from a similar Tradfri LED to this one.

dmulcahey commented 2 years ago

Quirks won’t affect those labels at all. That’s all in ZHA. Better names will be used in the future after we reconcile all of the HA entity naming changes.