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
775 stars 703 forks source link

[Device Support Request] _TZE204_x9usygq1 MOES pilot wire with power comsumption #3278

Open CoBouLu opened 4 months ago

CoBouLu commented 4 months ago

Problem description

Hi all, Can someone create a quirk for _TZE204_x9usygq1, model TS0601?

https://www.domadoo.fr/fr/chauffage/7153-moes-thermostat-programmable-zigbee-tuya-fil-pilote-mesure-conso.html

Solution description

It should be usefull for me to have a quirk for this device. Thanks in avance😉

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

Device signature

Device signature ```json [Paste the device signature here] ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.7.4", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.4", "docker": true, "arch": "x86_64", "timezone": "Europe/Paris", "os_name": "Linux", "os_version": "6.6.33-haos", "supervisor": "2024.06.2", "host_os": "Home Assistant OS 12.4", "docker_version": "26.1.4", "chassis": "embedded", "run_as_root": true }, "custom_components": { "eufy_security": { "documentation": "https://github.com/fuatakgun/eufy_security", "version": "8.0.2", "requirements": [ "websocket-client==1.4.2", "aiortsp==1.3.7" ] }, "climate_group": { "documentation": "https://github.com/daenny/climate_group", "version": "0.4.2", "requirements": [] }, "heatzy": { "documentation": "https://github.com/cyr-ius/hass-heatzy", "version": "6.3.2", "requirements": [ "heatzypy==2.5.5" ] }, "tarif_edf": { "documentation": "https://github.com/delphiki/hass-tarif-edf", "version": "1.0.0", "requirements": [] }, "better_thermostat": { "documentation": "https://github.com/KartoffelToby/better_thermostat", "version": "1.6.0", "requirements": [] }, "virtual": { "documentation": "https://github.com/twrecked/hass-virtual/blob/master/README.md", "version": "0.8.0.1", "requirements": [] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "webrtc": { "documentation": "https://github.com/AlexxIT/WebRTC", "version": "v3.5.2", "requirements": [] }, "alarmo": { "documentation": "https://github.com/nielsfaber/alarmo", "version": "v1.10.4", "requirements": [] }, "versatile_thermostat": { "documentation": "https://github.com/jmcollin78/versatile_thermostat", "version": "6.2.9", "requirements": [] }, "tuya": { "documentation": "https://www.home-assistant.io/integrations/tuya", "version": "2.0", "requirements": [ "tuya-device-sharing-sdk==0.1.9" ] }, "xiaomi_cloud_map_extractor": { "documentation": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor", "version": "v2.2.0", "requirements": [ "pillow", "pybase64", "python-miio", "requests", "pycryptodome" ] }, "localtuya": { "documentation": "https://github.com/xZetsubou/hass-localtuya/", "version": "2024.7.0", "requirements": [] }, "ui_lovelace_minimalist": { "documentation": "https://ui-lovelace-minimalist.github.io/UI/", "version": "v1.3.10", "requirements": [ "aiofiles==0.8.0", "aiogithubapi>=22.2.4" ] }, "dwains_dashboard": { "documentation": "https://dwainscheeren.github.io/dwains-lovelace-dashboard/", "version": "3.7.1", "requirements": [] }, "scheduler": { "documentation": "https://github.com/nielsfaber/scheduler-component", "version": "v0.0.0", "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", "universal_silabs_flasher" ], "requirements": [ "bellows==0.39.1", "pyserial==3.5", "zha-quirks==0.0.117", "zigpy-deconz==0.23.2", "zigpy==0.64.1", "zigpy-xbee==0.20.1", "zigpy-zigate==0.12.1", "zigpy-znp==0.12.2", "universal-silabs-flasher==0.0.20", "pyserial-asyncio-fast==0.11" ], "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": 8.867302676662803e-05 }, "7d44b7af586e692f520f8ce535bfe5a0": { "wait_import_platforms": -0.0002858299994841218, "config_entry_setup": 52.776039085001685 } }, "data": { "ieee": "**REDACTED**", "nwk": 45561, "manufacturer": "_TZE204_x9usygq1", "model": "TS0601", "name": "_TZE204_x9usygq1 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "quirk_id": null, "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 152, "rssi": -62, "last_seen": "2024-08-02T09:14:40", "available": true, "device_type": "EndDevice", "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=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": "0x0104", "device_type": "0x0051", "input_clusters": [ "0x0000", "0x0004", "0x0005", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZE204_x9usygq1", "model": "TS0601" }, "active_coordinator": false, "entities": [ { "entity_id": "update.radiateur_moes_micrologiciel", "name": "_TZE204_x9usygq1 TS0601" } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "SMART_PLUG" } ], "user_given_name": "Radiateur MOES", "device_reg_id": "b9d2690f92710e10a5c56fce7e0922c6", "area_id": "bureau", "cluster_details": { "1": { "device_type": { "name": "SMART_PLUG", "id": 81 }, "profile_id": 260, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0001": { "attribute_name": "app_version", "value": 74 }, "0x0004": { "attribute_name": "manufacturer", "value": "_TZE204_x9usygq1" }, "0x0005": { "attribute_name": "model", "value": "TS0601" } }, "unsupported_attributes": {} }, "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} }, "0x0005": { "endpoint_attribute": "scenes", "attributes": {}, "unsupported_attributes": {} }, "0xef00": { "endpoint_attribute": null, "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0019": { "endpoint_attribute": "ota", "attributes": { "0x0002": { "attribute_name": "current_file_version", "value": 74 } }, "unsupported_attributes": {} }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": {} } } } } } } ```

Logs

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

Custom quirk

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

Additional information

Some.more informations : { "result": { "category": "wk", "functions": [ { "code": "lower_temp", "desc": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}", "name": "设置温度下限", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}" }, { "code": "temp_correction", "desc": "{\"unit\":\"\",\"min\":-100,\"max\":100,\"scale\":1,\"step\":1}", "name": "温度校准", "type": "Integer", "values": "{\"unit\":\"\",\"min\":-100,\"max\":100,\"scale\":1,\"step\":1}" }, { "code": "window_check", "desc": "{}", "name": "开窗检测", "type": "Boolean", "values": "{}" }, { "code": "upper_temp", "desc": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}", "name": "设置温度上限", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}" }, { "code": "child_lock", "desc": "{}", "name": "童锁", "type": "Boolean", "values": "{}" }, { "code": "temp_unit_convert", "desc": "{\"range\":[\"c\",\"f\"]}", "name": "温标切换设置", "type": "Enum", "values": "{\"range\":[\"c\",\"f\"]}" }, { "code": "temp_set", "desc": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":5}", "name": "温度设置", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":5}" } ], "status": [ { "code": "temp_current", "name": "当前温度", "type": "Integer", "values": "{\"unit\":\"\",\"min\":-300,\"max\":9000,\"scale\":1,\"step\":1}" }, { "code": "window_state", "name": "窗户状态", "type": "Enum", "values": "{\"range\":[\"close\",\"open\"]}" }, { "code": "lower_temp", "name": "设置温度下限", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}" }, { "code": "temp_correction", "name": "温度校准", "type": "Integer", "values": "{\"unit\":\"\",\"min\":-100,\"max\":100,\"scale\":1,\"step\":1}" }, { "code": "fault", "name": "故障告警", "type": "Bitmap", "values": "{\"label\":[\"e1\",\"e2\"]}" }, { "code": "window_check", "name": "开窗检测", "type": "Boolean", "values": "{}" }, { "code": "upper_temp", "name": "设置温度上限", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":10}" }, { "code": "child_lock", "name": "童锁", "type": "Boolean", "values": "{}" }, { "code": "temp_unit_convert", "name": "温标切换设置", "type": "Enum", "values": "{\"range\":[\"c\",\"f\"]}" }, { "code": "temp_set", "name": "温度设置", "type": "Integer", "values": "{\"unit\":\"\",\"min\":50,\"max\":3000,\"scale\":1,\"step\":5}" } ]

And DP id: { "result": { "properties": [ { "code": "mode", "custom_name": "", "dp_id": 2, "time": 1722582555254, "type": "enum", "value": "Standby" }, { "code": "temp_current", "custom_name": "", "dp_id": 16, "time": 1722582553223, "type": "value", "value": 240 }, { "code": "window_state", "custom_name": "", "dp_id": 17, "time": 1722582549767, "type": "enum", "value": "close" }, { "code": "lower_temp", "custom_name": "", "dp_id": 18, "time": 1722582549767, "type": "value", "value": 50 }, { "code": "temp_correction", "custom_name": "", "dp_id": 19, "time": 1722582549767, "type": "value", "value": 0 }, { "code": "fault", "custom_name": "", "dp_id": 20, "time": 1722582549027, "type": "bitmap", "value": 0 }, { "code": "window_check", "custom_name": "", "dp_id": 29, "time": 1722582549767, "type": "bool", "value": true }, { "code": "upper_temp", "custom_name": "", "dp_id": 34, "time": 1722582549767, "type": "value", "value": 350 }, { "code": "child_lock", "custom_name": "", "dp_id": 39, "time": 1722582549027, "type": "bool", "value": false }, { "code": "temp_unit_convert", "custom_name": "", "dp_id": 46, "time": 1722582549767, "type": "enum", "value": "c" }, { "code": "temp_set", "custom_name": "", "dp_id": 50, "time": 1722582549027, "type": "value", "value": 340 }, { "code": "week_program_1", "custom_name": "", "dp_id": 65, "time": 1722582551142, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_2", "custom_name": "", "dp_id": 66, "time": 1722582551839, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_3", "custom_name": "", "dp_id": 67, "time": 1722582552539, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_4", "custom_name": "", "dp_id": 68, "time": 1722582555962, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_5", "custom_name": "", "dp_id": 69, "time": 1722582556660, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_6", "custom_name": "", "dp_id": 70, "time": 1721764302560, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "week_program_7", "custom_name": "", "dp_id": 71, "time": 1721764303267, "type": "raw", "value": "REREREREERFEREREREREREQREREREURE" }, { "code": "vacation_duration", "custom_name": "", "dp_id": 101, "time": 1722582549027, "type": "value", "value": 0 }, { "code": "boost_duration", "custom_name": "", "dp_id": 102, "time": 1722582549027, "type": "value", "value": 0 }, { "code": "electricity_statistics", "custom_name": "", "dp_id": 103, "time": 1722582550444, "type": "value", "value": 0 }, { "code": "elec_statistics_day", "custom_name": "", "dp_id": 104, "time": 1721764304688, "type": "raw", "value": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }, { "code": "elec_statistics_month", "custom_name": "", "dp_id": 105, "time": 1721764305394, "type": "raw", "value": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" }, { "code": "elec_statistics_year", "custom_name": "", "dp_id": 106, "time": 1721764306067, "type": "raw", "value": "AAAAAA==" }, { "code": "average_power", "custom_name": "", "dp_id": 107, "time": 1722582550444, "type": "value", "value": 0 }, { "code": "air_pressure_index", "custom_name": "", "dp_id": 108, "time": 1722582548293, "type": "raw", "value": "gYRmBfotr47xFqwhrHIDoqov7LnUczRc" }, { "code": "support_features", "custom_name": "", "dp_id": 109, "time": 1722582549027, "type": "value", "value": 15 }, { "code": "window_keep_time", "custom_name": "", "dp_id": 110, "time": 1722582549767, "type": "value", "value": 30 }, { "code": "app_features", "custom_name": "", "dp_id": 111, "time": 1722582549027, "type": "value", "value": 2 }, { "code": "switch_diff", "custom_name": "", "dp_id": 112, "time": 1722582550444, "type": "value", "value": 10 }, { "code": "running_mode", "custom_name": "", "dp_id": 113, "time": 1722582555254, "type": "enum", "value": "Standby" }, { "code": "night_led_config", "custom_name": "", "dp_id": 114, "time": 1721764303934, "type": "raw", "value": "BLABaAA=" } ] }, "success": true, "t": 1722584161842, "tid": "de1a088550a111efb4aad63cb6505ef8

raphmur commented 2 months ago

Hello @CoBouLu, could you make it work? I have the same and discovered it is not supported... Though maybe this config should be compatible? I will test https://github.com/Koenkk/zigbee2mqtt/issues/19169

CoBouLu commented 2 months ago

Hello @CoBouLu, could you make it work? I have the same and discovered it is not supported... Though maybe this config should be compatible? I will test Koenkk/zigbee2mqtt#19169

Not Yet. I bought WIFI's one and managed working with Local Tuya only

ludoviclt commented 1 month ago

Hello @CoBouLu @raphmur @TheJulianJES , have you managed to get it work under zigbee2mqtt or still not ? is it better to take the wifi version?

Merci

raphmur commented 1 month ago

No news from me I might stick to the handmade tuya 2 ch Switch + diodes...

barchasse38 commented 2 weeks ago

Hello,

if it can help, I'm working on the Zigbee2mqtt integration : https://github.com/Koenkk/zigbee2mqtt/issues/24635

There you will find technical information that might help you.

Regards

CoBouLu commented 2 weeks ago

Hello @CoBouLu @raphmur @TheJulianJES , have you managed to get it work under zigbee2mqtt or still not ? is it better to take the wifi version?

Merci

Hello @ludoviclt As i've mentioned, i already use WIFI version with Local TUYA (13 nodes, one by heater)

@barchasse38 Good Job, i'll follow it 😉