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
749 stars 687 forks source link

[Device Support Request] Eglo PADROGIANO-Z (Awox) (2 in 1 White Leds + Color Leds) #1927

Closed tibuski closed 1 year ago

tibuski commented 1 year ago

Link : Eglo PADROGIANO-Z ceiling light

Device signature ```yaml { "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=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, 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": "0x010d", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x000a", "0x0300", "0x1000", "0xfc57" ], "out_clusters": [ "0x0006" ] }, "3": { "profile_id": 4751, "device_type": "0x010d", "in_clusters": [ "0x0004", "0xff50", "0xff51" ], "out_clusters": [ "0xff50", "0xff51" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } }, "manufacturer": "AwoX", "model": "EBF_RGB_Zm", "class": "zigpy.device.Device" } ```
Diagnostic information ```yaml { "home_assistant": { "installation_type": "Home Assistant Container", "version": "2022.11.2", "dev": false, "hassio": false, "virtualenv": false, "python_version": "3.10.7", "docker": true, "arch": "x86_64", "timezone": "Europe/Brussels", "os_name": "Linux", "os_version": "4.14.167-0-vanilla", "run_as_root": true }, "custom_components": { "hacs": { "version": "1.21.0", "requirements": [ "aiogithubapi>=21.11.0" ] }, "unifiprotect": { "version": "0.11.2", "requirements": [ "pyunifiprotect==1.4.4" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ "bellows==0.34.2", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.85", "zigpy-deconz==0.19.0", "zigpy==0.51.5", "zigpy-xbee==0.16.2", "zigpy-zigate==0.10.3", "zigpy-znp==0.9.1" ], "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" ] } ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" }, { "type": "_zigstar_gw._tcp.local.", "name": "*zigstar*" } ], "dependencies": [ "file_upload" ], "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": 34735, "manufacturer": "AwoX", "model": "EBF_RGB_Zm", "name": "AwoX EBF_RGB_Zm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4417, "power_source": "Mains", "lqi": 69, "rssi": -81, "last_seen": "2022-11-16T16:32:36", "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=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, 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": "0x010d", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x000a", "0x0300", "0x1000", "0xfc57" ], "out_clusters": [ "0x0006" ] }, "3": { "profile_id": 4751, "device_type": "0x010d", "in_clusters": [ "0x0004", "0xff50", "0xff51" ], "out_clusters": [ "0xff50", "0xff51" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } } }, "active_coordinator": false, "entities": [ { "entity_id": "binary_sensor.plafond_theo_opening", "name": "AwoX EBF_RGB_Zm" }, { "entity_id": "button.plafond_theo_identify", "name": "AwoX EBF_RGB_Zm" }, { "entity_id": "light.plafond_theo_light", "name": "AwoX EBF_RGB_Zm" }, { "entity_id": "number.plafond_theo_start_up_current_level", "name": "AwoX EBF_RGB_Zm" }, { "entity_id": "number.plafond_theo_start_up_color_temperature", "name": "AwoX EBF_RGB_Zm" }, { "entity_id": "select.plafond_theo_start_up_behavior", "name": "AwoX EBF_RGB_Zm" } ], "neighbors": [ { "device_type": "Coordinator", "rx_on_when_idle": "On", "relationship": "Parent", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x0000", "permit_joining": "Unknown", "depth": "0", "lqi": "33" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xC20D", "permit_joining": "Unknown", "depth": "0", "lqi": "69" } ], "endpoint_names": [ { "name": "EXTENDED_COLOR_LIGHT" }, { "name": "unknown 269 device_type of 0x128f profile id" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": "Plafond Th\u00e9o", "device_reg_id": "61fe1e31d7d768fe81c9277ea43c69b2", "area_id": "d4d81122fb4211ea8bc1a335fcb5bcf9", "cluster_details": { "1": { "device_type": { "name": "EXTENDED_COLOR_LIGHT", "id": 269 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "AwoX" }, "0x0005": { "attribute_name": "model", "value": "EBF_RGB_Zm" } }, "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": 1 }, "0x4003": { "attribute_name": "start_up_on_off", "value": 255 } }, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": { "0x0000": { "attribute_name": "current_level", "value": 3 }, "0x4000": { "attribute_name": "start_up_current_level", "value": 0 } }, "unsupported_attributes": { "0x0012": { "attribute_name": "on_transition_time" }, "0x0010": { "attribute_name": "on_off_transition_time" }, "0x0011": { "attribute_name": "on_level" }, "0x0013": { "attribute_name": "off_transition_time" }, "0x0014": { "attribute_name": "default_move_rate" } } }, "0x0300": { "endpoint_attribute": "light_color", "attributes": { "0x0000": { "attribute_name": "current_hue", "value": 170 }, "0x0001": { "attribute_name": "current_saturation", "value": 255 }, "0x0003": { "attribute_name": "current_x", "value": 8912 }, "0x0004": { "attribute_name": "current_y", "value": 2621 }, "0x0007": { "attribute_name": "color_temperature", "value": 153 }, "0x0008": { "attribute_name": "color_mode", "value": 1 }, "0x4000": { "attribute_name": "enhanced_current_hue", "value": 43520 }, "0x4002": { "attribute_name": "color_loop_active", "value": 0 }, "0x400a": { "attribute_name": "color_capabilities", "value": 25 }, "0x400b": { "attribute_name": "color_temp_physical_min", "value": 153 }, "0x400c": { "attribute_name": "color_temp_physical_max", "value": 370 }, "0x4010": { "attribute_name": "start_up_color_temperature", "value": 153 } }, "unsupported_attributes": {} }, "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} }, "0xfc57": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0006": { "endpoint_attribute": "on_off", "attributes": {}, "unsupported_attributes": {} } } }, "3": { "device_type": { "name": "unknown", "id": 269 }, "profile_id": 4751, "in_clusters": { "0xff50": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} }, "0xff51": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} }, "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0xff50": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} }, "0xff51": { "endpoint_attribute": "manufacturer_specific", "attributes": {}, "unsupported_attributes": {} } } }, "242": { "device_type": { "name": "unknown", "id": 97 }, "profile_id": 41440, "in_clusters": {}, "out_clusters": { "0x0021": { "endpoint_attribute": "green_power", "attributes": {}, "unsupported_attributes": {} } } } } } } ```

Additional context The Lamp consist of 2 parts :

Most missing feature : being able to turn off the white leds and/or the color leds

I think, ideally, the Light should appear as 2 different lights for which we can change brightness and color/temp As of now, the sliders only change the White Light brightness and turn on/off only works for the whole lamp.

MattWestb commented 1 year ago

This light is little strange made and i have the 3 x CT spots and is making one CT light and one open/close sensor that is showing if the light is on or off. The signature is :

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *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": [
        "0x0006"
      ]
    },
    "3": {
      "profile_id": 4751,
      "device_type": "0x010c",
      "in_clusters": [
        "0xff50",
        "0xff51"
      ],
      "out_clusters": [
        "0xff50",
        "0xff51"
      ]
    }
  },
  "manufacturer": "AwoX",
  "model": "TLSR82xx",
  "class": "zigpy.device.Device"
}

My lights is working OK but i dont understand way ZHA is making the extra sensor that is no use if looking in the signature but i think its coming from the On/Off cluster 0x0006 on EP 1 as out that shall being one controller that is sending On/Off to lights.

I think your light need little patching of the color cluster for working OK with color and CT but i also think its need some attribute stetted on the 0xff50, 0xff51 and 0xfc57 that we is not knowing how its working. If some one have one AwoX Zigbee gateway and can sniffing how its initiating the devise it can helping us understanding how to configuring this device right.

Also we is expecting more strange things from this devices then its using the new chips from Telink Semiconductor that tuya also have starting to using and some device is working OK and other is heaving very strange bugs. Also it looks they is using the same firmware for many devices and is only changing some setting in the config and transforming it to one other device (IKEA is doing it with setting in the device user data but they is doing it in one very good was and its working OK).

Edit: Link to my lights https://www.eglo.com/en/recessed-light-fueva-z-900111.html.

tibuski commented 1 year ago

Thank you very much for your reply !

I don't have the Awox Zigbee Gateway but if you need me to do any test and/or gather logs, please ask.

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