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
758 stars 695 forks source link

[Device Support Request] Beok Zigbee Thermostat TGR85-ZB-WP(3A) #1721

Closed bsafh closed 1 year ago

bsafh commented 2 years ago

Is your feature request related to a problem? Please describe. The device is listed as "supported by ZHA" in zigbee.blakadder.com - but that is not true any more for the currently sold version .

It shows up in ZHA, but there are no entities at all.

Describe the solution you'd like I would like to have this device fully supprted in ZHA as a climate device

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=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)", "endpoints": { "1": { "profile_id": 260, "device_type": "0x0051", "in_clusters": [ "0x0000", "0x0004", "0x0005", "0xef00" ], "out_clusters": [ "0x000a", "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } }, "manufacturer": "_TZE200_2ekuz3dz", "model": "TS0601", "class": "zigpy.device.Device" } ```
Diagnostic information ```yaml { "home_assistant": { "installation_type": "Home Assistant Supervised", "version": "2022.8.7", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.5", "docker": true, "arch": "x86_64", "timezone": "Europe/Berlin", "os_name": "Linux", "os_version": "5.10.0-17-amd64", "supervisor": "2022.08.5", "host_os": "Debian GNU/Linux 11 (bullseye)", "docker_version": "20.10.17", "chassis": "vm", "run_as_root": true }, "custom_components": { "hacs": { "version": "1.26.2", "requirements": [ "aiogithubapi>=22.2.4" ] }, "openweathermap_all": { "version": "0.0.1", "requirements": [ "owm2json==0.1.89" ] }, "climate_group": { "version": "0.4.2", "requirements": [] }, "holidays": { "version": "1.8.0", "requirements": [ "python-dateutil>=2.8.2", "holidays>=0.14.2" ] }, "openwrt": { "version": "0.0.1", "requirements": [] }, "homematicip_local": { "version": "1.15.0", "requirements": [ "hahomematic==2022.8.10" ] }, "truenas": { "version": "0.0.0", "requirements": [] }, "nodered": { "version": "1.0.9", "requirements": [] }, "ai_thermostat": { "version": "0.9.3", "requirements": [] }, "browser_mod": { "version": "1.5.3", "requirements": [] }, "better_thermostat": { "version": "1.0.0-beta14", "requirements": [] }, "ferienapidotde": { "version": "0.2.3", "requirements": [ "ferien-api==0.3.6" ] }, "climate_scheduler": { "version": "0.1.0", "requirements": [] }, "webrtc": { "version": "v2.3.1", "requirements": [] }, "gismeteo": { "version": "2.5.0", "requirements": [] }, "frigate": { "version": "2.3", "requirements": [] }, "zha_toolkit": { "version": "v0.8.13", "requirements": [] }, "reversotts": { "version": "1.0.2", "requirements": [ "pyttsreverso==0.4" ] }, "picotts_remote": { "version": "1.0.1", "requirements": [] }, "scheduler": { "version": "v0.0.0", "requirements": [] }, "dwd_weather": { "version": "1.2.22", "requirements": [ "simple_dwd_weatherforecast==1.1.5", "markdownify==0.6.5" ] }, "shelly": { "version": "1.0.1", "requirements": [ "pyShelly==1.0.2", "paho-mqtt==1.6.1", "websocket-client" ] }, "opnsense": { "version": "0.1.0", "requirements": [ "mac-vendor-lookup>=0.1.11" ] }, "dwains_dashboard": { "version": "3.2.0", "requirements": [] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ "bellows==0.33.1", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.78", "zigpy-deconz==0.18.0", "zigpy==0.50.2", "zigpy-xbee==0.15.0", "zigpy-zigate==0.9.2", "zigpy-znp==0.8.2" ], "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": "0403", "pid": "6015", "description": "*zigate*", "known_devices": [ "ZiGate+" ] }, { "vid": "10C4", "pid": "EA60", "description": "*zigate*", "known_devices": [ "ZiGate" ] }, { "vid": "10C4", "pid": "8B34", "description": "*bv 2010/10*", "known_devices": [ "Bitron Video AV2010/10" ] } ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" } ], "after_dependencies": [ "onboarding", "usb", "zeroconf" ], "iot_class": "local_polling", "loggers": [ "aiosqlite", "bellows", "crccheck", "pure_pcapy3", "zhaquirks", "zigpy", "zigpy_deconz", "zigpy_xbee", "zigpy_zigate", "zigpy_znp" ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 33105, "manufacturer": "_TZE200_2ekuz3dz", "model": "TS0601", "name": "_TZE200_2ekuz3dz TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4417, "power_source": "Mains", "lqi": 65, "rssi": null, "last_seen": "2022-08-30T13:13:04", "available": true, "device_type": "Router", "signature": { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)", "endpoints": { "1": { "profile_id": 260, "device_type": "0x0051", "in_clusters": [ "0x0000", "0x0004", "0x0005", "0xef00" ], "out_clusters": [ "0x000a", "0x0019" ] }, "242": { "profile_id": 41440, "device_type": "0x0061", "in_clusters": [], "out_clusters": [ "0x0021" ] } } }, "active_coordinator": false, "entities": [], "neighbors": [ { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Parent", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xF48C", "permit_joining": "Unknown", "depth": "1", "lqi": "88" }, { "device_type": "Coordinator", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x0000", "permit_joining": "Unknown", "depth": "0", "lqi": "69" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x2958", "permit_joining": "Unknown", "depth": "1", "lqi": "45" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x986A", "permit_joining": "Unknown", "depth": "1", "lqi": "97" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xFCA3", "permit_joining": "Unknown", "depth": "2", "lqi": "0" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xE74E", "permit_joining": "Unknown", "depth": "1", "lqi": "72" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x7B6A", "permit_joining": "Unknown", "depth": "3", "lqi": "48" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xAA04", "permit_joining": "Unknown", "depth": "0", "lqi": "33" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x4D8B", "permit_joining": "Unknown", "depth": "1", "lqi": "66" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x31BF", "permit_joining": "Unknown", "depth": "2", "lqi": "57" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xA846", "permit_joining": "Unknown", "depth": "2", "lqi": "0" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x3288", "permit_joining": "Unknown", "depth": "2", "lqi": "33" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x22D0", "permit_joining": "Unknown", "depth": "1", "lqi": "33" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x50C6", "permit_joining": "Unknown", "depth": "1", "lqi": "18" } ], "endpoint_names": [ { "name": "SMART_PLUG" }, { "name": "unknown 97 device_type of 0xa1e0 profile id" } ], "user_given_name": "TRV_Flur_hinten", "device_reg_id": "94d764ecc1db64df4895af8df534e2b4", "area_id": "flur_eg_hinten", "cluster_details": { "1": { "device_type": { "name": "SMART_PLUG", "id": 81 }, "profile_id": 260, "in_clusters": { "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} }, "0x0005": { "endpoint_attribute": "scenes", "attributes": {}, "unsupported_attributes": {} }, "0xef00": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0001": { "attribute_name": "app_version", "value": 68 }, "0x0004": { "attribute_name": "manufacturer", "value": "_TZE200_2ekuz3dz" }, "0x0005": { "attribute_name": "model", "value": "TS0601" } }, "unsupported_attributes": {} } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": {}, "unsupported_attributes": {} }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": {} } } }, "242": { "device_type": { "name": "unknown", "id": 97 }, "profile_id": 41440, "in_clusters": {}, "out_clusters": { "0x0021": { "endpoint_attribute": "green_power", "attributes": {}, "unsupported_attributes": {} } } } } } } ```
Additional logs ``` 2022-08-28 13:30:13.852 DEBUG (MainThread) [zigpy.zcl] [0x8151:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=, value=TypeValue(type=CharacterString, value='_TZE200_2ekuz3dz')), ReadAttributeRecord(attrid=0x0005, status=, value=TypeValue(type=CharacterString, value='TS0601'))]) 2022-08-28 13:30:13.854 INFO (MainThread) [zigpy.device] [0x8151] Read model 'TS0601' and manufacturer '_TZE200_2ekuz3dz' from > 2022-08-28 13:30:13.854 INFO (MainThread) [zigpy.device] [0x8151] Discovered basic device information for 2022-08-28 13:30:13.854 DEBUG (MainThread) [zigpy.application] Device is initialized 2022-08-28 13:30:13.855 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZE200_2ekuz3dz TS0601 (a4:c1:38:f4:c1:c0:6f:1f) 2022-08-28 13:30:13.877 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:f4:c1:c0:6f:1f, 1, 0, 4, '_TZE200_2ekuz3dz') params: FOREIGN KEY constraint failed 2022-08-28 13:31:15.773 DEBUG (MainThread) [zigpy.zcl] [0x3288:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=, value=TypeValue(type=CharacterString, value='_TZE200_2ekuz3dz')), ReadAttributeRecord(attrid=0x0005, status=, value=TypeValue(type=CharacterString, value='TS0601'))]) 2022-08-28 13:31:15.776 INFO (MainThread) [zigpy.device] [0x3288] Read model 'TS0601' and manufacturer '_TZE200_2ekuz3dz' from > 2022-08-28 13:31:15.776 INFO (MainThread) [zigpy.device] [0x3288] Discovered basic device information for 2022-08-28 13:31:15.776 DEBUG (MainThread) [zigpy.application] Device is initialized 2022-08-28 13:31:15.777 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZE200_2ekuz3dz TS0601 (a4:c1:38:b1:1e:d7:26:6d) 2022-08-28 13:31:15.800 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:b1:1e:d7:26:6d, 1, 0, 4, '_TZE200_2ekuz3dz') params: FOREIGN KEY constraint failed ``` ``` 2022-08-28 13:30:11.970 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.TCDevInd.Callback(SrcNwk=0x8151, SrcIEEE=a4:c1:38:f4:c1:c0:6f:1f, ParentNwk=0xF48C) 2022-08-28 13:30:11.971 INFO (MainThread) [zigpy_znp.zigbee.application] TC device join: ZDO.TCDevInd.Callback(SrcNwk=0x8151, SrcIEEE=a4:c1:38:f4:c1:c0:6f:1f, ParentNwk=0xF48C) 2022-08-28 13:30:11.992 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.EndDeviceAnnceInd.Callback(Src=0x8151, NWK=0x8151, IEEE=a4:c1:38:f4:c1:c0:6f:1f, Capabilities=) 2022-08-28 13:30:12.005 INFO (MainThread) [zigpy_znp.zigbee.application] ZDO device announce: nwk=0x8151, ieee=a4:c1:38:f4:c1:c0:6f:1f, capabilities=142 2022-08-28 13:30:12.005 INFO (MainThread) [zigpy.application] New device 0x8151 (a4:c1:38:f4:c1:c0:6f:1f) joined the network 2022-08-28 13:30:12.006 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device from ep 0 to ep 0, cluster 19: b'\x00Q\x81\x1fo\xc0\xc1\xf48\xc1\xa4\x8e' 2022-08-28 13:30:12.006 DEBUG (MainThread) [zigpy.zdo] [0x8151:zdo] ZDO request ZDOCmd.Device_annce: [0x8151, a4:c1:38:f4:c1:c0:6f:1f, 142] 2022-08-28 13:30:13.538 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device from ep 0 to ep 0, cluster 32770: b'A\x00Q\x81\x01@\x8eA\x11BB\x00\x00*B\x00\x00' 2022-08-28 13:30:13.640 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device from ep 0 to ep 0, cluster 32773: b'B\x00Q\x81\x02\x01\xf2' 2022-08-28 13:30:13.709 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device from ep 0 to ep 0, cluster 32772: b'C\x00Q\x81\x14\x01\x04\x01Q\x00\x01\x04\x04\x00\x05\x00\x00\xef\x00\x00\x02\x19\x00\n\x00' 2022-08-28 13:30:13.778 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device from ep 0 to ep 0, cluster 32772: b'D\x00Q\x81\n\xf2\xe0\xa1a\x00\x00\x00\x01!\x00' 2022-08-28 13:30:13.854 INFO (MainThread) [zigpy.device] [0x8151] Discovered basic device information for 2022-08-28 13:30:13.854 DEBUG (MainThread) [zigpy.application] Device is initialized 2022-08-28 13:30:13.855 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZE200_2ekuz3dz TS0601 (a4:c1:38:f4:c1:c0:6f:1f) 2022-08-28 13:30:13.863 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0x8151:a4:c1:38:f4:c1:c0:6f:1f entering async_device_initialized - is_new_join: True 2022-08-28 13:30:13.863 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0x8151:a4:c1:38:f4:c1:c0:6f:1f has joined the ZHA zigbee network 2022-08-28 13:30:13.877 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:f4:c1:c0:6f:1f, 1, 0, 4, '_TZE200_2ekuz3dz') params: FOREIGN KEY constraint failed 2022-08-28 13:30:13.882 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:f4:c1:c0:6f:1f, 1, 0, 5, 'TS0601') params: FOREIGN KEY constraint failed ```

Additional context the device can be found e.g. here: https://de.aliexpress.com/item/1005003252110774.html

Hilpas commented 1 year ago

Same problem Here. Bought it because of the compatibility list.

github-actions[bot] commented 1 year ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.