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

[Device Support Request] Tuya TS0225 by _TZ3210_ncw88jfq #3331

Open pcxnet opened 2 months ago

pcxnet commented 2 months ago

Problem description

This is a ZigBee Presence Sensor, but it isn't supported at all. There are other TS0225 devices but this doesn't show anything except IAS Zone, which is always On.

Solution description

Device supported or a custom quirk ?

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

Device signature

Device signature ```json { "node_descriptor": { "logical_type": 1, "complex_descriptor_available": 0, "user_descriptor_available": 0, "reserved": 0, "aps_flags": 0, "frequency_band": 8, "mac_capability_flags": 142, "manufacturer_code": 4098, "maximum_buffer_size": 82, "maximum_incoming_transfer_size": 82, "server_mask": 11264, "maximum_outgoing_transfer_size": 82, "descriptor_capability_field": 0 }, "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0402", "input_clusters": [ "0x0000", "0x0500", "0xe002", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZ3210_ekjc2rzh", "model": "TS0225", "class": "zigpy.device.Device" }```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.8.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.4", "docker": true, "arch": "x86_64", "timezone": "Australia/Brisbane", "os_name": "Linux", "os_version": "6.6.46-haos", "supervisor": "2024.08.0", "host_os": "Home Assistant OS 13.1", "docker_version": "26.1.4", "chassis": "embedded", "run_as_root": true }, "custom_components": { "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "2.0.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "webhook_service": { "documentation": "https://github.com/HCookie/Webhook-Service-home-assistant", "version": "0.1.0", "requirements": [] }, "powercalc": { "documentation": "https://docs.powercalc.nl", "version": "v1.14.2", "requirements": [ "numpy>=1.21.1" ] }, "dahua": { "documentation": "https://github.com/rroller/dahua", "version": "0.9.60", "requirements": [] }, "dreame_vacuum": { "documentation": "https://github.com/Tasshack/dreame-vacuum", "version": "v2.0.0b16", "requirements": [ "pillow", "numpy", "pybase64", "requests", "pycryptodome", "python-miio", "py-mini-racer", "paho-mqtt" ] }, "waste_collection_schedule": { "documentation": "https://github.com/mampfes/hacs_waste_collection_schedule#readme", "version": "2.1.0", "requirements": [ "icalendar", "recurring_ical_events", "icalevents", "beautifulsoup4", "lxml" ] }, "localtuya": { "documentation": "https://github.com/rospogrigio/localtuya/", "version": "5.2.1", "requirements": [] }, "format_ble_tracker": { "documentation": "https://github.com/formatBCE/Format-BLE-Tracker/blob/main/README.md", "version": "0.0.8", "requirements": [] }, "o365": { "documentation": "https://github.com/RogerSelwyn/O365-HomeAssistant", "version": "v4.8.4", "requirements": [ "O365==2.0.36", "BeautifulSoup4>=4.10.0" ] }, "amazon_polly": { "documentation": "https://www.home-assistant.io/integrations/amazon_polly", "version": "0.5.0", "requirements": [ "boto3==1.34.51" ] }, "huawei_solar": { "documentation": "https://github.com/wlcrs/huawei_solar/wiki", "version": "1.4.1", "requirements": [ "huawei-solar==2.3.0" ] }, "tesla_custom": { "documentation": "https://github.com/alandtse/tesla/wiki", "version": "3.24.1", "requirements": [ "teslajsonpy==3.12.0" ] }, "hacs-minerstat-extended": { "documentation": "https://github.com/gilsonmandalogo/hacs-minerstat", "version": "1.1.2", "requirements": [] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "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.22", "zha==0.0.31" ], "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 }, "setup_times": { "null": { "setup": 5.050400068284944e-05 }, "570e7246a2f5c66b870b3ba2959e0a4d": { "wait_import_platforms": -0.010678618000383722, "wait_base_component": -0.0007476339997083414, "config_entry_setup": 11.228892548999283 } }, "data": { "ieee": "**REDACTED**", "nwk": 31940, "manufacturer": "_TZ3210_ekjc2rzh", "model": "TS0225", "name": "_TZ3210_ekjc2rzh TS0225", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "quirk_id": null, "manufacturer_code": 4098, "power_source": "Mains", "lqi": 176, "rssi": -56, "last_seen": "2024-08-29T17:19:41", "available": true, "device_type": "Router", "signature": { "node_descriptor": { "logical_type": 1, "complex_descriptor_available": 0, "user_descriptor_available": 0, "reserved": 0, "aps_flags": 0, "frequency_band": 8, "mac_capability_flags": 142, "manufacturer_code": 4098, "maximum_buffer_size": 82, "maximum_incoming_transfer_size": 82, "server_mask": 11264, "maximum_outgoing_transfer_size": 82, "descriptor_capability_field": 0 }, "endpoints": { "1": { "profile_id": "0x0104", "device_type": "0x0402", "input_clusters": [ "0x0000", "0x0500", "0xe002", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZ3210_ekjc2rzh", "model": "TS0225" }, "active_coordinator": false, "entities": [ { "entity_id": "binary_sensor.tz3210_ekjc2rzh_ts0225_ias_zone", "name": "_TZ3210_ekjc2rzh TS0225" }, { "entity_id": "update.tz3210_ekjc2rzh_ts0225_firmware", "name": "_TZ3210_ekjc2rzh TS0225" } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "IAS_ZONE" } ], "user_given_name": null, "device_reg_id": "0ab5f207bbbdd0f47603bc990d9acbd6", "area_id": null, "cluster_details": { "1": { "device_type": { "name": "IAS_ZONE", "id": 1026 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "_TZ3210_ekjc2rzh" }, "0x0005": { "attribute_name": "model", "value": "TS0225" } }, "unsupported_attributes": {} }, "0x0500": { "endpoint_attribute": "ias_zone", "attributes": { "0x0010": { "attribute_name": "cie_addr", "value": [ 190, 10, 19, 254, 255, 141, 121, 224 ] }, "0x0000": { "attribute_name": "zone_state", "value": 1 }, "0x0002": { "attribute_name": "zone_status", "value": 1 }, "0x0001": { "attribute_name": "zone_type", "value": 32771 } }, "unsupported_attributes": {} }, "0xe002": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} }, "0xef00": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": {}, "unsupported_attributes": { "0x0002": { "attribute_name": "current_file_version" } } }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": {} } } } } } }```

Logs

Logs ```python [Paste the logs here] ```

Custom quirk

No response

Additional information

No response

sierralx commented 1 month ago

Please add support 🤝 TS0225