[Device Support Request] TS0601 TZE200_sh1btabb Tuya Garden Water Valve
See original GitHub issueI cannot get this Tuya water valve to run. There are no entities shown in the device manager.
It would be great if this device could be added to tuva quirks so that it is usable with ZHA. There already exists a solution for zigbee2mqtt (link below). Maybe that makes it easier.
{
"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": "0x0051",
"in_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0xef00"
],
"out_clusters": [
"0x000a",
"0x0019"
]
}
},
"manufacturer": "_TZE200_sh1btabb",
"model": "TS0601",
"class": "zigpy.device.Device"
}
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2022.5.5",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.9.9",
"docker": true,
"arch": "x86_64",
"timezone": "Europe/Berlin",
"os_name": "Linux",
"os_version": "5.15.45",
"supervisor": "2022.05.3",
"host_os": "Home Assistant OS 8.2",
"docker_version": "20.10.14",
"chassis": "vm",
"run_as_root": true
},
"custom_components": {},
"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": 30371,
"manufacturer": "_TZE200_sh1btabb",
"model": "TS0601",
"name": "_TZE200_sh1btabb TS0601",
"quirk_applied": false,
"quirk_class": "zigpy.device.Device",
"manufacturer_code": 4417,
"power_source": "Battery or Unknown",
"lqi": null,
"rssi": null,
"last_seen": "2022-06-14T21:08:59",
"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": "0x0051",
"in_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0xef00"
],
"out_clusters": [
"0x000a",
"0x0019"
]
}
}
},
"entities": [],
"neighbors": [],
"endpoint_names": [
{
"name": "SMART_PLUG"
}
],
"user_given_name": null,
"device_reg_id": "4a2865a9419105f14f181082bdc80c34",
"area_id": "garten"
}
}
Additional logs
[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
New device 0x7ca8 (a4:c1:38:4a:ea:11:11:2f) joined the network
[0x7ca8] Scheduling initialization
Tries remaining: 3
[0x7ca8] Requesting 'Node Descriptor'
Tries remaining: 2
[0x7ca8] Extending timeout for 0x2d request
[0xA546](TS0201): Device seen - marking the device available and resetting counter
[0xA546](TS0201): Update device availability - device available: True - new availability: True - changed: False
[0x2ADE](MS01): Device seen - marking the device available and resetting counter
[0x2ADE](MS01): Update device availability - device available: True - new availability: True - changed: False
Device 0x7ca8 (a4:c1:38:4a:ea:11:11:2f) joined the network
[0x7ca8] Scheduling initialization
[0x7ca8] Canceling old initialize call
Tries remaining: 3
[0x7ca8] Requesting 'Node Descriptor'
Tries remaining: 2
[0x7ca8] Extending timeout for 0x2f request
Device 0x7ca8 (a4:c1:38:4a:ea:11:11:2f) joined the network
[0x7ca8] Scheduling initialization
[0x7ca8] Canceling old initialize call
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 19: b"'\xa8|/\x11\x11\xeaJ8\xc1\xa4\x80"
[0x7ca8:zdo] ZDO request ZDOCmd.Device_annce: [0x7CA8, a4:c1:38:4a:ea:11:11:2f, 128]
Tries remaining: 3
[0x7ca8] Requesting 'Node Descriptor'
Tries remaining: 2
[0x7ca8] Extending timeout for 0x31 request
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 32770: b'/\x00\xa8|\x02@\x80A\x11BB\x00\x00*B\x00\x00'
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 32770: b'1\x00\xa8|\x02@\x80A\x11BB\x00\x00*B\x00\x00'
[0x7ca8] Got 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)
[0x7ca8] Discovering endpoints
Tries remaining: 3
[0x7ca8] Extending timeout for 0x33 request
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 32773: b'3\x00\xa8|\x01\x01'
[0x7ca8] Discovered endpoints: [1]
[0x7ca8] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>]
[0x7ca8:1] Discovering endpoint information
Tries remaining: 3
[0x7ca8] Extending timeout for 0x35 request
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 2: b'(\x00\x00'
[0x7ca8:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
[0x7ca8:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000])
Received frame on uninitialized device <Device model=None manuf=None nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=False> from ep 0 to ep 0, cluster 32772: b'5\x00\xa8|\x14\x01\x04\x01Q\x00\x01\x04\x04\x00\x05\x00\x00\xef\x00\x00\x02\x19\x00\n\x00'
[0x7ca8:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=81, device_version=1, input_clusters=[4, 5, 61184, 0], output_clusters=[25, 10])
Unknown cluster 0xEF00
[0x7CA8:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=55, command_id=<GeneralCommand.Read_Attributes: 0>, *is_reply=False)
[0x7CA8:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5])
[0x7ca8] Extending timeout for 0x37 request
[0x7ca8:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [180, <Bool.true: 1>]
[0x7CA8:1:0x0000] Received ZCL frame: b'\x187\x01\x04\x00\x00B\x10_TZE200_sh1btabb\x05\x00\x00B\x06TS0601'
[0x7CA8:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=55, command_id=1, *is_reply=True)
[0x7CA8:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='_TZE200_sh1btabb')), ReadAttributeRecord(attrid=0x0005, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='TS0601'))])
[0x7ca8] Read model 'TS0601' and manufacturer '_TZE200_sh1btabb' from <Endpoint id=1 in=[groups:0x0004, scenes:0x0005, None:0xEF00, basic:0x0000] out=[ota:0x0019, time:0x000A] status=<Status.ZDO_INIT: 1>>
[0x7ca8] Discovered basic device information for <Device model='TS0601' manuf='_TZE200_sh1btabb' nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=True>
Device is initialized <Device model='TS0601' manuf='_TZE200_sh1btabb' nwk=0x7CA8 ieee=a4:c1:38:4a:ea:11:11:2f is_initialized=True>
Checking quirks for _TZE200_sh1btabb TS0601 (a4:c1:38:4a:ea:11:11:2f)
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1}
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because device_type mismatch on at least one endpoint
'sensor' component -> 'RSSISensor' using ['basic']
'sensor' component -> 'LQISensor' using ['basic']
device - 0x7CA8:a4:c1:38:4a:ea:11:11:2f entering async_device_initialized - is_new_join: True
device - 0x7CA8:a4:c1:38:4a:ea:11:11:2f has joined the ZHA zigbee network
[0x7CA8](TS0601): started configuration
[0x7CA8:ZDO](TS0601): 'async_configure' stage succeeded
Error handling '_save_attribute' event with (a4:c1:38:4a:ea:11:11:2f, 1, 0, 4, '_TZE200_sh1btabb') params: FOREIGN KEY constraint failed
[0x7CA8:1:0x0000]: Configuring cluster attribute reporting
[0x7CA8:1:0x0000]: finished channel configuration
[0x7CA8:1:0x0019]: finished channel configuration
Error handling '_save_attribute' event with (a4:c1:38:4a:ea:11:11:2f, 1, 0, 5, 'TS0601') params: FOREIGN KEY constraint failed
[0x7CA8:1:0x0000]: 'async_configure' stage succeeded
[0x7CA8:1:0x0019]: 'async_configure' stage succeeded
[0x7CA8](TS0601): completed configuration
[0x7CA8](TS0601): stored in registry: ZhaDeviceEntry(name='_TZE200_sh1btabb TS0601', ieee='a4:c1:38:4a:ea:11:11:2f', last_seen=1655237424.153496)
[0x7CA8](TS0601): started initialization
[0x7CA8:ZDO](TS0601): 'async_initialize' stage succeeded
[0x7CA8:1:0x0000]: initializing channel: from_cache: False
[0x7CA8:1:0x0000]: finished channel initialization
[0x7CA8:1:0x0019]: initializing channel: from_cache: False
[0x7CA8:1:0x0019]: finished channel initialization
[0x7CA8:1:0x0000]: 'async_initialize' stage succeeded
[0x7CA8:1:0x0019]: 'async_initialize' stage succeeded
[0x7CA8](TS0601): power source: Battery or Unknown
[0x7CA8](TS0601): completed initialization
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x95\x11\x00o@'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=149, command_id=17, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 17 b'\x00o@'
[0x7CA8:1:0xef00] Received command 0x11 (TSN 149): b'\x00o@'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x11: b'\x00o@'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x95\x11\x00o@'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=149, command_id=17, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 17 b'\x00o@'
[0x7CA8:1:0xef00] Received command 0x11 (TSN 149): b'\x00o@'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x11: b'\x00o@'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x95\x11\x00o@'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=149, command_id=17, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 17 b'\x00o@'
[0x7CA8:1:0xef00] Received command 0x11 (TSN 149): b'\x00o@'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x11: b'\x00o@'
[0x7C3F](TH01): Device seen - marking the device available and resetting counter
[0x7C3F](TH01): Update device availability - device available: True - new availability: True - changed: False
[0x7CA8:1:0x0000] Received ZCL frame: b'\x08\x96\n\x01\x00 F\xe2\xff 6\xe4\xff \x00'
[0x7CA8:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=150, command_id=10, *is_reply=True)
[0x7CA8:1:0x0000] Decoded ZCL frame: Basic:Report_Attributes(attribute_reports=[Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=70)), Attribute(attrid=0xFFE2, value=TypeValue(type=uint8_t, value=54)), Attribute(attrid=0xFFE4, value=TypeValue(type=uint8_t, value=0))])
[0x7CA8:1:0x0000] Received command 0x0A (TSN 150): Report_Attributes(attribute_reports=[Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=70)), Attribute(attrid=0xFFE2, value=TypeValue(type=uint8_t, value=54)), Attribute(attrid=0xFFE4, value=TypeValue(type=uint8_t, value=0))])
[0x7CA8:1:0x0000] Attribute report received: app_version=70, 0xFFE2=54, 0xFFE4=0
[0x7CA8:1:0x0000] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=150, command_id=<GeneralCommand.Default_Response: 11>, *is_reply=True)
[0x7CA8:1:0x0000] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
[0x7CA8:1:0x000a] Received ZCL frame: b'\x00\x97\x00\x07\x00'
[0x7CA8:1:0x000a] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=151, command_id=0, *is_reply=False)
[0x7CA8:1:0x000a] Decoded ZCL frame: Time:Read_Attributes(attribute_ids=[7])
[0x7CA8:1:0x000a] Received command 0x00 (TSN 151): Read_Attributes(attribute_ids=[7])
[0x7CA8:1:0x000a] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=151, command_id=<GeneralCommand.Read_Attributes_rsp: 1>, *is_reply=True)
[0x7CA8:1:0x000a] Sending reply: Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0007, status=<Status.SUCCESS: 0>, value=TypeValue(type=LocalTime, value=708559831))])
[0x7CA8:1:0x0000] Received ZCL frame: b'\x08\x98\n\xdf\xffB<\xc7\xc2;*i\xcd\xc2;*i\xe0\xc2;*i\xea\xc2;*i\xf4\xc2;*i\xfe\xc2;*i\x08\xc3;*i\xa9\xc3;*\x13\xa9\xc3;*e\xaa\xc3;*\x12\xc8\xc3;*er\xc2;*i'
[0x7CA8:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=152, command_id=10, *is_reply=True)
[0x7CA8:1:0x0000] Decoded ZCL frame: Basic:Report_Attributes(attribute_reports=[Attribute(attrid=0xFFDF, value=TypeValue(type=CharacterString, value='��;*i��;*i��;*i��;*i��;*i��;*i\x08�;*i��;*\x13��;*e��;*\x12��;*er�;*i'))])
[0x7CA8:1:0x0000] Received command 0x0A (TSN 152): Report_Attributes(attribute_reports=[Attribute(attrid=0xFFDF, value=TypeValue(type=CharacterString, value='��;*i��;*i��;*i��;*i��;*i��;*i\x08�;*i��;*\x13��;*e��;*\x12��;*er�;*i'))])
[0x7CA8:1:0x0000] Attribute report received: 0xFFDF='��;*i��;*i��;*i��;*i��;*i��;*i\x08�;*i��;*\x13��;*e��;*\x12��;*er�;*i'
[0x7CA8:1:0x0000] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=152, command_id=<GeneralCommand.Default_Response: 11>, *is_reply=True)
[0x7CA8:1:0x0000] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
[0x7CA8:1:0x0000] Received ZCL frame: b'\x08\x99\n\xdf\xffB({\xc2;*i\x84\xc2;*i\x89\xc2;*\x13\x89\xc2;*e\x8a\xc2;*\x12\xae\xc2;*e\xc5\xc2;*i\xc6\xc2;*i'
[0x7CA8:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=153, command_id=10, *is_reply=True)
[0x7CA8:1:0x0000] Decoded ZCL frame: Basic:Report_Attributes(attribute_reports=[Attribute(attrid=0xFFDF, value=TypeValue(type=CharacterString, value='{�;*i��;*i��;*\x13��;*e��;*\x12��;*e��;*i��;*i'))])
[0x7CA8:1:0x0000] Received command 0x0A (TSN 153): Report_Attributes(attribute_reports=[Attribute(attrid=0xFFDF, value=TypeValue(type=CharacterString, value='{�;*i��;*i��;*\x13��;*e��;*\x12��;*e��;*i��;*i'))])
[0x7CA8:1:0x0000] Attribute report received: 0xFFDF='{�;*i��;*i��;*\x13��;*e��;*\x12��;*e��;*i��;*i'
[0x7CA8:1:0x0000] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=153, command_id=<GeneralCommand.Default_Response: 11>, *is_reply=True)
[0x7CA8:1:0x0000] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9a\x02\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=154, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 154): b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x93j\x02\x00\x04\x00\x00\x00\x00'
[0xBFE0](TS0201): Device seen - marking the device available and resetting counter
[0xBFE0](TS0201): Update device availability - device available: True - new availability: True - changed: False
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9b\x02\x00\x94g\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=155, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x94g\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 155): b'\x00\x94g\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x94g\x02\x00\x04\x00\x00\x00\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9c\x02\x00\x95\x02\x01\x00\x01\x00'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=156, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x95\x02\x01\x00\x01\x00'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 156): b'\x00\x95\x02\x01\x00\x01\x00'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x95\x02\x01\x00\x01\x00'
[0x7CA8:1:0xef00] Received ZCL frame: b'\t\x9d\x02\x00\x96f\x03\x00\x0810:21:46'
[0x7CA8:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=157, command_id=2, *is_reply=True)
[0x7CA8:1:0xef00] Unknown cluster command 2 b'\x00\x96f\x03\x00\x0810:21:46'
[0x7CA8:1:0xef00] Received command 0x02 (TSN 157): b'\x00\x96f\x03\x00\x0810:21:46'
[0x7CA8:1:0xef00] No explicit handler for cluster command 0x02: b'\x00\x96f\x03\x00\x0810:21:46'
Additional context
- This is the Garden water valve in question: (https://www.aliexpress.com/item/1005004222098040.html)
- There already exists a solution for zigbee2mqtt: https://github.com/MoonshineSG/zigbee2mqtt-custom/blob/13b0b39084ff6fa37a88c667a4303c566d49b234/QT-05M.js
Issue Analytics
- State:
- Created a year ago
- Comments:87 (15 by maintainers)
Top Results From Across the Web
ZHA Quirk for Tuya Garden Water Valve TS0601 ...
I bought this Garden water valve and I cannot get it to run: Zigbee Wifi Garden Watering Timer Smart Sprinkler Drip Irrigation System ......
Read more >Request for help for Tuya Water valve - DTH and EDGE driver
Hi,. I am looking for some help developing a DTH for a Tuya Water valve (which screws on to a tap for irrigation...
Read more >Water Valve Controller - Tuya Expo
Water Timer Sprinkler Timer for Garden Hose, Bluetooth and Remote WiFi Controller, Timing Irrigation App Connection, IP6. Price Negotiable.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

I looked at the Zigbee2MQTT library and I was able to make the battery and the on/off work. The problem is that the ZHA quirk was set up on the wrong channel/Datapoint. By changing the datapoint to 2 for the switch and 108 for the Battery level; it now works as intended. I will try to see if I can make the other entities work so it has parity with Z2m
To make it fully work. I had to unpair and pair again my device and the it worked great.
I should be fine, I will let you know. I’m currently adding things to HA:
I hope to be able to open PR next week