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
744 stars 681 forks source link

[BUG] TS0004_TZ3000_ltt60asa lights effect each other #1982

Closed pervolianinen closed 1 year ago

pervolianinen commented 1 year ago

Describe the bug I have a Tuya 4 gang with neutral light switch (TS0004_TZ3000_ltt60asa) connect to zha. When I turn on/off 1 light, it effect all other lights too.

Expected behavior Every light should be independant

Device 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": "0x0100", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0702", "0x0b04", "0xe000", "0xe001" ], "out_clusters": [ "0x000a", "0x0019" ] }, "2": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "3": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "4": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } }, "manufacturer": "_TZ3000_ltt60asa", "model": "TS0004", "class": "zigpy.device.Device" } ```
Diagnostic information ```{ "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/Moscow", "os_name": "Linux", "os_version": "4.4.59+", "run_as_root": true }, "custom_components": { "smartir": { "version": "1.17.6", "requirements": [ "aiofiles==0.6.0" ] }, "moscow_pgu": { "version": "0.3.1", "requirements": [] }, "better_thermostat": { "version": "1.0.0", "requirements": [] }, "xiaomi_miot_raw": { "version": "v1.3.1", "requirements": [ "construct", "python-miio>=0.5.3" ] }, "yandex_music_browser": { "version": "v0.0.8", "requirements": [ "yandex-music==2.0.1" ] }, "keenetic": { "version": "1.0", "requirements": [ "requests==2.25.1" ] }, "yandex_dialogs": { "version": "1.2", "requirements": [] }, "apple_airplayer": { "version": "v0.0.8", "requirements": [ "pyatv>=0.8.2" ] }, "lkcomu_interrao": { "version": "2022.05.02", "requirements": [ "python-dateutil==2.8.1", "fake_useragent==0.1.11", "inter-rao-energosbyt-python==0.0.23" ] }, "yandex_smart_home": { "version": "0.6.1", "requirements": [] }, "yandex_station": { "version": "3.11.0", "requirements": [] }, "narodmon": { "version": "2.0.2", "requirements": [] }, "xiaomi_miio_airpurifier": { "version": "2022.8.0.0", "requirements": [ "construct==2.10.56", "python-miio>=0.5.12" ] }, "super_soco_custom": { "version": "1.0.0-beta.5", "requirements": [] }, "bodymiscale": { "version": "3.0.4", "requirements": [ "cachetools==5.1.0" ] }, "localtuya": { "version": "4.1.1", "requirements": [] }, "gismeteo": { "version": "2.5.0", "requirements": [] }, "garmin_connect": { "version": "0.1.8", "requirements": [ "garminconnect==0.1.24" ] }, "ble_monitor": { "version": "10.6.1", "requirements": [ "pycryptodomex>=3.14.1", "janus>=1.0.0", "aioblescan>=0.2.13", "btsocket>=0.2.0", "pyric>=0.1.6.3" ] }, "xiaomi_miot": { "version": "0.7.2", "requirements": [ "construct==2.10.56", "python-miio>=0.5.6", "micloud>=0.3" ] }, "xiaomi_gateway3": { "version": "2.1.2", "requirements": [ "zigpy>=0.33.0" ] }, "tuya_local": { "version": "0.20.5", "requirements": [ "pycryptodome~=3.15.0", "tinytuya==1.7.1" ] }, "hacs": { "version": "1.28.4", "requirements": [ "aiogithubapi>=22.2.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": 44468, "manufacturer": "_TZ3000_ltt60asa", "model": "TS0004", "name": "_TZ3000_ltt60asa TS0004", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4417, "power_source": "Mains", "lqi": 144, "rssi": -64, "last_seen": "2022-12-03T21:08:02", "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": "0x0100", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0702", "0x0b04", "0xe000", "0xe001" ], "out_clusters": [ "0x000a", "0x0019" ] }, "2": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "3": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "4": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0004", "0x0005", "0x0006" ], "out_clusters": [] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } } }, "active_coordinator": false, "entities": [ { "entity_id": "button.tz3000_ltt60asa_ts0004_identify", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "light.tz3000_ltt60asa_ts0004_light", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "light.tz3000_ltt60asa_ts0004_light_2", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "light.tz3000_ltt60asa_ts0004_light_3", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "light.tz3000_ltt60asa_ts0004_light_4", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "sensor.tz3000_ltt60asa_ts0004_active_power", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "sensor.tz3000_ltt60asa_ts0004_rms_current", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "sensor.tz3000_ltt60asa_ts0004_rms_voltage", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "sensor.tz3000_ltt60asa_ts0004_power_factor", "name": "_TZ3000_ltt60asa TS0004" }, { "entity_id": "sensor.tz3000_ltt60asa_ts0004_summation_delivered", "name": "_TZ3000_ltt60asa TS0004" } ], "neighbors": [], "endpoint_names": [ { "name": "ON_OFF_LIGHT" }, { "name": "ON_OFF_LIGHT" }, { "name": "ON_OFF_LIGHT" }, { "name": "ON_OFF_LIGHT" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": null, "device_reg_id": "1d00289e03df870d03a9f252dc5335d3", "area_id": null, "cluster_details": { "1": { "device_type": { "name": "ON_OFF_LIGHT", "id": 256 }, "profile_id": 260, "in_clusters": { "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 }, "0x4001": { "attribute_name": "on_time", "value": 0 }, "0x4002": { "attribute_name": "off_wait_time", "value": 0 } }, "unsupported_attributes": {} }, "0x0702": { "endpoint_attribute": "smartenergy_metering", "attributes": { "0x0000": { "attribute_name": "current_summ_delivered", "value": 0 }, "0x0200": { "attribute_name": "status", "value": 0 }, "0x0300": { "attribute_name": "unit_of_measure", "value": 0 }, "0x0303": { "attribute_name": "summation_formatting", "value": 0 }, "0x0306": { "attribute_name": "metering_device_type", "value": 0 } }, "unsupported_attributes": { "0x0400": { "attribute_name": "instantaneous_demand" }, "0x0301": { "attribute_name": "multiplier" }, "0x0302": { "attribute_name": "divisor" }, "0x0304": { "attribute_name": "demand_formatting" } } }, "0x0b04": { "endpoint_attribute": "electrical_measurement", "attributes": { "0x0505": { "attribute_name": "rms_voltage", "value": 0 }, "0x0508": { "attribute_name": "rms_current", "value": 0 }, "0x050b": { "attribute_name": "active_power", "value": 0 } }, "unsupported_attributes": { "0x0300": { "attribute_name": "ac_frequency" }, "0x0601": { "attribute_name": "ac_voltage_divisor" }, "0x0302": { "attribute_name": "ac_frequency_max" }, "0x0603": { "attribute_name": "ac_current_divisor" }, "0x0602": { "attribute_name": "ac_current_multiplier" }, "0x0605": { "attribute_name": "ac_power_divisor" }, "0x0604": { "attribute_name": "ac_power_multiplier" }, "0x0507": { "attribute_name": "rms_voltage_max" }, "0x0600": { "attribute_name": "ac_voltage_multiplier" }, "0x050a": { "attribute_name": "rms_current_max" }, "0x0000": { "attribute_name": "measurement_type" }, "0x0403": { "attribute_name": "power_divisor" }, "0x050d": { "attribute_name": "active_power_max" }, "0x0401": { "attribute_name": "ac_frequency_divisor" }, "0x050f": { "attribute_name": "apparent_power" }, "0x0400": { "attribute_name": "ac_frequency_multiplier" }, "0x0402": { "attribute_name": "power_multiplier" } } }, "0xe000": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0xe001": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "_TZ3000_ltt60asa" }, "0x0005": { "attribute_name": "model", "value": "TS0004" } }, "unsupported_attributes": {} } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": {}, "unsupported_attributes": {} }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": {} } } }, "2": { "device_type": { "name": "ON_OFF_LIGHT", "id": 256 }, "profile_id": 260, "in_clusters": { "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 }, "0x4001": { "attribute_name": "on_time", "value": 0 }, "0x4002": { "attribute_name": "off_wait_time", "value": 0 } }, "unsupported_attributes": {} } }, "out_clusters": {} }, "3": { "device_type": { "name": "ON_OFF_LIGHT", "id": 256 }, "profile_id": 260, "in_clusters": { "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 }, "0x4001": { "attribute_name": "on_time", "value": 0 }, "0x4002": { "attribute_name": "off_wait_time", "value": 0 } }, "unsupported_attributes": {} } }, "out_clusters": {} }, "4": { "device_type": { "name": "ON_OFF_LIGHT", "id": 256 }, "profile_id": 260, "in_clusters": { "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 }, "0x4001": { "attribute_name": "on_time", "value": 0 }, "0x4002": { "attribute_name": "off_wait_time", "value": 0 } }, "unsupported_attributes": {} } }, "out_clusters": {} }, "242": { "device_type": { "name": "unknown", "id": 97 }, "profile_id": 41440, "in_clusters": {}, "out_clusters": { "0x0021": { "endpoint_attribute": "green_power", "attributes": {}, "unsupported_attributes": {} } } } } } } ``` **Additional context** Add any other context about the problem here.
javicalle commented 1 year ago

The quirk from https://github.com/zigpy/zha-device-handlers/pull/1983/files would fix the issue. It will be helpful if you can validate it against your device.

Thanks in advance.

pervolianinen commented 1 year ago

tested on real device. work fine. but has voltage and etc. lables for not supported functional

javicalle commented 1 year ago

No metering issue here #1968