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
754 stars 693 forks source link

[BUG] TS0002 by _TZ3000_fbjdkph9, 2 gang light switch, when either switch to turn off/on by ZHA both do the same action #2272

Closed Diramu closed 1 year ago

Diramu commented 1 year ago

Describe the bug This device has two light entities, when HA turns either on/off, both lights physical switch on/off, then a few seconds later the others entity states updates to match what you did (to the other). In others words, they are acting like a group.

To Reproduce Steps to reproduce the behavior:

  1. Go to device page of this unit via the ZHA integration, both control switches show off.
  2. Click on the toggle switch for the first control switch
  3. Yes see both lights connected to the device turn on instantly
  4. logbook reports: _Ikuu_2sw Light Left turned on triggered by service light.turnon
  5. about 5 seconds later, the toggle switch for the second control switch turn on, and the logbook reports: _Ikuu2sw Light Right turned on

Expected behavior I would have expected just the light controlled by the first control switch to turn on.

Screenshots image

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=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": "0x0100", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0xe000", "0xe001" ], "out_clusters": [ "0x000a", "0x0019" ] }, "2": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0003", "0x0004", "0x0005", "0x0006", "0xe000", "0xe001" ], "out_clusters": [] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } }, "manufacturer": "_TZ3000_fbjdkph9", "model": "TS0002", "class": "zigpy.device.Device" } ```
Diagnostic information ```yaml { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2023.3.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.10", "docker": true, "arch": "x86_64", "timezone": "Australia/Sydney", "os_name": "Linux", "os_version": "5.15.90", "supervisor": "2023.03.1", "host_os": "Home Assistant OS 9.5", "docker_version": "20.10.22", "chassis": "vm", "run_as_root": true }, "custom_components": { "reolink_discovery": { "version": "1.2.0", "requirements": [] }, "miele": { "version": "0.1.9", "requirements": [ "flatdict==4.0.1", "pymiele==0.1.6" ] }, "meross_lan": { "version": "3.0.2", "requirements": [] }, "watchman": { "version": "0.5.1", "requirements": [ "prettytable==3.0.0" ] }, "fronius_inverter": { "version": "v0.9.8", "requirements": [] }, "garmin_connect": { "version": "0.2.13", "requirements": [ "garminconnect==0.1.50" ] }, "ble_monitor": { "version": "11.7.1", "requirements": [ "pycryptodomex>=3.14.1", "janus>=1.0.0", "aioblescan>=0.2.14", "btsocket>=0.2.0", "pyric>=0.1.6.3" ] }, "hacs": { "version": "1.31.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "tuya_local": { "version": "2022.3.0", "requirements": [ "pycryptodome~=3.17", "tinytuya==1.11.0" ] }, "solarweb": { "version": "0.2.0", "requirements": [ "fronius-solarweb>=0.2.0" ] }, "dahua": { "version": "0.5.0", "requirements": [] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "onboarding", "usb" ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "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" ], "requirements": [ "bellows==0.34.9", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.93", "zigpy-deconz==0.19.2", "zigpy==0.53.2", "zigpy-xbee==0.16.2", "zigpy-zigate==0.10.3", "zigpy-znp==0.9.3" ], "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" ] } ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" }, { "type": "_zigstar_gw._tcp.local.", "name": "*zigstar*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 42770, "manufacturer": "_TZ3000_fbjdkph9", "model": "TS0002", "name": "_TZ3000_fbjdkph9 TS0002", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4098, "power_source": "Mains", "lqi": 160, "rssi": -60, "last_seen": "2023-03-13T22:23:45", "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": "0x0100", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0xe000", "0xe001" ], "out_clusters": [ "0x000a", "0x0019" ] }, "2": { "profile_id": 260, "device_type": "0x0100", "in_clusters": [ "0x0003", "0x0004", "0x0005", "0x0006", "0xe000", "0xe001" ], "out_clusters": [] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } } }, "active_coordinator": false, "entities": [ { "entity_id": "button.ikuu_2sw_identify", "name": "_TZ3000_fbjdkph9 TS0002" }, { "entity_id": "light.ikuu_2sw_light", "name": "_TZ3000_fbjdkph9 TS0002" }, { "entity_id": "light.ikuu_2sw_light_2", "name": "_TZ3000_fbjdkph9 TS0002" } ], "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": "143" } ], "routes": [ { "dest_nwk": "0x0000", "route_status": "Active", "memory_constrained": true, "many_to_one": true, "route_record_required": false, "next_hop": "0x0000" } ], "endpoint_names": [ { "name": "ON_OFF_LIGHT" }, { "name": "ON_OFF_LIGHT" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": "Ikuu_2sw", "device_reg_id": "0dbf84b2a39e3915bbe9b5c218827d04", "area_id": "office", "cluster_details": { "1": { "device_type": { "name": "ON_OFF_LIGHT", "id": 256 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "_TZ3000_fbjdkph9" }, "0x0005": { "attribute_name": "model", "value": "TS0002" } }, "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": {} }, "0xe000": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0xe001": { "endpoint_attribute": null, "attributes": {}, "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": { "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": {} }, "0xe000": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0xe001": { "endpoint_attribute": null, "attributes": {}, "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 logs ``` 2023-03-13 23:40:23.038 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received readCounters: [[39, 38, 17, 7, 0, 0, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 2023-03-13 23:40:23.038 DEBUG (MainThread) [bellows.ezsp.protocol] Send command getValue: (,) 2023-03-13 23:40:23.045 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received getValue: [, b'\xfc'] 2023-03-13 23:40:23.045 DEBUG (MainThread) [bellows.zigbee.application] Free buffers status EzspStatus.SUCCESS, value: 252 2023-03-13 23:40:23.045 DEBUG (MainThread) [bellows.zigbee.application] ezsp_counters: [MAC_RX_BROADCAST = 375, MAC_TX_BROADCAST = 385, MAC_RX_UNICAST = 120, MAC_TX_UNICAST_SUCCESS = 36, MAC_TX_UNICAST_RETRY = 0, MAC_TX_UNICAST_FAILED = 0, APS_DATA_RX_BROADCAST = 2, APS_DATA_TX_BROADCAST = 2, APS_DATA_RX_UNICAST = 33, APS_DATA_TX_UNICAST_SUCCESS = 12, APS_DATA_TX_UNICAST_RETRY = 0, APS_DATA_TX_UNICAST_FAILED = 0, ROUTE_DISCOVERY_INITIATED = 0, NEIGHBOR_ADDED = 1, NEIGHBOR_REMOVED = 0, NEIGHBOR_STALE = 0, JOIN_INDICATION = 0, CHILD_REMOVED = 0, ASH_OVERFLOW_ERROR = 0, ASH_FRAMING_ERROR = 0, ASH_OVERRUN_ERROR = 0, NWK_FRAME_COUNTER_FAILURE = 0, APS_FRAME_COUNTER_FAILURE = 0, UTILITY = 0, APS_LINK_KEY_NOT_AUTHORIZED = 0, NWK_DECRYPTION_FAILURE = 0, APS_DECRYPTION_FAILURE = 0, ALLOCATE_PACKET_BUFFER_FAILURE = 0, RELAYED_UNICAST = 0, PHY_TO_MAC_QUEUE_LIMIT_REACHED = 0, PACKET_VALIDATE_LIBRARY_DROPPED_COUNT = 0, TYPE_NWK_RETRY_OVERFLOW = 0, PHY_CCA_FAIL_COUNT = 0, BROADCAST_TABLE_FULL = 0, PTA_LO_PRI_REQUESTED = 0, PTA_HI_PRI_REQUESTED = 0, PTA_LO_PRI_DENIED = 0, PTA_HI_PRI_DENIED = 0, PTA_LO_PRI_TX_ABORTED = 0, PTA_HI_PRI_TX_ABORTED = 0, ADDRESS_CONFLICT_SENT = 0, EZSP_FREE_BUFFERS = 252] 2023-03-13 23:40:25.428 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received incomingRouteRecordHandler: [0xa712, e0:79:8d:ff:fe:67:bf:5a, 164, -59, []] 2023-03-13 23:40:25.429 DEBUG (MainThread) [bellows.zigbee.application] Received incomingRouteRecordHandler frame with [0xa712, e0:79:8d:ff:fe:67:bf:5a, 164, -59, []] 2023-03-13 23:40:25.429 DEBUG (MainThread) [bellows.zigbee.application] Processing route record request: (0xa712, e0:79:8d:ff:fe:67:bf:5a, 164, -59, []) 2023-03-13 23:40:25.435 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received incomingRouteRecordHandler: [0xa712, e0:79:8d:ff:fe:67:bf:5a, 160, -60, []] 2023-03-13 23:40:25.435 DEBUG (MainThread) [bellows.zigbee.application] Received incomingRouteRecordHandler frame with [0xa712, e0:79:8d:ff:fe:67:bf:5a, 160, -60, []] 2023-03-13 23:40:25.435 DEBUG (MainThread) [bellows.zigbee.application] Processing route record request: (0xa712, e0:79:8d:ff:fe:67:bf:5a, 160, -60, []) 2023-03-13 23:40:25.441 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received incomingMessageHandler: [, EmberApsFrame(profileId=260, clusterId=6, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=230), 160, -60, 0xa712, 255, 255, b'\x18w\n\x00\x00\x10\x00'] 2023-03-13 23:40:25.441 DEBUG (MainThread) [bellows.zigbee.application] Received incomingMessageHandler frame with [, EmberApsFrame(profileId=260, clusterId=6, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=230), 160, -60, 0xa712, 255, 255, b'\x18w\n\x00\x00\x10\x00'] 2023-03-13 23:40:25.441 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0xA712), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=230, profile_id=260, cluster_id=6, data=Serialized[b'\x18w\n\x00\x00\x10\x00'], tx_options=, radius=0, non_member_radius=0, lqi=160, rssi=-60) 2023-03-13 23:40:25.442 DEBUG (MainThread) [zigpy.zcl] [0xA712:1:0x0006] Received ZCL frame: b'\x18w\n\x00\x00\x10\x00' 2023-03-13 23:40:25.442 DEBUG (MainThread) [zigpy.zcl] [0xA712:1:0x0006] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=119, command_id=10, *direction=, *is_reply=True) 2023-03-13 23:40:25.442 DEBUG (MainThread) [zigpy.zcl] [0xA712:1:0x0006] Decoded ZCL frame: OnOff:Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=Bool, value=))]) 2023-03-13 23:40:25.442 DEBUG (MainThread) [zigpy.zcl] [0xA712:1:0x0006] Received command 0x0A (TSN 119): Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=Bool, value=))]) 2023-03-13 23:40:25.442 DEBUG (MainThread) [zigpy.zcl] [0xA712:1:0x0006] Attribute report received: on_off= 2023-03-13 23:40:25.464 DEBUG (MainThread) [bellows.ezsp.protocol] Application frame received incomingMessageHandler: [, EmberApsFrame(profileId=260, clusterId=6, sourceEndpoint=2, destinationEndpoint=1, options=, groupId=0, sequence=231), 164, -59, 0xa712, 255, 255, b'\x18x\n\x00\x00\x10\x00'] 2023-03-13 23:40:25.464 DEBUG (MainThread) [bellows.zigbee.application] Received incomingMessageHandler frame with [, EmberApsFrame(profileId=260, clusterId=6, sourceEndpoint=2, destinationEndpoint=1, options=, groupId=0, sequence=231), 164, -59, 0xa712, 255, 255, b'\x18x\n\x00\x00\x10\x00'] 2023-03-13 23:40:25.464 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=, address=0xA712), src_ep=2, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=231, profile_id=260, cluster_id=6, data=Serialized[b'\x18x\n\x00\x00\x10\x00'], tx_options=, radius=0, non_member_radius=0, lqi=164, rssi=-59) 2023-03-13 23:40:25.464 DEBUG (MainThread) [zigpy.zcl] [0xA712:2:0x0006] Received ZCL frame: b'\x18x\n\x00\x00\x10\x00' 2023-03-13 23:40:25.464 DEBUG (MainThread) [zigpy.zcl] [0xA712:2:0x0006] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=120, command_id=10, *direction=, *is_reply=True) 2023-03-13 23:40:25.465 DEBUG (MainThread) [zigpy.zcl] [0xA712:2:0x0006] Decoded ZCL frame: OnOff:Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=Bool, value=))]) 2023-03-13 23:40:25.465 DEBUG (MainThread) [zigpy.zcl] [0xA712:2:0x0006] Received command 0x0A (TSN 120): Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=Bool, value=))]) 2023-03-13 23:40:25.465 DEBUG (MainThread) [zigpy.zcl] [0xA712:2:0x0006] Attribute report received: on_off= 2023-03-13 23:40:25.465 DEBUG (MainThread) [homeassistant.core] Bus:Handling ], color_mode=onoff, off_with_transition=False, off_brightness=None, friendly_name=Ikuu_2sw Light Right, supported_features=LightEntityFeature.FLASH @ 2023-03-13T23:31:37.483669+11:00>, new_state=], off_with_transition=False, off_brightness=None, friendly_name=Ikuu_2sw Light Right, supported_features=LightEntityFeature.FLASH @ 2023-03-13T23:40:25.465557+11:00>> ```

Additional context thats all folks

javicalle commented 1 year ago

It seems to be another variation for the TS000X devices.

My proposal would be:

ts0002.py ```python """tuya TS000X Switches.""" from zigpy.profiles import zha from zigpy.quirks import CustomDevice from zigpy.zcl.clusters.general import ( Basic, GreenPowerProxy, Groups, Identify, OnOff, Ota, Scenes, Time, ) from zhaquirks.const import ( DEVICE_TYPE, ENDPOINTS, INPUT_CLUSTERS, MODEL, OUTPUT_CLUSTERS, PROFILE_ID, ) from zhaquirks.tuya import ( TuyaZBE000Cluster, TuyaZBElectricalMeasurement, TuyaZBExternalSwitchTypeCluster, TuyaZBMeteringCluster, TuyaZBOnOffAttributeCluster, ) from zhaquirks.tuya.mcu import EnchantedDevice class Switch_2G_Var03(EnchantedDevice, CustomDevice): """Tuya 2 gang (variation 03)).""" signature = { MODEL: "TS0002", ENDPOINTS: { # 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT, INPUT_CLUSTERS: [ Basic.cluster_id, Identify.cluster_id, Groups.cluster_id, Scenes.cluster_id, OnOff.cluster_id, TuyaZBE000Cluster.cluster_id, TuyaZBExternalSwitchTypeCluster.cluster_id, ], OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id], }, # 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT, INPUT_CLUSTERS: [ Identify.cluster_id, Groups.cluster_id, Scenes.cluster_id, OnOff.cluster_id, TuyaZBE000Cluster.cluster_id, TuyaZBExternalSwitchTypeCluster.cluster_id, ], OUTPUT_CLUSTERS: [], }, # 242: { PROFILE_ID: 41440, DEVICE_TYPE: 97, INPUT_CLUSTERS: [], OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id], }, }, } replacement = { ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT, INPUT_CLUSTERS: [ Basic.cluster_id, Identify.cluster_id, Groups.cluster_id, Scenes.cluster_id, TuyaZBOnOffAttributeCluster, TuyaZBE000Cluster, TuyaZBExternalSwitchTypeCluster, ], OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id], }, 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT, INPUT_CLUSTERS: [ Identify.cluster_id, Groups.cluster_id, Scenes.cluster_id, TuyaZBOnOffAttributeCluster, TuyaZBE000Cluster, TuyaZBExternalSwitchTypeCluster, ], OUTPUT_CLUSTERS: [], }, 242: { PROFILE_ID: 41440, DEVICE_TYPE: 97, INPUT_CLUSTERS: [], OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id], }, }, } ```
Diramu commented 1 year ago

Is this something I can try? (and how?) Or do wait for an update.

javicalle commented 1 year ago

Is something that anyone must try to know if it will fix the issue or not.

There is a good guide about how configure your local quirks folder:

Once configured, create a new file (ie: ts0002.py) and put the proposed code inside.

Save changes, restart HA, remove your device from HA, wait a minute or so, and pair the device again.

Diramu commented 1 year ago

Just gave it a try. It did fix the problem. HA can now control each switch independently

I did notice 4 configuration options, not sure if they were there last time. Backlight mode , Power on state x 2

Backlightmode mode has 3 options

  1. Off
  2. LightWhenOn
  3. LightWhenOff I assume are mention to control the light highlighting the switch.

I found they have no effect. These lights only seems to do LightWhenOn. Same with power on state, only seems to do LastSate (vs Off, On)

Is there a step to make these configuration active?

MattWestb commented 1 year ago

If the firmware is not supporting it we cant do any thing to make it working. Best is hidden or deleting the GUI entries for them if you dont like having no working elements.

javicalle commented 1 year ago

I found they have no effect. These lights only seems to do LightWhenOn. Same with power on state, only seems to do LastSate (vs Off, On)

If don't work when you use it with gang 1 then is not device supported for sure. Nothing else can be done.