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
772 stars 702 forks source link

[Device Support Request] Avatto TRV06 TS0601 _TZE284_c6wv4xyo #3516

Open LSz79 opened 1 week ago

LSz79 commented 1 week ago

Problem description

I bought a TRV from Aliexpress: it comes with a new, yet not supported manufacturer ID. It also implements input cluster 0xED00, so it's signature doesn't match with any available TRV quirk.

Solution description

I tried to implement a quirk myself: it has been recognized, the TRV is paring, but not displaying any controls/entities. I suppose the available implementation of 0xED00 cluster (ZosungIRTransmit) is not compatible with this TRV.

Screenshots/Video

Screenshots/Video [Paste/upload your media here] ![image](https://github.com/user-attachments/assets/128d9520-6f9c-4d0d-8936-5470fefa6c4e) ![image](https://github.com/user-attachments/assets/b4a8a7c2-90f2-4fa0-99de-0615bfe8ae4c)

Device signature

Device signature ```json { "node_descriptor": { "logical_type": 2, "complex_descriptor_available": 0, "user_descriptor_available": 0, "reserved": 0, "aps_flags": 0, "frequency_band": 8, "mac_capability_flags": 128, "manufacturer_code": 4417, "maximum_buffer_size": 66, "maximum_incoming_transfer_size": 66, "server_mask": 10752, "maximum_outgoing_transfer_size": 66, "descriptor_capability_field": 0 }, "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0051", "input_clusters": [ "0x0000", "0x0004", "0x0005", "0xed00", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZE284_c6wv4xyo", "model": "TS0601", "class": "zigpy.device.Device" } ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.11.1", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.4", "docker": true, "arch": "x86_64", "timezone": "Europe/Vienna", "os_name": "Linux", "os_version": "6.6.54-haos", "supervisor": "2024.11.2", "host_os": "Home Assistant OS 13.2", "docker_version": "27.2.0", "chassis": "vm", "run_as_root": true }, "custom_components": { "tapo_control": { "documentation": "https://github.com/JurajNyiri/HomeAssistant-Tapo-Control", "version": "5.8.0", "requirements": [ "pytapo==3.3.32" ] }, "epex_spot": { "documentation": "https://github.com/mampfes/ha_epex_spot", "version": "2.3.8", "requirements": [ "beautifulsoup4" ] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "2.0.1", "requirements": [ "aiogithubapi>=22.10.1" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "hassio", "onboarding", "usb" ], "codeowners": [ "dmulcahey", "adminiuga", "puddly", "TheJulianJES" ], "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", "zha", "universal_silabs_flasher" ], "requirements": [ "universal-silabs-flasher==0.0.24", "zha==0.0.37" ], "usb": [ { "vid": "10C4", "pid": "EA60", "description": "*2652*", "known_devices": [ "slae.sh cc2652rb stick" ] }, { "vid": "10C4", "pid": "EA60", "description": "*slzb-07*", "known_devices": [ "smlight slzb-07" ] }, { "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": "0403", "pid": "6015", "description": "*conbee*", "known_devices": [ "Conbee III" ] }, { "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": "_uzg-01._tcp.local.", "name": "uzg-01*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" }, { "type": "_xzg._tcp.local.", "name": "xzg*" }, { "type": "_czc._tcp.local.", "name": "czc*" } ], "is_built_in": true, "overwrites_built_in": false }, "setup_times": { "null": { "setup": 6.647501140832901e-05 }, "19a9edd0f50d6fed634694507886e203": { "wait_import_platforms": -0.03861110800062306, "wait_base_component": -0.0010108920105267316, "config_entry_setup": 15.540893336001318 } }, "data": { "ieee": "**REDACTED**", "nwk": 21479, "manufacturer": "_TZE284_c6wv4xyo", "model": "TS0601", "name": "_TZE284_c6wv4xyo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "quirk_id": null, "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 232, "rssi": -42, "last_seen": "2024-11-16T16:23:34", "available": true, "device_type": "EndDevice", "signature": { "node_descriptor": { "logical_type": 2, "complex_descriptor_available": 0, "user_descriptor_available": 0, "reserved": 0, "aps_flags": 0, "frequency_band": 8, "mac_capability_flags": 128, "manufacturer_code": 4417, "maximum_buffer_size": 66, "maximum_incoming_transfer_size": 66, "server_mask": 10752, "maximum_outgoing_transfer_size": 66, "descriptor_capability_field": 0 }, "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0051", "input_clusters": [ "0x0000", "0x0004", "0x0005", "0xed00", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZE284_c6wv4xyo", "model": "TS0601" }, "active_coordinator": false, "entities": [ { "entity_id": "update.tze284_c6wv4xyo_ts0601_firmware", "name": "_TZE284_c6wv4xyo TS0601" } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "SMART_PLUG" } ], "user_given_name": null, "device_reg_id": "a25c973ca1c275fd491158ee6270252b", "area_id": "bathroom", "cluster_details": { "1": { "device_type": { "name": "SMART_PLUG", "id": 81 }, "profile_id": 260, "in_clusters": { "0x0004": { "endpoint_attribute": "groups", "attributes": { "0xfffd": { "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0000": { "attribute": "ZCLAttributeDef(id=0x0000, name='name_support', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0xfffe": { "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null } }, "unsupported_attributes": [] }, "0x0005": { "endpoint_attribute": "scenes", "attributes": { "0xfffd": { "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0000": { "attribute": "ZCLAttributeDef(id=0x0000, name='count', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0002": { "attribute": "ZCLAttributeDef(id=0x0002, name='current_group', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0001": { "attribute": "ZCLAttributeDef(id=0x0001, name='current_scene', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0005": { "attribute": "ZCLAttributeDef(id=0x0005, name='last_configured_by', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0004": { "attribute": "ZCLAttributeDef(id=0x0004, name='name_support', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0xfffe": { "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0003": { "attribute": "ZCLAttributeDef(id=0x0003, name='scene_valid', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null } }, "unsupported_attributes": [] }, "0xef00": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": [] }, "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0013": { "attribute": "ZCLAttributeDef(id=0x0013, name='alarm_mask', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0001": { "attribute": "ZCLAttributeDef(id=0x0001, name='app_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": 77 }, "0xfffd": { "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0006": { "attribute": "ZCLAttributeDef(id=0x0006, name='date_code', type=.LimitedCharString'>, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0012": { "attribute": "ZCLAttributeDef(id=0x0012, name='device_enabled', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0014": { "attribute": "ZCLAttributeDef(id=0x0014, name='disable_local_config', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0008": { "attribute": "ZCLAttributeDef(id=0x0008, name='generic_device_class', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0009": { "attribute": "ZCLAttributeDef(id=0x0009, name='generic_device_type', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0003": { "attribute": "ZCLAttributeDef(id=0x0003, name='hw_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0010": { "attribute": "ZCLAttributeDef(id=0x0010, name='location_desc', type=.LimitedCharString'>, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0004": { "attribute": "ZCLAttributeDef(id=0x0004, name='manufacturer', type=.LimitedCharString'>, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": "_TZE284_c6wv4xyo" }, "0x000c": { "attribute": "ZCLAttributeDef(id=0x000C, name='manufacturer_version_details', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0005": { "attribute": "ZCLAttributeDef(id=0x0005, name='model', type=.LimitedCharString'>, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": "TS0601" }, "0x0011": { "attribute": "ZCLAttributeDef(id=0x0011, name='physical_env', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0007": { "attribute": "ZCLAttributeDef(id=0x0007, name='power_source', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x000a": { "attribute": "ZCLAttributeDef(id=0x000A, name='product_code', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x000e": { "attribute": "ZCLAttributeDef(id=0x000E, name='product_label', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x000b": { "attribute": "ZCLAttributeDef(id=0x000B, name='product_url', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0xfffe": { "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x000d": { "attribute": "ZCLAttributeDef(id=0x000D, name='serial_number', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0002": { "attribute": "ZCLAttributeDef(id=0x0002, name='stack_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x4000": { "attribute": "ZCLAttributeDef(id=0x4000, name='sw_build_id', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0000": { "attribute": "ZCLAttributeDef(id=0x0000, name='zcl_version', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null } }, "unsupported_attributes": [] }, "0xed00": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": [] } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": { "0xfffd": { "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0002": { "attribute": "ZCLAttributeDef(id=0x0002, name='current_file_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": 77 }, "0x0003": { "attribute": "ZCLAttributeDef(id=0x0003, name='current_zigbee_stack_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0004": { "attribute": "ZCLAttributeDef(id=0x0004, name='downloaded_file_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0005": { "attribute": "ZCLAttributeDef(id=0x0005, name='downloaded_zigbee_stack_version', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0001": { "attribute": "ZCLAttributeDef(id=0x0001, name='file_offset', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x000a": { "attribute": "ZCLAttributeDef(id=0x000A, name='image_stamp', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0008": { "attribute": "ZCLAttributeDef(id=0x0008, name='image_type_id', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0006": { "attribute": "ZCLAttributeDef(id=0x0006, name='image_upgrade_status', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0007": { "attribute": "ZCLAttributeDef(id=0x0007, name='manufacturer_id', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0009": { "attribute": "ZCLAttributeDef(id=0x0009, name='minimum_block_req_delay', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0xfffe": { "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x000b": { "attribute": "ZCLAttributeDef(id=0x000B, name='upgrade_activation_policy', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0000": { "attribute": "ZCLAttributeDef(id=0x0000, name='upgrade_server_id', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x000c": { "attribute": "ZCLAttributeDef(id=0x000C, name='upgrade_timeout_policy', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null } }, "unsupported_attributes": [] }, "0x000a": { "endpoint_attribute": "time", "attributes": { "0xfffd": { "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0004": { "attribute": "ZCLAttributeDef(id=0x0004, name='dst_end', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0005": { "attribute": "ZCLAttributeDef(id=0x0005, name='dst_shift', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0003": { "attribute": "ZCLAttributeDef(id=0x0003, name='dst_start', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0008": { "attribute": "ZCLAttributeDef(id=0x0008, name='last_set_time', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0007": { "attribute": "ZCLAttributeDef(id=0x0007, name='local_time', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0xfffe": { "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0006": { "attribute": "ZCLAttributeDef(id=0x0006, name='standard_time', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0000": { "attribute": "ZCLAttributeDef(id=0x0000, name='time', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0001": { "attribute": "ZCLAttributeDef(id=0x0001, name='time_status', type=, zcl_type=, access=, mandatory=True, is_manufacturer_specific=False)", "value": null }, "0x0002": { "attribute": "ZCLAttributeDef(id=0x0002, name='time_zone', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null }, "0x0009": { "attribute": "ZCLAttributeDef(id=0x0009, name='valid_until_time', type=, zcl_type=, access=, mandatory=False, is_manufacturer_specific=False)", "value": null } }, "unsupported_attributes": [] } } } } } } ```

Logs

Logs ```python (MainThread) [bellows.ezsp.protocol] Received command messageSentHandler: {'type': , 'indexOrDestination': 21479, 'apsFrame': EmberApsFrame(profileId=260, clusterId=0, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=90), 'messageTag': 51, 'status': , 'messageContents': b''} 2024-11-16 16:20:19.211 DEBUG (MainThread) [bellows.zigbee.application] Received messageSentHandler frame with [, 21479, EmberApsFrame(profileId=260, clusterId=0, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=90), 51, , b''] 2024-11-16 16:20:19.222 DEBUG (bellows.thread_0) [bellows.ash] Received data 51e5b1a97d312a15b658944a24ab1593499cc8eb640a9d988cdede6688f87d5e3fe5fb928a35cacdffef8ab15ffb3017d195193ea5ea378415cb7c102380e2b81c7e 2024-11-16 16:20:19.222 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=5, re_tx=0, ack_num=1, ezsp_frame=b'\xa7\x90\x01E\x00\x00\x04\x01\x00\x00\x01\x01@\x01\x00\x00\x86\xcc\xcf\xe7S\xff\x07#\x18\x05\x01\x04\x00\x00B\x10_TZE284_c6wv4xyo\x05\x00\x00B\x06TS0601\x02') 2024-11-16 16:20:19.222 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=6) + FLAG 2024-11-16 16:20:19.222 DEBUG (bellows.thread_0) [bellows.ash] Sending data 8610be7e 2024-11-16 16:20:19.226 DEBUG (MainThread) [bellows.ezsp.protocol] Received command incomingMessageHandler: {'type': , 'apsFrame': EmberApsFrame(profileId=260, clusterId=0, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=134), 'lastHopLqi': 204, 'lastHopRssi': -49, 'sender': 0x53E7, 'bindingIndex': 255, 'addressIndex': 7, 'messageContents': b'\x18\x05\x01\x04\x00\x00B\x10_TZE284_c6wv4xyo\x05\x00\x00B\x06TS0601'} 2024-11-16 16:20:19.226 DEBUG (MainThread) [bellows.ezsp.protocol] Frame contains trailing data: b'\x02' 2024-11-16 16:20:19.226 DEBUG (MainThread) [bellows.zigbee.application] Received incomingMessageHandler frame with [, EmberApsFrame(profileId=260, clusterId=0, sourceEndpoint=1, destinationEndpoint=1, options=, groupId=0, sequence=134), 204, -49, 0x53E7, 255, 7, b'\x18\x05\x01\x04\x00\x00B\x10_TZE284_c6wv4xyo\x05\x00\x00B\x06TS0601'] 2024-11-16 16:20:19.227 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 11, 16, 15, 20, 19, 227181, tzinfo=datetime.timezone.utc), priority=0, src=AddrModeAddress(addr_mode=, address=0x53E7), src_ep=1, dst=AddrModeAddress(addr_mode=, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=134, profile_id=260, cluster_id=0, data=Serialized[b'\x18\x05\x01\x04\x00\x00B\x10_TZE284_c6wv4xyo\x05\x00\x00B\x06TS0601'], tx_options=, radius=0, non_member_radius=0, lqi=204, rssi=-49) 2024-11-16 16:20:19.228 DEBUG (MainThread) [zigpy.zcl] [0x53E7:1:0x0000] Received ZCL frame: b'\x18\x05\x01\x04\x00\x00B\x10_TZE284_c6wv4xyo\x05\x00\x00B\x06TS0601' 2024-11-16 16:20:19.233 DEBUG (bellows.thread_0) [bellows.ash] Received data 61e5b1a96b2a7d334fa6944a36aa5592499c4e272912ce6705857e 2024-11-16 16:20:19.233 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=6, re_tx=0, ack_num=1, ezsp_frame=b'\xa7\x90\x01?\x00\x06\xfd\xff\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x82\xff\x00\x00') 2024-11-16 16:20:19.233 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=7) + FLAG 2024-11-16 16:20:19.233 DEBUG (bellows.thread_0) [bellows.ash] Sending data 87009f7e 2024-11-16 16:20:19.229 DEBUG (MainThread) [zigpy.zcl] [0x53E7:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl<0x18>(frame_type=, is_manufacturer_specific=0, direction=, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=5, command_id=1, *direction=) 2024-11-16 16:20:19.240 DEBUG (MainThread) [zigpy.zcl] [0x53E7:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=4, status=, value=TypeValue(type=CharacterString, value='_TZE284_c6wv4xyo')), ReadAttributeRecord(attrid=5, status=, value=TypeValue(type=CharacterString, value='TS0601'))]) 2024-11-16 16:20:19.242 DEBUG (MainThread) [bellows.ezsp.protocol] Received command messageSentHandler: {'type': , 'indexOrDestination': 65533, 'apsFrame': EmberApsFrame(profileId=0, clusterId=19, sourceEndpoint=0, destinationEndpoint=0, options=, groupId=0, sequence=130), 'messageTag': 255, 'status': , 'messageContents': b''} 2024-11-16 16:20:19.242 DEBUG (MainThread) [bellows.zigbee.application] Received messageSentHandler frame with [, 65533, EmberApsFrame(profileId=0, clusterId=19, sourceEndpoint=0, destinationEndpoint=0, options=, groupId=0, sequence=130), 255, , b''] 2024-11-16 16:20:19.242 DEBUG (MainThread) [bellows.zigbee.application] Unexpected message send notification tag: (65533, 255) 2024-11-16 16:20:19.243 INFO (MainThread) [zigpy.device] [0x53e7] Read model 'TS0601' and manufacturer '_TZE284_c6wv4xyo' from > 2024-11-16 16:20:19.243 INFO (MainThread) [zigpy.device] [0x53e7] Discovered basic device information for  2024-11-16 16:20:19.243 DEBUG (MainThread) [zigpy.application] Device is initialized  2024-11-16 16:20:19.244 DEBUG (MainThread) [zha] Emitting event raw_device_initialized with data RawDeviceInitializedEvent(device_info=RawDeviceInitializedDeviceInfo(ieee=a4:c1:38:b4:b0:f2:09:3b, nwk=0x53E7, pairing_status=, model='TS0601', manufacturer='_TZE284_c6wv4xyo', signature={'manufacturer': '_TZE284_c6wv4xyo', 'model': 'TS0601', 'node_desc': {'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': }, 'endpoints': {1: {'profile_id': 260, 'device_type': , 'input_clusters': [4, 5, 61184, 0, 60672], 'output_clusters': [25, 10]}}}), event_type='zha_gateway_message', event='raw_device_initialized') (1 listeners) 2024-11-16 16:20:19.244 DEBUG (MainThread) [zha] (ZHAGatewayProxy) handling event protocol for event: RawDeviceInitializedEvent(device_info=RawDeviceInitializedDeviceInfo(ieee=a4:c1:38:b4:b0:f2:09:3b, nwk=0x53E7, pairing_status=, model='TS0601', manufacturer='_TZE284_c6wv4xyo', signature={'manufacturer': '_TZE284_c6wv4xyo', 'model': 'TS0601', 'node_desc': {'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': }, 'endpoints': {1: {'profile_id': 260, 'device_type': , 'input_clusters': [4, 5, 61184, 0, 60672], 'output_clusters': [25, 10]}}}), event_type='zha_gateway_message', event='raw_device_initialized') 2024-11-16 16:20:19.244 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZE284_c6wv4xyo TS0601 (a4:c1:38:b4:b0:f2:09:3b) 2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: {232, 230} {1} 2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: {232, 230} {1} 2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.245 DEBUG (MainThread) [zigpy.quirks] Fail because device_type mismatch on at least one endpoint 2024-11-16 16:20:19.246 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.246 DEBUG (MainThread) [zigpy.quirks] Fail because device_type mismatch on at least one endpoint 2024-11-16 16:20:19.246 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.246 DEBUG (MainThread) [zigpy.quirks] Fail because device_type mismatch on at least one endpoint 2024-11-16 16:20:19.246 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.247 DEBUG (MainThread) [zigpy.quirks] Fail because device_type mismatch on at least one endpoint 2024-11-16 16:20:19.247 DEBUG (MainThread) [zigpy.quirks.registry] Considering  2024-11-16 16:20:19.247 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: {11, 13} {1} 2024-11-16 16:20:19.247 DEBUG (MainThread) [zha.zigbee.endpoint] Creating cluster handler for cluster id: 4 class:  2024-11-16 16:20:19.249 DEBUG (MainThread) [zha.zigbee.endpoint] Creating cluster handler for cluster id: 5 class:  2024-11-16 16:20:19.250 DEBUG (MainThread) [zha.zigbee.endpoint] Creating cluster handler for cluster id: 61184 class:  2024-11-16 16:20:19.251 DEBUG (MainThread) [zha.zigbee.endpoint] Creating cluster handler for cluster id: 0 class:  2024-11-16 16:20:19.252 DEBUG (MainThread) [zha.zigbee.endpoint] Creating cluster handler for cluster id: 60672 class:  2024-11-16 16:20:19.252 DEBUG (MainThread) [zha.application.discovery] Discovering entities for endpoint: a4:c1:38:b4:b0:f2:09:3b-1 2024-11-16 16:20:19.254 DEBUG (MainThread) [zha.application.discovery] 'sensor' platform -> 'RSSISensor' using ['basic'] 2024-11-16 16:20:19.254 DEBUG (MainThread) [zha.application.discovery] 'sensor' platform -> 'LQISensor' using ['basic'] 2024-11-16 16:20:19.255 DEBUG (MainThread) [zha.application.discovery] 'update' platform -> 'FirmwareUpdateEntity' using ['ota'] 2024-11-16 16:20:19.256 DEBUG (MainThread) [zha.application.discovery] Discovering entities for device: a4:c1:38:b4:b0:f2:09:3b-_TZE284_c6wv4xyo TS0601 2024-11-16 16:20:19.259 DEBUG (MainThread) [zha.application.discovery] Attempting to discover quirks v2 entities for device: a4:c1:38:b4:b0:f2:09:3b-_TZE284_c6wv4xyo TS0601 2024-11-16 16:20:19.260 DEBUG (MainThread) [zha.application.discovery] Device: a4:c1:38:b4:b0:f2:09:3b-_TZE284_c6wv4xyo TS0601 is not a quirks v2 device - skipping discover_quirks_v2_entities 2024-11-16 16:20:19.260 DEBUG (MainThread) [zha.application.gateway] device - 0x53E7:a4:c1:38:b4:b0:f2:09:3b entering async_device_initialized - is_new_join: True 2024-11-16 16:20:19.260 DEBUG (MainThread) [zha.application.gateway] device - 0x53E7:a4:c1:38:b4:b0:f2:09:3b has joined the ZHA zigbee network 2024-11-16 16:20:19.260 DEBUG (MainThread) [zha.zigbee.device] [0x53E7](TS0601): Update device availability - device available: True - new availability: True - changed: False 2024-11-16 16:20:19.263 DEBUG (MainThread) [zha.zigbee.device] [0x53E7](TS0601): started configuration 2024-11-16 16:20:19.263 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:ZDO](TS0601): 'async_configure' stage succeeded 2024-11-16 16:20:19.264 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:1:0x0000]: Configuring cluster attribute reporting 2024-11-16 16:20:19.264 DEBUG (MainThread) [zha] Emitting event zha_channel_configure_reporting with data ClusterConfigureReportingEvent(cluster_name='Basic', cluster_id=0, attributes={}, cluster_handler_unique_id='a4:c1:38:b4:b0:f2:09:3b:1:0x0000', event_type='zha_channel_message', event='zha_channel_configure_reporting') (0 listeners) 2024-11-16 16:20:19.264 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:1:0x0000]: finished cluster handler configuration 2024-11-16 16:20:19.264 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:1:0xef00]: Performing cluster binding 2024-11-16 16:20:19.265 DEBUG (MainThread) [zigpy.device] [0x53e7] Extending timeout for 0x06 request 2024-11-16 16:20:19.265 DEBUG (MainThread) [bellows.zigbee.application] Sending packet ZigbeePacket(timestamp=datetime.datetime(2024, 11, 16, 15, 20, 19, 265930, tzinfo=datetime.timezone.utc), priority=, src=AddrModeAddress(addr_mode=, address=0x0000), src_ep=0, dst=AddrModeAddress(addr_mode=, address=0x53E7), dst_ep=0, source_route=None, extended_timeout=True, tsn=6, profile_id=0, cluster_id=, data=Serialized[b'\x06;\t\xf2\xb0\xb48\xc1\xa4\x01\x00\xef\x03@\xeb\xc9$\x00K\x12\x00\x01'], tx_options=, radius=0, non_member_radius=0, lqi=None, rssi=None) 2024-11-16 16:20:19.266 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command getExtendedTimeout: () {'remoteEui64': a4:c1:38:b4:b0:f2:09:3b} 2024-11-16 16:20:19.267 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:1:0x0019]: finished cluster handler configuration 2024-11-16 16:20:19.267 DEBUG (MainThread) [zha.zigbee.cluster_handlers] [0x53E7:1:0x0019]: finished cluster handler configuration 2024-11-16 16:20:19.268 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=1, re_tx=False, ack_num=7, ezsp_frame=b'\xa8\x00\x01\x7f\x00;\t\xf2\xb0\xb48\xc1\xa4') + FLAG 2024-11-16 16:20:19.268 DEBUG (bellows.thread_0) [bellows.ash] Sending data 17ea21a92b2a2ebbab24fe1d6bf109e17e 2024-11-16 16:20:19.275 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:b4:b0:f2:09:3b, 1, , 0, 4, '_TZE284_c6wv4xyo', datetime.datetime(2024, 11, 16, 15, 20, 19, 243077, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed 2024-11-16 16:20:19.279 DEBUG (bellows.thread_0) [bellows.ash] Received data 72eaa1a92b2a144ced7e 2024-11-16 16:20:19.280 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=7, re_tx=0, ack_num=2, ezsp_frame=b'\xa8\x80\x01\x7f\x00\x01') 2024-11-16 16:20:19.280 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=0) + FLAG 2024-11-16 16:20:19.280 DEBUG (bellows.thread_0) [bellows.ash] Sending data 8070787e 2024-11-16 16:20:19.281 DEBUG (MainThread) [bellows.ezsp.protocol] Received command getExtendedTimeout: {'extendedTimeout': } 2024-11-16 16:20:19.282 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command sendUnicast: () {'type': , 'indexOrDestination': 0x53E7, 'apsFrame': EmberApsFrame(profileId=0, clusterId=33, sourceEndpoint=0, destinationEndpoint=0, options=, groupId=0, sequence=6), 'messageTag': 52, 'messageContents': b'\x06;\t\xf2\xb0\xb48\xc1\xa4\x01\x00\xef\x03@\xeb\xc9$\x00K\x12\x00\x01'} 2024-11-16 16:20:19.282 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:b4:b0:f2:09:3b, 1, , 0, 5, 'TS0601', datetime.datetime(2024, 11, 16, 15, 20, 19, 243127, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed 2024-11-16 16:20:19.287 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=2, re_tx=False, ack_num=0, ezsp_frame=b'\xa9\x00\x014\x00\x00\xe7S\x00\x00!\x00\x00\x00@\x01\x00\x00\x064\x16\x06;\t\xf2\xb0\xb48\xc1\xa4\x01\x00\xef\x03@\xeb\xc9$\x00K\x12\x00\x01') + FLAG 2024-11-16 16:20:19.287 DEBUG (bellows.thread_0) [bellows.ash] Sending data 20eb21a9602a15550a944a04aa5592099d4e27add9d861b0f434d33dc4bf9ba6eb22dd2f6436e3db9ec0698d66f17e 2024-11-16 16:20:19.292 DEBUG (bellows.thread_0) [bellows.ash] Received data 02eab1a97d312a15b658914e24ab5593499c30e767df199874f5de5583fc7d5e1ec9f7fcbc7e 2024-11-16 16:20:19.293 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=0, re_tx=0, ack_num=2, ezsp_frame=b'\xa8\x90\x01E\x00\x00\x04\x01\x05\x04\x01\x01\x00\x01\x00\x00~\xc0\xcc2\xd7\xff\xff\x08\x186\n\x00\x00!n\x1c') 2024-11-16 16:20:19.294 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=1) + FLAG ```

Custom quirk

Custom quirk ```python [Paste your custom quirk here] ```

Additional information

No response

matteohoeren commented 1 week ago

Got a similar one:

_TZE284_o3x45p96

Exactly the same issue, i used a costum quirk, however it doesn't work.

Update: I have exactly the same input/output clusters. I'll try to make it work somehow :)

RawDeviceInitializedEvent(device_info=RawDeviceInitializedDeviceInfo(ieee=a4:c1:38:98:49:40:9e:19, nwk=0xB7AD, pairing_status=<DevicePairingStatus.INTERVIEW_COMPLETE: 2>, model='TS0601', manufacturer='_TZE284_o3x45p96', signature={'manufacturer': '_TZE284_o3x45p96', 'model': 'TS0601', 'node_desc': {'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>}, 'endpoints': {1: {'profile_id': 260, 'device_type': <DeviceType.SMART_PLUG: 81>, 'input_clusters': [4, 5, 61184, 0, 60672], 'output_clusters': [25, 10]}}}), event_type='zha_gateway_message', event='raw_device_initialized')

Flobuu commented 4 days ago

I got the same:

TS0601; _TZE284_o3x45p96

Did you get it to work ?

matteohoeren commented 4 days ago

@Flobuu Nooo unfortunately not :( Also tried Zigbee2MQTT, seems the also don't have the correct device handler. I might try to code a custom quirk for it, but that might not be done until end oft this year. If i do, i'll make sure to update you guys. Hope anyone finds a solution before me tho 😆

Flobuu commented 4 days ago

I'm quite new here. Tried out some quirks and added the Informations to the quirks, but it didn't work out. Hope the same! I think the Thermostat version is quite new. Do we need to post more Information to the devices here ? That someone else can help us ?

matteohoeren commented 4 days ago

Same for me, i played around with different quirks, nothing worked (i guess the input / output cluster just don't match with any existing models). I'm quite new as well, so i don't know. I think we'll have to wait until someone buys the same model and actually has the skills to write a custom quirk @Flobuu

LordMGR commented 3 days ago

It looks like, Zigbee2MQTT has a solution to it, but I was not able, to port it to zha. They seem to handle it like some other valves: https://github.com/Koenkk/zigbee-herdsman-converters/pull/8339/commits/9bfc71aab352c1a9a2aa74b823be9878c8ae2e2b Maybe someone sees something I don't.

matteohoeren commented 2 days ago

@LordMGR Soo i've got good and bad news. I did make it work with Zigbee2MQTT. However i have little idea how to port it into ZHA. What step did you fail when trying to port it to ZHA? I might give it another shot then :)

After some research, this might be the fix: https://github.com/zigpy/zha-device-handlers/issues/3445

I stumbled upon it while searching the other TRV's from the working Z2M Herdsman converter. Will try later if i can get it to work.

matteohoeren commented 2 days ago

I tried the above as i said, and i got this once again:

2024-11-26 15:20:24.056 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZE284_o3x45p96 TS0601 (a4:c1:38:98:49:40:9e:19)
2024-11-26 15:20:24.057 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'ts0601_trv_me167.ME167'>
2024-11-26 15:20:24.057 DEBUG (MainThread) [zigpy.quirks] Fail because input cluster mismatch on at least one endpoint