zha-device-handlers: [BUG] TS0012, TS0013 2-/3-gang switch cannot switch single gang, all gangs always turned on/off together
Bug description
I have successfully paired two Tuya compatible switches (the brand is Zemismart) that show the problem that whenever I toggle one gang in HA, all gangs get toggled. Switching single gangs manually on the switches works fine. Quirks are loaded but do not seem to fix it for these models.
Steps to reproduce
Toggle any one gang of the switch in HA dashboard and all gangs will be toggled.
Expected behavior
I’d expect to be able to toggle each gang separately.
Screenshots/Video
No response
Device signature
Device signature
2-gang
Nwk: 0x8b27
Device Type: EndDevice
LQI: 54
RSSI: Unknown
Last Seen: 2023-05-01T10:53:52
Power Source: Battery or Unknown
Quirk: zhaquirks.tuya.ts001x.TuyaDoubleNoNeutralSwitch_2
3-gang
Nwk: 0x4d27
Device Type: EndDevice
LQI: 51
RSSI: Unknown
Last Seen: 2023-05-01T10:58:18
Power Source: Battery or Unknown
Quirk: zhaquirks.tuya.ts001x.TuyaTripleNoNeutralSwitch_2
Diagnostic information
Diagnostic information
2-gang
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2023.4.6",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.10.10",
"docker": true,
"arch": "aarch64",
"timezone": "Asia/Manila",
"os_name": "Linux",
"os_version": "6.1.21-v8",
"supervisor": "2023.04.1",
"host_os": "Home Assistant OS 10.1",
"docker_version": "23.0.3",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {},
"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.35.1",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.97",
"zigpy-deconz==0.20.0",
"zigpy==0.54.1",
"zigpy-xbee==0.17.0",
"zigpy-zigate==0.10.3",
"zigpy-znp==0.10.0"
],
"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": 35623,
"manufacturer": "_TZ3000_axmpdjjk",
"model": "TS0012",
"name": "_TZ3000_axmpdjjk TS0012",
"quirk_applied": true,
"quirk_class": "zhaquirks.tuya.ts001x.TuyaDoubleNoNeutralSwitch_2",
"manufacturer_code": 4417,
"power_source": "Battery or Unknown",
"lqi": 72,
"rssi": null,
"last_seen": "2023-05-01T11:07:07",
"available": true,
"device_type": "EndDevice",
"signature": {
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": 260,
"device_type": "0x0100",
"in_clusters": [
"0x0000",
"0x0003",
"0x0004",
"0x0005",
"0x0006"
],
"out_clusters": [
"0x0019"
]
},
"2": {
"profile_id": 260,
"device_type": "0x0100",
"in_clusters": [
"0x0004",
"0x0005",
"0x0006"
],
"out_clusters": []
}
}
},
"active_coordinator": false,
"entities": [
{
"entity_id": "button.tz3000_axmpdjjk_ts0012_identify",
"name": "_TZ3000_axmpdjjk TS0012"
},
{
"entity_id": "light.tz3000_axmpdjjk_ts0012_light",
"name": "_TZ3000_axmpdjjk TS0012"
},
{
"entity_id": "light.tz3000_axmpdjjk_ts0012_light_2",
"name": "_TZ3000_axmpdjjk TS0012"
}
],
"neighbors": [],
"routes": [],
"endpoint_names": [
{
"name": "ON_OFF_LIGHT"
},
{
"name": "ON_OFF_LIGHT"
}
],
"user_given_name": "Terrace ceiling lights",
"device_reg_id": "326f480d402d631299898909e8b2ef98",
"area_id": "terrace",
"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_axmpdjjk"
},
"0x0005": {
"attribute_name": "model",
"value": "TS0012"
}
},
"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
},
"0x4001": {
"attribute_name": "on_time",
"value": 0
},
"0x4002": {
"attribute_name": "off_wait_time",
"value": 0
},
"0x8001": {
"attribute_name": "backlight_mode",
"value": 1
},
"0x8002": {
"attribute_name": "power_on_state",
"value": 2
}
},
"unsupported_attributes": {}
}
},
"out_clusters": {
"0x0019": {
"endpoint_attribute": "ota",
"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-gang
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2023.4.6",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.10.10",
"docker": true,
"arch": "aarch64",
"timezone": "Asia/Manila",
"os_name": "Linux",
"os_version": "6.1.21-v8",
"supervisor": "2023.04.1",
"host_os": "Home Assistant OS 10.1",
"docker_version": "23.0.3",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {},
"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.35.1",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.97",
"zigpy-deconz==0.20.0",
"zigpy==0.54.1",
"zigpy-xbee==0.17.0",
"zigpy-zigate==0.10.3",
"zigpy-znp==0.10.0"
],
"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": 19751,
"manufacturer": "_TZ3000_liixymgk",
"model": "TS0013",
"name": "_TZ3000_liixymgk TS0013",
"quirk_applied": true,
"quirk_class": "zhaquirks.tuya.ts001x.TuyaTripleNoNeutralSwitch_2",
"manufacturer_code": 4417,
"power_source": "Battery or Unknown",
"lqi": 54,
"rssi": null,
"last_seen": "2023-05-01T11:05:23",
"available": true,
"device_type": "EndDevice",
"signature": {
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": 260,
"device_type": "0x0100",
"in_clusters": [
"0x0000",
"0x0003",
"0x0004",
"0x0005",
"0x0006"
],
"out_clusters": [
"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": []
}
}
},
"active_coordinator": false,
"entities": [
{
"entity_id": "button.ceiling_lights_identify",
"name": "_TZ3000_liixymgk TS0013"
},
{
"entity_id": "light.ceiling_lights_light",
"name": "_TZ3000_liixymgk TS0013"
},
{
"entity_id": "light.ceiling_lights_light_2",
"name": "_TZ3000_liixymgk TS0013"
},
{
"entity_id": "light.ceiling_lights_light_3",
"name": "_TZ3000_liixymgk TS0013"
}
],
"neighbors": [],
"routes": [],
"endpoint_names": [
{
"name": "ON_OFF_LIGHT"
},
{
"name": "ON_OFF_LIGHT"
},
{
"name": "ON_OFF_LIGHT"
}
],
"user_given_name": "Ceiling Lights",
"device_reg_id": "95c67b9bdb58f85b99089889cc9ad535",
"area_id": "living_room",
"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_liixymgk"
},
"0x0005": {
"attribute_name": "model",
"value": "TS0013"
}
},
"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
},
"0x4001": {
"attribute_name": "on_time",
"value": 0
},
"0x4002": {
"attribute_name": "off_wait_time",
"value": 0
},
"0x8001": {
"attribute_name": "backlight_mode",
"value": 1
},
"0x8002": {
"attribute_name": "power_on_state",
"value": 2
}
},
"unsupported_attributes": {}
}
},
"out_clusters": {
"0x0019": {
"endpoint_attribute": "ota",
"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": {}
}
}
}
}
Logs
No response
Additional information
No response
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 23 (5 by maintainers)
For what it’s worth I got this working as follows:
I had to re-run the tuya_magic command after changing the entity names (and / or repairing, not certain). With a little fiddleing this should work.
Edit: I’m using TS0013 3-gang btw
Thank you for your help! It’s working fine now!
@etmmafl This should no longer be required when re-pairing/reconfiguring with recent Home Assistant Core versions. Please attach the “device diagnostic information” and/or device signature from the device you had issues with here. It can be downloaded on the device page.
Hi JC thanks for replay !! Yes i was looking on the wrong quirk and some one was changing it for over a half year ago https://github.com/zigpy/zha-device-handlers/pull/2049.
Back to the problem users is having: The quirk shall sending the tuya magic one time then the device is being added new to the system and then remember it until its being retested. If its loosing it you must deleting in in ZHA and waiting one minute so the system is deleting it in the DB (or restarting HA) and then adding it as new device and it shall working OK. Using ZHA-Toolkit shall also working OK then the device can being casted all the time and not only in init mode like some controllers is needing.