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

[Device Support Request] SPM01 - Tuya Zigbee Energy Meter Smart Power Consumption Monitor #2463

Open Martin123456777 opened 1 year ago

Martin123456777 commented 1 year ago

Problem description

After added meter to Zigbee network, no entities for metering are visible in HA. Item: https://www.aliexpress.com/item/1005005418122329.html?spm=a2g0o.order_list.order_list_main.31.24511802FVo01V

Only LQI and RSSI entities added.

Item is recognized as TS0601 from _TZE200_bcusnqt8

Solution description

I want to use this meter in Energy panel. I have 3 pieces, for 3 phases.

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

Device signature

Device signature ```json { "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=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": "0x0104", "device_type": "0x0051", "input_clusters": [ "0x0000", "0x0004", "0x0005", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZE200_bcusnqt8", "model": "TS0601", "class": "zigpy.device.Device" } ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2023.7.1", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.11.4", "docker": true, "arch": "x86_64", "timezone": "Europe/Prague", "os_name": "Linux", "os_version": "6.1.34", "supervisor": "2023.07.1", "host_os": "Home Assistant OS 10.3", "docker_version": "23.0.6", "chassis": "vm", "run_as_root": true }, "custom_components": { "dwains_dashboard": { "version": "3.4.3", "requirements": [] }, "mikrotik_router": { "version": "0.0.0", "requirements": [ "librouteros>=3.2.0", "mac-vendor-lookup>=0.1.12" ] }, "hacs": { "version": "1.32.1", "requirements": [ "aiogithubapi>=22.10.1" ] }, "smartthinq_sensors": { "version": "0.31.8", "requirements": [ "pycountry>=20.7.3", "xmltodict>=0.12.0", "charset_normalizer>=2.0.0" ] }, "upnp_availability": { "version": "0.0.3", "requirements": [ "async_upnp_client>=0.33" ] }, "xiaomi_miot": { "version": "0.7.10", "requirements": [ "construct==2.10.56", "python-miio>=0.5.6", "micloud>=0.3" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "onboarding", "usb" ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "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" ], "requirements": [ "bellows==0.35.8", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.101", "zigpy-deconz==0.21.0", "zigpy==0.56.1", "zigpy-xbee==0.18.1", "zigpy-zigate==0.11.0", "zigpy-znp==0.11.2" ], "usb": [ { "vid": "10C4", "pid": "EA60", "description": "*2652*", "known_devices": [ "slae.sh cc2652rb stick" ] }, { "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": "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": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 48746, "manufacturer": "_TZE200_bcusnqt8", "model": "TS0601", "name": "_TZE200_bcusnqt8 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4098, "power_source": "Mains", "lqi": 33, "rssi": -88, "last_seen": "2023-07-07T23:08:58", "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=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": "0x0104", "device_type": "0x0051", "input_clusters": [ "0x0000", "0x0004", "0x0005", "0xef00" ], "output_clusters": [ "0x000a", "0x0019" ] } }, "manufacturer": "_TZE200_bcusnqt8", "model": "TS0601" }, "active_coordinator": false, "entities": [ { "entity_id": "sensor.tze200_bcusnqt8_ts0601_lqi", "name": "_TZE200_bcusnqt8 TS0601" } ], "neighbors": [ { "device_type": "Coordinator", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x0000", "permit_joining": "Unknown", "depth": "0", "lqi": "65" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x608D", "permit_joining": "Unknown", "depth": "15", "lqi": "255" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xBAE7", "permit_joining": "Unknown", "depth": "15", "lqi": "255" }, { "device_type": "EndDevice", "rx_on_when_idle": "Off", "relationship": "Child", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x9E4D", "permit_joining": "NotAccepting", "depth": "2", "lqi": "0" } ], "routes": [ { "dest_nwk": "0x608D", "route_status": "Active", "memory_constrained": false, "many_to_one": false, "route_record_required": false, "next_hop": "0x608D" }, { "dest_nwk": "0xBAE7", "route_status": "Active", "memory_constrained": false, "many_to_one": false, "route_record_required": false, "next_hop": "0xBAE7" }, { "dest_nwk": "0x0000", "route_status": "Active", "memory_constrained": true, "many_to_one": true, "route_record_required": false, "next_hop": "0x0000" }, { "dest_nwk": "0x7475", "route_status": "Discovery_Underway", "memory_constrained": false, "many_to_one": false, "route_record_required": false, "next_hop": "0x0000" } ], "endpoint_names": [ { "name": "SMART_PLUG" } ], "user_given_name": "Faze1", "device_reg_id": "af6d9920cd515384dbb012b7e33084c6", "area_id": "predsin", "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": 68 }, "0x0004": { "attribute_name": "manufacturer", "value": "_TZE200_bcusnqt8" }, "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": {}, "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

Thank you :-)

Martin123456777 commented 1 year ago

Hi, i found same device, which is supported on zigbee2mqtt: https://www.zigbee2mqtt.io/devices/SPM01.html May be helpfull. It is SPM01

Thank you Martin

nicolasknto commented 1 year ago

Hello, I also bought three devices from Zemismart SPM01-D2TZ on Aliexpress and I intend to use them in Home Assistant to measure the consumption of two showers and a boiler. I use the ZHA in the HA and no electrical measurement entity appears. Devices return model TS0601 _TZE200_bcusnqt8. I would greatly appreciate it if anyone could expedite creating the custom quirk code to allow full use of these devices. thank you very much I'm waiting Nicolas

razqqm commented 1 year ago

please add SPM01 in ZHA

Cseeu commented 1 year ago

I have the same issue... Anyone that can pleaaaase add SPM01 into ZHA?

Hedda commented 1 year ago

For reference, blakadder has posted a nice review of the hardware in his blog here -> https://blakadder.com/zemismart-spm01/

sectune commented 1 year ago

I am also very interested in having it supported in zha. I have a three phase Zigbee version of SPM01 which I am not using currently and am offering to send it to developers free of charge. Please contact me in case you are willing to give it a shot.

mmastria commented 1 year ago

I have 16 of SPM01 device in my house, categorizing energy consumptions. I'm using with Zigbee2MQTT, but I'm having several instability issues, and I want to switch to ZHA. I have a few other non-recognized devices, but SPM01 is a critical one, I can't loose my energy monitoring.

Please add support for this device or, If there's a quirk somewhere from this or a similar device, please let me know.

Thanks, Mastria.

agocsdaniel commented 1 year ago

@sectune I'm afraid the 3-phase variant is different, but I can't test it

sectune commented 1 year ago

@sectune I'm afraid the 3-phase variant is different, but I can't test it

@agocsdaniel Can I somehow get in touch with you e.g. to send you the 3-phase? (free of charge ofc)

agocsdaniel commented 1 year ago

@sectune There's probably no need for that. Check the latest commit in the PR. I tried something, I hope it will work for the SPM02.

tbaumann commented 12 months ago

Looks like the perfect hardware solution for small fuse boxes to me. I'd love to get one when supported.

nemesix29 commented 11 months ago

I'm very enthusiastic about this support

fbalesse commented 11 months ago

Hi, interested too about this support. Thanks

ckadluba commented 10 months ago

I'm also looking forward to Zemismart SPM01 being supported with ZHA. It seems to work with Zigbee2MQTT but I cannot use this since I have problems getting it (Z2M) to run with my Nabu Casa SkyConnect dongle. :(

BlairC1 commented 8 months ago

This Quirk worked for me - https://github.com/zigpy/zha-device-handlers/pull/2603/commits/719490a2fda71ca790252e952224583cb090aa6e

lboue commented 7 months ago

This Quirk worked for me - 719490a

It works for my _TZE200_qhlxve78 TS0601 too: image

mhalano commented 5 months ago

Just installed an SPM-02 that meters 3 phases and didn't work out-of-the-box, so I'm excited about the fix for this issue.

juapem commented 4 months ago

I am also interested on making the Zemismart 3 phase meter available in ZHA

Teki84 commented 3 months ago

Hello, will it ever be possible to integrate into ZHA? Thank you.

homerojleal commented 2 months ago

Yes please +1 for support of SPM01