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
683 stars 634 forks source link

[Device Support Request] _TZE204_kobbcyum RCBO Power Meter #3171

Open meremortals70 opened 1 month ago

meremortals70 commented 1 month ago

Problem description

New quirk for this single pole Tongou Circuit Breaker TOWSMR1-40 please

Solution description

For the device and all sensors work within ZHA.

https://www.tongou.com/product/zigbee-smart-circuit-breaker-rcbo-tosmr1/

IMG_7857

Screenshots/Video

Screenshots/Video [Paste/upload your media here]

image

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": "_TZE204_kobbcyum", "model": "TS0601", "class": "zigpy.device.Device" } ```

Diagnostic information

Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.6.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.2", "docker": true, "arch": "x86_64", "timezone": "Australia/Brisbane", "os_name": "Linux", "os_version": "6.6.29-haos", "supervisor": "2024.06.1", "host_os": "Home Assistant OS 12.3", "docker_version": "25.0.5", "chassis": "embedded", "run_as_root": true }, "custom_components": { "ha_registry": { "documentation": "https://github.com/amosyuen/ha-registry", "version": "1.0.0", "requirements": [] }, "cover_time_based": { "documentation": "https://github.com/Sese-Schneider/ha-cover-time-based", "version": "2.1.1", "requirements": [ "xknx==0.9.4" ] }, "dwains_dashboard": { "documentation": "https://dwainscheeren.github.io/dwains-lovelace-dashboard/", "version": "3.7.1", "requirements": [] }, "nest_protect": { "documentation": "https://github.com/imicknl/ha-nest-protect", "version": "0.3.12", "requirements": [] }, "bhyve": { "documentation": "https://github.com/sebr/bhyve-home-assistant/blob/main/README.md", "version": "3.2.4", "requirements": [] }, "intesishome": { "documentation": "https://www.home-assistant.io/integrations/intesishome", "version": "1.0.6", "requirements": [ "pyintesishome==1.8.5" ] }, "mjpeg_timelapse": { "documentation": "https://github.com/evilmarty/mjpeg-timelapse", "version": "2021.12.30", "requirements": [] }, "o365": { "documentation": "https://github.com/RogerSelwyn/O365-HomeAssistant", "version": "v4.8.1", "requirements": [ "O365==2.0.34", "BeautifulSoup4>=4.10.0" ] }, "scheduler": { "documentation": "https://github.com/nielsfaber/scheduler-component", "version": "v0.0.0", "requirements": [] }, "tesla_custom": { "documentation": "https://github.com/alandtse/tesla/wiki", "version": "3.23.1", "requirements": [ "teslajsonpy==3.12.0" ] }, "spook": { "documentation": "https://spook.boo", "version": "3.0.1", "requirements": [] }, "eventsensor": { "documentation": "https://github.com/azogue/eventsensor", "version": "3.3.1", "requirements": [] }, "homewhiz": { "documentation": "https://github.com/home-assistant-HomeWhiz/home-assistant-HomeWhiz", "version": "0.0.6", "requirements": [ "awsiotsdk", "bleak", "bleak_retry_connector", "dacite", "aiohttp", "bidict" ] }, "anniversaries": { "documentation": "https://github.com/pinkywafer/Anniversaries", "version": "5.2.0", "requirements": [ "python-dateutil>=2.8.1", "integrationhelper>=0.2.2", "voluptuous>=0.12.1" ] }, "media_player_template": { "documentation": "https://github.com/Sennevds/media_player.template", "version": "1.0.0", "requirements": [] }, "ics_calendar": { "documentation": "https://github.com/franc6/ics_calendar", "version": "4.2.0", "requirements": [ "ics>=0.7.2", "recurring_ical_events>=2.0.2", "icalendar>=5.0.4" ] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "bureau_of_meteorology": { "documentation": "https://github.com/bremor/bureau_of_meteorology", "version": "1.2.0", "requirements": [ "iso8601" ] }, "zha_toolkit": { "documentation": "https://github.com/mdeweerd/zha-toolkit", "version": "v1.1.10", "requirements": [ "pytz" ] }, "watchman": { "documentation": "https://github.com/dummylabs/thewatchman", "version": "0.5.1", "requirements": [ "prettytable==3.0.0" ] }, "solaredge_modbus": { "documentation": "https://github.com/erikarenhill/solaredge-modbus-hass", "version": "0.1.5", "requirements": [ "pyModbusTCP >= 0.1.8", "pymodbus" ] }, "spook_inverse": { "documentation": "https://spook.boo", "version": "3.0.1", "requirements": [] }, "matter_experimental": { "documentation": "https://github.com/home-assistant-libs/python-matter-server", "version": "0.3.0", "requirements": [ "python-matter-server==0.3.0" ] }, "solaredgeoptimizers": { "documentation": "https://github.com/ProudElm/solaredgeoptimizers", "version": "1.2.2", "requirements": [ "solaredgeoptimizers==1.0.12", "jsonfinder==0.4.2" ] }, "daily_schedule": { "documentation": "https://github.com/amitfin/daily_schedule", "version": "v1.6.1", "requirements": [] }, "waste_collection_schedule": { "documentation": "https://github.com/mampfes/hacs_waste_collection_schedule#readme", "version": "1.49.0", "requirements": [ "icalendar", "recurring_ical_events", "icalevents", "beautifulsoup4", "lxml" ] }, "feedparser": { "documentation": "https://github.com/custom-components/feedparser/blob/master/README.md", "version": "0.1.11", "requirements": [ "feedparser==6.0.10" ] } }, "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.116", "zigpy-deconz==0.23.1", "zigpy==0.64.1", "zigpy-xbee==0.20.1", "zigpy-zigate==0.12.0", "zigpy-znp==0.12.1", "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*" } ], "is_built_in": true }, "setup_times": { "null": { "setup": 4.615000216290355e-05 }, "a9ab1b4d0ace11eba4b1d55c76993d0a": { "wait_import_platforms": -0.00010962900705635548, "wait_base_component": -0.005424678995041177, "config_entry_setup": 13.913813433988253 } }, "data": { "ieee": "**REDACTED**", "nwk": 23774, "manufacturer": "_TZE204_kobbcyum", "model": "TS0601", "name": "_TZE204_kobbcyum TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "quirk_id": null, "manufacturer_code": 4098, "power_source": "Mains", "lqi": 255, "rssi": -37, "last_seen": "2024-06-18T14:25:59", "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": "_TZE204_kobbcyum", "model": "TS0601" }, "active_coordinator": false, "entities": [ { "entity_id": "sensor.cb_ev_charger_rssi", "name": "_TZE204_kobbcyum TS0601" }, { "entity_id": "sensor.cb_ev_charger_lqi", "name": "_TZE204_kobbcyum TS0601" }, { "entity_id": "update.cb_ev_charger_firmware", "name": "_TZE204_kobbcyum 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": "255" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x0A6C", "permit_joining": "Unknown", "depth": "15", "lqi": "102" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x4551", "permit_joining": "Unknown", "depth": "15", "lqi": "39" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x4AC0", "permit_joining": "Unknown", "depth": "15", "lqi": "120" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x4B85", "permit_joining": "Unknown", "depth": "15", "lqi": "92" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x4F25", "permit_joining": "Unknown", "depth": "15", "lqi": "129" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x51D1", "permit_joining": "Unknown", "depth": "15", "lqi": "197" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x56EF", "permit_joining": "Unknown", "depth": "15", "lqi": "124" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x5A2B", "permit_joining": "Unknown", "depth": "15", "lqi": "102" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x5F2F", "permit_joining": "Unknown", "depth": "15", "lqi": "140" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x60F6", "permit_joining": "Unknown", "depth": "15", "lqi": "131" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x64F1", "permit_joining": "Unknown", "depth": "15", "lqi": "105" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x780F", "permit_joining": "Unknown", "depth": "15", "lqi": "156" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x7E73", "permit_joining": "Unknown", "depth": "15", "lqi": "104" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x8487", "permit_joining": "Unknown", "depth": "15", "lqi": "99" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x87B4", "permit_joining": "Unknown", "depth": "15", "lqi": "103" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x8DDB", "permit_joining": "Unknown", "depth": "15", "lqi": "131" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x9068", "permit_joining": "Unknown", "depth": "15", "lqi": "114" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Parent", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x9C30", "permit_joining": "Unknown", "depth": "15", "lqi": "120" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xA3D0", "permit_joining": "Unknown", "depth": "15", "lqi": "152" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xB6B5", "permit_joining": "Unknown", "depth": "15", "lqi": "125" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xC808", "permit_joining": "Unknown", "depth": "15", "lqi": "176" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xDE33", "permit_joining": "Unknown", "depth": "15", "lqi": "235" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xF113", "permit_joining": "Unknown", "depth": "15", "lqi": "123" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xF19A", "permit_joining": "Unknown", "depth": "15", "lqi": "168" }, { "device_type": "Router", "rx_on_when_idle": "On", "relationship": "Sibling", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0xF857", "permit_joining": "Unknown", "depth": "15", "lqi": "100" }, { "device_type": "EndDevice", "rx_on_when_idle": "Off", "relationship": "Child", "extended_pan_id": "**REDACTED**", "ieee": "**REDACTED**", "nwk": "0x32F6", "permit_joining": "NotAccepting", "depth": "2", "lqi": "94" } ], "routes": [ { "dest_nwk": "0x0000", "route_status": "Active", "memory_constrained": false, "many_to_one": true, "route_record_required": false, "next_hop": "0x0000" }, { "dest_nwk": "0x8487", "route_status": "Active", "memory_constrained": false, "many_to_one": false, "route_record_required": false, "next_hop": "0x8487" }, { "dest_nwk": "0xACBB", "route_status": "Active", "memory_constrained": false, "many_to_one": false, "route_record_required": false, "next_hop": "0x51D1" } ], "endpoint_names": [ { "name": "SMART_PLUG" } ], "user_given_name": "CB - Ev Charger", "device_reg_id": "d6eb4ce41057e79a51b9c374ae896cf1", "area_id": "garage", "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": 70 }, "0x0003": { "attribute_name": "hw_version", "value": 1 }, "0x0004": { "attribute_name": "manufacturer", "value": "_TZE204_kobbcyum" }, "0x0005": { "attribute_name": "model", "value": "TS0601" }, "0x0007": { "attribute_name": "power_source", "value": 1 }, "0xfffe": { "attribute_name": "reporting_status", "value": 0 }, "0x0000": { "attribute_name": "zcl_version", "value": 3 } }, "unsupported_attributes": { "0x4000": { "attribute_name": "sw_build_id" }, "0x0008": { "attribute_name": "generic_device_class" }, "0x000a": { "attribute_name": "product_code" } } }, "0x0004": { "endpoint_attribute": "groups", "attributes": { "0x0000": { "attribute_name": "name_support", "value": 0 } }, "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": 70 } }, "unsupported_attributes": { "0x0002": { "attribute_name": "current_file_version" } } }, "0x000a": { "endpoint_attribute": "time", "attributes": {}, "unsupported_attributes": { "0x0007": { "attribute_name": "local_time" } } } } } } } } ```

Logs

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

Custom quirk

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

Additional information

No response

meremortals70 commented 2 weeks ago

Just trying to raise awareness on this, anyone had a chance to take a peek please?

meremortals70 commented 1 week ago

Just keeping this active so the bot doesn’t delete it.

I would really like some help in adding this to ZHA please?