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
731 stars 673 forks source link

[Device Support Request] LIVARNO LUX LED Bar (Lidl) #1567

Open X52p opened 2 years ago

X52p commented 2 years ago

Is your feature request related to a problem? Please describe.

Changing the brightness or color temperature on the LED bar, leads to the color net being set correctly. (can be fixed temporarily by cutting power to the device for a moment)

It seems like the white LEDs never turn off after they have been turned on once (they turn off when the device is switched off in HA, but always turn on again when the device is switched on. This way the colors seem washed out when setting a color)

Describe the solution you'd like a quirk for the device, so the colors behave as they should

Device signature - this can be acquired by clicking on the "Zigbee Device Signature" button in the device settings ``` { "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=4098, 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": "0x010d", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000", "0xef00" ], "out_clusters": [ "0x000a", "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } }, "manufacturer": "_TZ3210_iystcadi", "model": "TS0505B", "class": "zigpy.device.Device" } ```
Diagnostic information - this can be acquired by clicking on the "Download Diagnostics" button in the device settings ``` { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2022.5.4", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.9.9", "docker": true, "arch": "aarch64", "timezone": "Europe/Berlin", "os_name": "Linux", "os_version": "5.15.32-v8", "supervisor": "2022.05.2", "host_os": "Home Assistant OS 8.0", "docker_version": "20.10.14", "chassis": "embedded", "run_as_root": true }, "custom_components": { "dwd_pollenflug": { "version": "1.0.1", "requirements": [] }, "hacs": { "version": "1.24.5", "requirements": [ "aiogithubapi>=21.11.0" ] }, "rocketlaunchlive": { "version": "009", "requirements": [ "rocketlaunchlive==0.0.2" ] }, "satellitetracker": { "version": "0.0.8", "requirements": [ "n2yoasync==0.0.6" ] }, "dwd_weather": { "version": "1.2.21", "requirements": [ "simple_dwd_weatherforecast==1.1.5", "markdownify==0.6.5" ] }, "pyscript": { "version": "1.3.3", "requirements": [ "croniter==1.3.4", "watchdog==2.1.6" ] }, "mopidy": { "version": "1.4.6", "requirements": [ "mopidyapi==1.0.0" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ "bellows==0.29.0", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.73", "zigpy-deconz==0.16.0", "zigpy==0.45.1", "zigpy-xbee==0.14.0", "zigpy-zigate==0.7.4", "zigpy-znp==0.7.0" ], "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": "10C4", "pid": "8B34", "description": "*bv 2010/10*", "known_devices": [ "Bitron Video AV2010/10" ] } ], "codeowners": [ "@dmulcahey", "@adminiuga" ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" } ], "after_dependencies": [ "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": 63547, "manufacturer": "_TZ3210_iystcadi", "model": "TS0505B", "name": "_TZ3210_iystcadi TS0505B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4098, "power_source": "Mains", "lqi": 94, "rssi": null, "last_seen": "2022-05-16T15:55:57", "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=4098, 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": "0x010d", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000", "0xef00" ], "out_clusters": [ "0x000a", "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } } }, "entities": [ { "entity_id": "button.tz3210_iystcadi_ts0505b_5bccc9fe_identify", "name": "_TZ3210_iystcadi TS0505B" }, { "entity_id": "light.tz3210_iystcadi_ts0505b_5bccc9fe_level_light_color_on_off", "name": "_TZ3210_iystcadi TS0505B" } ], "neighbors": [], "endpoint_names": [ { "name": "EXTENDED_COLOR_LIGHT" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": "Lidl Light Bar", "device_reg_id": "281d3078ac710bbd2a0ce7be4abac9e3", "area_id": "bedroom" } } ```
dhzl84 commented 1 year ago

Same here ... Since there is no progress it seems to be better to return these devices as long as it's possible, huh?

MathiasEveraerts commented 1 year ago

returning led bars :(

stefan131 commented 1 year ago

I just got my Sonoff ZigBee stick and set it up with Zigbee2MQTT in Home Assistant. Like you said, you can actually get it to display just an RGB color, without W/WW

Now if you toggle it off and on in HASS, it will include white again. A workaround for this is to turn off color_sync: image

If you toggle the light with color_sync disabled, it will be green every time. It does remember the last state, so you'll have to switch to a different color before being able to set the same color again. Using a color temperature with this light means you'll have to physically turn if off and on again in order to get just RGB

deCONZ and Zigbee2MQTT seem to be having the same issue

dhzl84 commented 1 year ago

The Z2M team seems to have fixed the issues. Anyone here who could takeover their solution?

MathiasEveraerts commented 1 year ago

The Z2M team seems to have fixed the issues. Anyone here who could takeover their solution?

also waiting on this

dersimoezdag commented 1 year ago

The Problem seems to be somewhere in "Color" cluster. This is missing some commands and attributes. I don't know how to add the necessary commands. Here is my try so far

Relevant Cluster in z2m is here i guess: https://github.com/Koenkk/zigbee-herdsman/blob/b8a1d713c7edd57e361a28e7f7d75dfe2a1bdd80/src/zcl/definition/cluster.ts#L2429

To be hones... I don't know hot to build quirks Livarno_Lux_Light_Bar_RGBCCT.txt

martin3000 commented 1 year ago

I guess that the same quirk as for the TS0505A https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/lidl/rgbcct.py can be used. The problem may be that the quirk-detector does not recognize the TS0505B, only the TS0505A.

@DMOEdetc did you try your quirks?

dersimoezdag commented 1 year ago

I guess that the same quirk as for the TS0505A https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/lidl/rgbcct.py can be used. The problem may be that the quirk-detector does not recognize the TS0505B, only the TS0505A.

@DMOEdetc did you try qour quirks?

I've tried it out. Sadly the problem stays the same. The white LEDs didn't power off in color mode and disturbed the color tone by a lot. With z2mqtt it worked like a charm but I was not able to port it correctly and currently don't have enough time to try it again :/

martin3000 commented 1 year ago

livarno_ts0505b.py.txt I just copied the module for the TS0505A, added the 0xEF00 cluster and it seems to work.

dersimoezdag commented 1 year ago

livarno_ts0505b.py.txt I just copied the module for the TS0505A, added the 0xEF00 cluster and it seems to work.

It does not work. It's the same thing I've tried before in my reply. The Problem stays the same. The white LEDs don't power off when you switch to color mode.

jeroenleenarts commented 1 year ago

Seeing the same effect on my Lidl lights here.

{
  "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.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": "0x0104",
      "device_type": "0x010d",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0300",
        "0x1000",
        "0xef00"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "_TZ3210_iystcadi",
  "model": "TS0505B",
  "class": "zigpy.device.Device"
}
jeroenleenarts commented 1 year ago

@martin3000 Trying suggestion with the info here. https://community.home-assistant.io/t/how-to-setup-local-zha-quirks/341226

jeroenleenarts commented 1 year ago

@martin3000 It recognizes the quirk now, but it doesn't change much in the problem...

jeroenleenarts commented 1 year ago

I am able to get the light to turn full RGB now and the color is much better. Red is really red. But I can only get this done by switching between colors on the color wheel.

In automation it also works to pick a color, as long as I do not add a brightness.

dersimoezdag commented 1 year ago

@jeroenleenarts how did you manage it? Have yo compared it to the results of z2m? Because there it works properly and through the color wheel it is not really bright. It's the right color but it is very dimmed and that's not how it supposed to be.

MathiasEveraerts commented 10 months ago

I am able to get the light to turn full RGB now and the color is much better. Red is really red. But I can only get this done by switching between colors on the color wheel.

In automation it also works to pick a color, as long as I do not add a brightness.

I used the quirck by @martin3000 but it does not seem to work for me. Red is red but light red, not dark red.

jeroenleenarts commented 10 months ago

I've n oticed this light bar to be finicky. I wish there was a way to get it to behave better.

MathiasEveraerts commented 10 months ago

z2m has done it.

dersimoezdag commented 10 months ago

z2m has done it.

Yes, we know. I've linked all the related Code already :)

ichbaum commented 7 months ago

When i switch the power of and on the color is shown correctly and the white LEDs are off. Now i can change the color. But if i change the brightness it will return to white LEDs on.

CodeWanderer7331 commented 7 months ago

Same problem here, would also be interested in a solution :)

T3pco commented 7 months ago

also interessted in a solution. Device is still sold for good price recently

T3pco commented 2 months ago

device is still sold/available :-/ sadly not deep enough in this topic to provide a fix by myself

tomhense commented 2 months ago

It would be great to have proper support for this device but in the mean time there is a little hack you can use.

Simply add this yaml as a script in the scripts tab and modify the device name and device id for your light/setup. Now you can simply set a rgb color for the LED bar (like before) and then trigger this script (I personally have a button for this on my dashboard) and after a second only the rgb leds will on.

alias: LED Bar Livarno Hack
sequence:
  - variables:
      rgb: "{{ state_attr('light.tz3210_iystcadi_ts0505b_light', 'rgb_color') }}"
  - service: light.turn_on
    metadata: {}
    data:
      brightness_pct: 100
      color_temp: 500
    target:
      device_id: d3784ee7e26bdaf65819f56f83aeb48b
    enabled: true
  - service: light.turn_on
    metadata: {}
    data:
      rgb_color: "{{ rgb }}"
    target:
      device_id: d3784ee7e26bdaf65819f56f83aeb48b
mode: single
icon: mdi:palette
T3pco commented 2 months ago

It would be great to have proper support for this device but in the mean time there is a little hack you can use.

Simply add this yaml as a script in the scripts tab and modify the device name and device id for your light/setup. Now you can simply set a rgb color for the LED bar (like before) and then trigger this script (I personally have a button for this on my dashboard) and after a second only the rgb leds will on.

alias: LED Bar Livarno Hack
sequence:
  - variables:
      rgb: "{{ state_attr('light.tz3210_iystcadi_ts0505b_light', 'rgb_color') }}"
  - service: light.turn_on
    metadata: {}
    data:
      brightness_pct: 100
      color_temp: 500
    target:
      device_id: d3784ee7e26bdaf65819f56f83aeb48b
    enabled: true
  - service: light.turn_on
    metadata: {}
    data:
      rgb_color: "{{ rgb }}"
    target:
      device_id: d3784ee7e26bdaf65819f56f83aeb48b
mode: single
icon: mdi:palette

i'll give it a try, thank you :-) first test was a bit flappy, seems like some delay between the executions is required. I use this light mainly with motion sensor, so i want to have RGB at night (low and eye friendly color) + RGBWW at daytime

tomhense commented 2 months ago

i'll give it a try, thank you :-) first test was a bit flappy, seems like some delay between the executions is required. I use this light mainly with motion sensor, so i want to have RGB at night (low and eye friendly color) + RGBWW at daytime

For me it currently works like it is but I also had this issue previously. You can either add small delays or put the two light commands in a loop so they are executed twice. The transition will always look a bit ugly but at least the rgb mode of the light is useable.

SlKlElT commented 2 months ago

i'll give it a try, thank you :-) first test was a bit flappy, seems like some delay between the executions is required. I use this light mainly with motion sensor, so i want to have RGB at night (low and eye friendly color) + RGBWW at daytime

For me it currently works like it is but I also had this issue previously. You can either add small delays or put the two light commands in a loop so they are executed twice. The transition will always look a bit ugly but at least the rgb mode of the light is useable.

Just like you said, running it twice helped me. With only one execution it only worked in about 5% of the cases and with the double execution about 95%. Delays did nothing. It's not perfect, but it's better than nothing. Thank you