diff --git a/tests/common.py b/tests/common.py index 38568b998..a922009ab 100644 --- a/tests/common.py +++ b/tests/common.py @@ -8,6 +8,7 @@ import json import logging import pathlib +import re import time from typing import Any from unittest.mock import AsyncMock @@ -683,12 +684,34 @@ def create_mock_zigpy_device( return device +# Types whose `repr` is a bytes literal +JSON_BYTES_TYPES = frozenset( + { + "", + "", + ".LimitedLVBytes'>", + "", + "", + } +) +JSON_ARRAY_TYPE = "" +ARRAY_REPR_REGEX = re.compile(r"Array\(type=\w+, value=(?P\[.*\])\)") + + def decode_json_value(value: Any) -> Any: """Decode a value encoded by Home Assistant diagnostics or `ZhaJsonEncoder`.""" - if isinstance(value, dict) and value.keys() == {"__type", "repr"}: + if not (isinstance(value, dict) and value.keys() == {"__type", "repr"}): + return value + + if value["__type"] in JSON_BYTES_TYPES: return ast.literal_eval(value["repr"]) - return value + if value["__type"] == JSON_ARRAY_TYPE: + # The element type is lost, only the elements can be recovered + match = ARRAY_REPR_REGEX.fullmatch(value["repr"]) + return ast.literal_eval(match.group("value")) + + raise ValueError(f"Cannot decode JSON value: {value!r}") class ZhaJsonEncoder(json.JSONEncoder): diff --git a/tests/data/devices/a89g12c-arteco.json b/tests/data/devices/a89g12c-arteco.json new file mode 100644 index 000000000..2caa45174 --- /dev/null +++ b/tests/data/devices/a89g12c-arteco.json @@ -0,0 +1,320 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:34:84:4b:90", + "nwk": "0xC88F", + "manufacturer": "A89G12C", + "model": "Arteco", + "friendly_manufacturer": "A89G12C", + "friendly_model": "Arteco", + "name": "A89G12C Arteco", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 160, + "rssi": -60, + "last_seen": "2026-07-17T06:47:06.492194+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "A89G12C" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Arteco" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 186 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2690 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "A89G12C", + "model": "Arteco", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0xef00", + "0x0402", + "0x0405", + "0x0001" + ], + "output_clusters": [ + "0x0003", + "0xef00", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 160, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -60, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 93.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.9, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:34:84:4b:90-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:34:84:4b:90", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "%" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/adeo-ldsenk08-0x21040006.json b/tests/data/devices/adeo-ldsenk08-0x21040006.json new file mode 100644 index 000000000..53193a5d6 --- /dev/null +++ b/tests/data/devices/adeo-ldsenk08-0x21040006.json @@ -0,0 +1,381 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:62:fa:cd:ab", + "nwk": "0x9775", + "manufacturer": "ADEO", + "model": "LDSENK08", + "friendly_manufacturer": "ADEO", + "friendly_model": "LDSENK08", + "name": "ADEO LDSENK08", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4727, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-09-30T12:48:55.685173+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4727, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "ADEO" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LDSENK08" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0013", + "name": "current_zone_sensitivity_level", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0012", + "name": "num_zone_sensitivity_levels_supported", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 21 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 553910278 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "ADEO", + "model": "LDSENK08", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4727, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0500", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 1, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:fa:cd:ab-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:fa:cd:ab", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x21040006", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aeotec-zga002-0x00000106.json b/tests/data/devices/aeotec-zga002-0x00000106.json new file mode 100644 index 000000000..2f6abb10a --- /dev/null +++ b/tests/data/devices/aeotec-zga002-0x00000106.json @@ -0,0 +1,1296 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "nwk": "0x4509", + "manufacturer": "AEOTEC", + "model": "ZGA002", + "friendly_manufacturer": "Aeotec", + "friendly_model": "Pico Switch", + "name": "Aeotec Pico Switch", + "quirk_applied": true, + "quirk_class": "zhaquirks.aeotec.pico_switch:(AEOTEC / ZGA002)", + "exposes_features": [], + "manufacturer_code": 4880, + "power_source": "Mains", + "lqi": 255, + "rssi": -32, + "last_seen": "2026-07-15T00:25:54.147824+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4880, + "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": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "AEOTEC" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZGA002" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 34 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 171 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 60 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 1219 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfd01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfd02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 262 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_SCENE_CONTROLLER", + "id": 2096 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfd00", + "endpoint_attribute": "aeotec_switch_type_config", + "attributes": [ + { + "id": "0x0011", + "name": "controls", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0010", + "name": "switch_actions", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "switch_type", + "zcl_type": "enum8", + "value": 1 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_SCENE_CONTROLLER", + "id": 2096 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xfd00", + "endpoint_attribute": "aeotec_switch_type_config", + "attributes": [ + { + "id": "0x0011", + "name": "controls", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0010", + "name": "switch_actions", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "switch_type", + "zcl_type": "enum8", + "value": 1 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "AEOTEC", + "model": "ZGA002", + "node_desc": { + "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": 4880, + "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": "0x0002", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0009", + "0x0702", + "0x0b04", + "0xfd01", + "0xfd02" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0830", + "input_clusters": [ + "0x0000", + "0x0003", + "0x1000", + "0xfd00" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0830", + "input_clusters": [ + "0x0000", + "0x0003", + "0xfd00" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "S1 switch actions", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-2-switch_actions", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_actions_id", + "translation_placeholders": { + "id": "S1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "Follow", + "enum": "AeotecSwitchActions", + "options": [ + "Follow", + "Invert", + "Toggle" + ] + }, + { + "fallback_name": "S1 switch type", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-2-switch_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_type_id", + "translation_placeholders": { + "id": "S1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "Momentary", + "enum": "AeotecSwitchType", + "options": [ + "Toggle", + "Momentary", + "Auto Detect" + ] + }, + { + "fallback_name": "S2 switch actions", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-3-switch_actions", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_actions_id", + "translation_placeholders": { + "id": "S2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_option": "Toggle", + "enum": "AeotecSwitchActions", + "options": [ + "Follow", + "Invert", + "Toggle" + ] + }, + { + "fallback_name": "S2 switch type", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-3-switch_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_type_id", + "translation_placeholders": { + "id": "S2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_option": "Momentary", + "enum": "AeotecSwitchType", + "options": [ + "Toggle", + "Momentary", + "Auto Detect" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -32, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.34, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 60.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 121.9, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "S1 local control", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-2-controls", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "local_control_id", + "translation_placeholders": { + "id": "S1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "controls", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "S2 local control", + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-3-controls", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "local_control_id", + "translation_placeholders": { + "id": "S2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "controls", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:1d:eb:0b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:1d:eb:0b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000106", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aeotec-zga004-0x00000108.json b/tests/data/devices/aeotec-zga004-0x00000108.json new file mode 100644 index 000000000..2dd69d5f8 --- /dev/null +++ b/tests/data/devices/aeotec-zga004-0x00000108.json @@ -0,0 +1,864 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3a:bc:09:e8", + "nwk": "0x9BAC", + "manufacturer": "AEOTEC", + "model": "ZGA004", + "friendly_manufacturer": "AEOTEC", + "friendly_model": "ZGA004", + "name": "AEOTEC ZGA004", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4880, + "power_source": "Mains", + "lqi": 236, + "rssi": -41, + "last_seen": "2026-06-05T20:30:35.470905+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4880, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "AEOTEC" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZGA004" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 42 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 10 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 19 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "value": 1580 + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "value": 300 + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 8 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfd01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfd03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 264 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 10 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "value": 6000 + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "value": 300 + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 8 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 7 + } + ] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_CONTROLLER", + "id": 515 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_SCENE_CONTROLLER", + "id": 2096 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfd00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "5": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_SCENE_CONTROLLER", + "id": 2096 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xfd00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "AEOTEC", + "model": "ZGA004", + "node_desc": { + "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": 4880, + "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": "0x0202", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0009", + "0x0102", + "0xfd01", + "0xfd03" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0102" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0102" + ] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0830", + "input_clusters": [ + "0x0000", + "0x0003", + "0x1000", + "0xfd00" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0830", + "input_clusters": [ + "0x0000", + "0x0003", + "0xfd00" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "shade", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 81, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-2-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "blind", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_position": null, + "current_tilt_position": 0, + "is_opening": false, + "is_closing": false, + "is_closed": true, + "supported_features": 240 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 236, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -41, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.42, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Rollershade", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-2-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": "Tilt_blind_tilt_only", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-2-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:bc:09:e8-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:bc:09:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000108", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aoyan-ay-303z.json b/tests/data/devices/aoyan-ay-303z.json new file mode 100644 index 000000000..4e9ee4828 --- /dev/null +++ b/tests/data/devices/aoyan-ay-303z.json @@ -0,0 +1,327 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ce:66:3d:5b", + "nwk": "0xDA8B", + "manufacturer": "AOYAN ", + "model": "AY-303Z", + "friendly_manufacturer": "AOYAN ", + "friendly_model": "AY-303Z", + "name": "AOYAN AY-303Z", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-09-18T19:42:15.644419+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "AOYAN " + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "AY-303Z" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2380 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 1100 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "AOYAN ", + "model": "AY-303Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0xef00", + "0x0402", + "0x0405", + "0x0001" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 23.8, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ce:66:3d:5b-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ce:66:3d:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 11.0, + "suggested_display_precision": null, + "unit": "%" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-aqara-feeder-acn001-0x00002621.json b/tests/data/devices/aqara-aqara-feeder-acn001-0x00002621.json new file mode 100644 index 000000000..0f48f1564 --- /dev/null +++ b/tests/data/devices/aqara-aqara-feeder-acn001-0x00002621.json @@ -0,0 +1,353 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:0a:9b:ad:f5", + "nwk": "0xFA53", + "manufacturer": "Aqara", + "model": "aqara.feeder.acn001", + "friendly_manufacturer": "Aqara", + "friendly_model": "aqara.feeder.acn001", + "name": "Aqara aqara.feeder.acn001", + "quirk_applied": true, + "quirk_class": "zhaquirks.xiaomi.aqara.feeder_acn001:AqaraFeederAcn001", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 131, + "rssi": null, + "last_seen": "2026-09-29T15:12:55.117903+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "aqara.feeder.acn001" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "opple_cluster", + "attributes": [ + { + "id": "0x138f", + "name": "child_lock", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x138e", + "name": "disable_led_indicator", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x138d", + "name": "error_detected", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0xfff1", + "name": "feeder_attr", + "zcl_type": "octstr", + "value": { + "__type": "", + "repr": "b'\\x00\\x05G\\x08\\x00\\x08\\xc8 7F06000201,7F0B000201,7F14000200'" + } + }, + { + "id": "0x1388", + "name": "feeding", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x1390", + "name": "feeding_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x138a", + "name": "last_feeding_size", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x1389", + "name": "last_feeding_source", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x1392", + "name": "portion_weight", + "zcl_type": "uint8", + "value": 5 + }, + { + "id": "0x138b", + "name": "portions_dispensed", + "zcl_type": "uint16", + "value": 4 + }, + { + "id": "0x1391", + "name": "serving_size", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x138c", + "name": "weight_dispensed", + "zcl_type": "uint32", + "value": 20 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 9761 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "model": "aqara.feeder.acn001", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xfcc0" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:9b:ad:f5-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:9b:ad:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:9b:ad:f5-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:9b:ad:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 131, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:9b:ad:f5-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:9b:ad:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:9b:ad:f5-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:9b:ad:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00002621", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-airrtc-aeu001-0x00000a1e.json b/tests/data/devices/aqara-lumi-airrtc-aeu001-0x00000a1e.json new file mode 100644 index 000000000..4c082eca4 --- /dev/null +++ b/tests/data/devices/aqara-lumi-airrtc-aeu001-0x00000a1e.json @@ -0,0 +1,1179 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:71:24:74:6a", + "nwk": "0x8B1D", + "manufacturer": "Aqara", + "model": "lumi.airrtc.aeu001", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.airrtc.aeu001", + "name": "Aqara lumi.airrtc.aeu001", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 255, + "rssi": -39, + "last_seen": "2026-06-07T02:12:12.466950+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.airrtc.aeu001" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 100 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2201 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3500 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2600 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0023", + "name": "temp_setpoint_hold", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0024", + "name": "temp_setpoint_hold_duration", + "zcl_type": "uint16", + "value": 120 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": -1 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4700 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 159 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 2590 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.airrtc.aeu001", + "node_desc": { + "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": 4447, + "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": "0x0301", + "input_clusters": [ + "0xfcc0", + "0x0b04", + "0x0702", + "0x000c", + "0x0005", + "0x0004", + "0x0003", + "0x0006", + "0x0000", + "0x0405", + "0x0402", + "0x0201" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 22.01, + "outdoor_temperature": null, + "target_temperature": null, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "off", + "hvac_mode": "off", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 35.0, + "min_temp": 5.0, + "supported_features": 387, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat_cool", + "cool", + "heat" + ], + "sys_mode": "[0]/off", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2600, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 35.0, + "mode": "box", + "native_max_value": 1.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 35.0, + "native_min_value": 0.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -39, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -0.01, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 47.0, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "off", + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:24:74:6a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:24:74:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000a1e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-curtain-acn04-0x0000000f.json b/tests/data/devices/aqara-lumi-curtain-acn04-0x0000000f.json new file mode 100644 index 000000000..59186471b --- /dev/null +++ b/tests/data/devices/aqara-lumi-curtain-acn04-0x0000000f.json @@ -0,0 +1,402 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a4:d1:4f:84", + "nwk": "0x8783", + "manufacturer": "Aqara", + "model": "lumi.curtain.acn04", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.curtain.acn04", + "name": "Aqara lumi.curtain.acn04", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 149, + "rssi": null, + "last_seen": "2026-01-15T22:00:28.212244+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_CONTROLLER", + "id": 515 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.curtain.acn04" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 3 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 15 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.curtain.acn04", + "node_desc": { + "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": 4447, + "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": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0102", + "0xfcc0" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "shade", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 149, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Rollershade_two_motors", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:d1:4f:84-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:d1:4f:84", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000f", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-plug-aeu002-0x00000006.json b/tests/data/devices/aqara-lumi-plug-aeu002-0x00000006.json new file mode 100644 index 000000000..7c89435a2 --- /dev/null +++ b/tests/data/devices/aqara-lumi-plug-aeu002-0x00000006.json @@ -0,0 +1,1524 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "nwk": "0x29BC", + "manufacturer": "Aqara", + "model": "lumi.plug.aeu002", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.plug.aeu002", + "name": "Aqara lumi.plug.aeu002", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 255, + "rssi": -53, + "last_seen": "2026-06-07T02:09:01.176284+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "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": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 6 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.plug.aeu002" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 159 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 1 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 6 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 1 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.plug.aeu002", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0005", + "0x0004", + "0x0006", + "0x0b04", + "0xfcc0" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012", + "0x0005", + "0x0004", + "0x0006", + "0x0b04", + "0xfcc0" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0003", + "0x0000", + "0x0702", + "0x0012", + "0x0005", + "0x0004", + "0x0006", + "0x0b04", + "0xfcc0" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -53, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.1, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.1, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-3-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-3-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c8:d7:7b:e7-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c8:d7:7b:e7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000006", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-sensor-ht-agl001-0x00001029.json b/tests/data/devices/aqara-lumi-sensor-ht-agl001-0x00001029.json new file mode 100644 index 000000000..04c314279 --- /dev/null +++ b/tests/data/devices/aqara-lumi-sensor-ht-agl001-0x00001029.json @@ -0,0 +1,416 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e2:c8:b8:40", + "nwk": "0x0058", + "manufacturer": "Aqara", + "model": "lumi.sensor_ht.agl001", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.sensor_ht.agl001", + "name": "Aqara lumi.sensor_ht.agl001", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Battery or Unknown", + "lqi": 104, + "rssi": -74, + "last_seen": "2026-07-03T20:11:25.622927+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1036, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1036, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.sensor_ht.agl001" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2156 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4762 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4137 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.sensor_ht.agl001", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1036, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1036, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0012", + "0x0405", + "0x0402", + "0x0001", + "0x0003", + "0x0000", + "0xfcc0" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 104, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 1, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 21.56, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 47.62, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:c8:b8:40-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:c8:b8:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001029", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-sensor-occupy-agl1-0x0000001c.json b/tests/data/devices/aqara-lumi-sensor-occupy-agl1-0x0000001c.json new file mode 100644 index 000000000..e9e475f33 --- /dev/null +++ b/tests/data/devices/aqara-lumi-sensor-occupy-agl1-0x0000001c.json @@ -0,0 +1,527 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ca:86:17:4b", + "nwk": "0x3CE5", + "manufacturer": "aqara", + "model": "lumi.sensor_occupy.agl1", + "friendly_manufacturer": "Aqara", + "friendly_model": "Presence Sensor FP1E", + "name": "Aqara Presence Sensor FP1E", + "quirk_applied": true, + "quirk_class": "zhaquirks.xiaomi.aqara.motion_agl1:(aqara / lumi.sensor_occupy.agl1)", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": 212, + "rssi": -47, + "last_seen": "2026-02-12T16:11:30.508445+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 127, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 127, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "undefined_0xfff0", + "id": 65520 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 28 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.sensor_occupy.agl1" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 2100 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": "f0:74:bf:ff:fe:09:01:4d" + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "opple_cluster", + "attributes": [ + { + "id": "0x015b", + "name": "approach_distance", + "zcl_type": "uint32", + "value": 600 + }, + { + "id": "0x0160", + "name": "motion", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x015f", + "name": "motion_distance", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x010c", + "name": "motion_sensitivity", + "zcl_type": "uint8", + "value": 3 + }, + { + "id": "0x0142", + "name": "occupancy", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x00e8", + "name": "restart_device", + "zcl_type": "bool", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 28 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "aqara", + "model": "lumi.sensor_occupy.agl1", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 127, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 127, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0xfff0", + "input_clusters": [ + "0x0000", + "0x0003", + "0xfcc0" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Presence status reset", + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-reset_no_presence_status", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_no_presence_status", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_no_presence_status", + "attribute_value": 1 + }, + { + "fallback_name": "Restart device", + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-restart_device", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "restart_device", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "restart_device", + "attribute_value": 0 + } + ], + "number": [ + { + "fallback_name": "Approach distance", + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-approach_distance", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "approach_distance", + "translation_placeholders": null, + "device_class": "distance", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 6.0, + "mode": "auto", + "native_max_value": 6, + "native_min_value": 0, + "native_step": 0.1, + "native_unit_of_measurement": "m" + } + ], + "select": [ + { + "fallback_name": "Motion sensitivity", + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-motion_sensitivity", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "motion_sensitivity", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "High", + "enum": "AqaraMotionSensitivity", + "options": [ + "Low", + "Medium", + "High" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 212, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -47, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 21.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": "Motion distance", + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-motion_distance", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "motion_distance", + "translation_placeholders": null, + "device_class": "distance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "m" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:86:17:4b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:86:17:4b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000001c", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003422.json b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003422.json index 907772cdb..74498aaf3 100644 --- a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003422.json +++ b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003422.json @@ -136,13 +136,13 @@ "id": "0x0033", "name": "battery_quantity", "zcl_type": "uint8", - "unsupported": true + "value": 2 }, { "id": "0x0031", "name": "battery_size", "zcl_type": "enum8", - "unsupported": true + "value": 9 }, { "id": "0x0020", @@ -533,8 +533,8 @@ "native_value": 0.0, "suggested_display_precision": 0, "unit": "%", - "battery_size": null, - "battery_quantity": null, + "battery_size": "CR2450", + "battery_quantity": 2, "battery_voltage": null }, { diff --git a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003a29.json b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003a29.json index d1add6a05..1bb57a944 100644 --- a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003a29.json +++ b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x00003a29.json @@ -73,13 +73,13 @@ "id": "0x0033", "name": "battery_quantity", "zcl_type": "uint8", - "value": 1 + "value": 2 }, { "id": "0x0031", "name": "battery_size", "zcl_type": "enum8", - "value": 255 + "value": 9 }, { "id": "0x0020", @@ -302,8 +302,8 @@ "native_value": 100.0, "suggested_display_precision": 0, "unit": "%", - "battery_size": "Unknown", - "battery_quantity": 1, + "battery_size": "CR2450", + "battery_quantity": 2, "battery_voltage": 3.03 }, { diff --git a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x0000412a.json b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x0000412a.json index c3f06eeb6..d4ef905a3 100644 --- a/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x0000412a.json +++ b/tests/data/devices/aqara-lumi-sensor-occupy-agl8-0x0000412a.json @@ -73,13 +73,13 @@ "id": "0x0033", "name": "battery_quantity", "zcl_type": "uint8", - "value": 1 + "value": 2 }, { "id": "0x0031", "name": "battery_size", "zcl_type": "enum8", - "value": 255 + "value": 9 }, { "id": "0x0020", @@ -302,8 +302,8 @@ "native_value": 100.0, "suggested_display_precision": 0, "unit": "%", - "battery_size": "Unknown", - "battery_quantity": 1, + "battery_size": "CR2450", + "battery_quantity": 2, "battery_voltage": 0.32 }, { diff --git a/tests/data/devices/aqara-lumi-switch-aeu001-0x00000d25.json b/tests/data/devices/aqara-lumi-switch-aeu001-0x00000d25.json new file mode 100644 index 000000000..cf6a29315 --- /dev/null +++ b/tests/data/devices/aqara-lumi-switch-aeu001-0x00000d25.json @@ -0,0 +1,1611 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:7d:88:c3:e0", + "nwk": "0x5D49", + "manufacturer": "Aqara", + "model": "lumi.switch.aeu001", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.switch.aeu001", + "name": "Aqara lumi.switch.aeu001", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 100, + "rssi": -75, + "last_seen": "2026-01-19T09:25:50.840209+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "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": 260, + "device_type": { + "name": "COLOR_DIMMABLE_LIGHT", + "id": 258 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 37 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "20241106" + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "\u9ed8\u8ba4\u623f\u95f4" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.switch.aeu001" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "value": { + "__type": "", + "repr": "b''" + } + }, + { + "id": "0x000d", + "name": "serial_number", + "zcl_type": "string", + "value": "" + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 27 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x004a", + "name": "number_of_states", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x000e", + "name": "state_text", + "zcl_type": "unk", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 159 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0800", + "name": "ac_alarms_mask", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0004", + "name": "dst_end", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0005", + "name": "dst_shift", + "zcl_type": "int32", + "unsupported": true + }, + { + "id": "0x0003", + "name": "dst_start", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0008", + "name": "last_set_time", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x0007", + "name": "local_time", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0006", + "name": "standard_time", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "value": 809090157 + }, + { + "id": "0x0001", + "name": "time_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "time_zone", + "zcl_type": "int32", + "unsupported": true + }, + { + "id": "0x0009", + "name": "valid_until_time", + "zcl_type": "UTC", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 3365 + }, + { + "id": "0x0003", + "name": "current_zigbee_stack_version", + "zcl_type": "uint16", + "value": 27 + }, + { + "id": "0x0004", + "name": "downloaded_file_version", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x0005", + "name": "downloaded_zigbee_stack_version", + "zcl_type": "uint16", + "value": 27 + }, + { + "id": "0x0001", + "name": "file_offset", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x0008", + "name": "image_type_id", + "zcl_type": "uint16", + "value": 142 + }, + { + "id": "0x0006", + "name": "image_upgrade_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0007", + "name": "manufacturer_id", + "zcl_type": "uint16", + "value": 4447 + }, + { + "id": "0x0000", + "name": "upgrade_server_id", + "zcl_type": "EUI64", + "value": "00:00:00:00:00:00:00:00" + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "COLOR_DIMMABLE_LIGHT", + "id": 258 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x004a", + "name": "number_of_states", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x000e", + "name": "state_text", + "zcl_type": "unk", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "COLOR_DIMMABLE_LIGHT", + "id": 258 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x004a", + "name": "number_of_states", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "COLOR_DIMMABLE_LIGHT", + "id": 258 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x004a", + "name": "number_of_states", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "21": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.switch.aeu001", + "node_desc": { + "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": 4447, + "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": "0x0102", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0x0702", + "0x0b04", + "0xfcc0" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0102", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0xfcc0" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0102", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0012", + "0xfcc0" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0102", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0012", + "0xfcc0" + ], + "output_clusters": [] + }, + "21": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x000c" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -75, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:88:c3:e0-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:7d:88:c3:e0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000d25", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-switch-agl011-0x00001018.json b/tests/data/devices/aqara-lumi-switch-agl011-0x00001018.json new file mode 100644 index 000000000..1f9efe00e --- /dev/null +++ b/tests/data/devices/aqara-lumi-switch-agl011-0x00001018.json @@ -0,0 +1,1496 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:46:a1:7e:99", + "nwk": "0xF88D", + "manufacturer": "Aqara", + "model": "lumi.switch.agl011", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.switch.agl011", + "name": "Aqara lumi.switch.agl011", + "quirk_applied": true, + "quirk_class": "zhaquirks.xiaomi.aqara.switch_agl011:(Aqara / lumi.switch.agl011)", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 152, + "rssi": -62, + "last_seen": "2026-07-09T18:30:08.230796+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 24 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.switch.agl011" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 3200 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 2 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 159 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0.0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "opple_cluster", + "attributes": [ + { + "id": "0x00f0", + "name": "flip_indicator_light", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0203", + "name": "led_indicator", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0516", + "name": "max_brightness", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0515", + "name": "min_brightness", + "zcl_type": "uint8", + "value": 83 + }, + { + "id": "0x0004", + "name": "mode_switch", + "zcl_type": "uint16", + "value": 4 + }, + { + "id": "0x0200", + "name": "operation_mode", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x030a", + "name": "phase", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0517", + "name": "power_on_state", + "zcl_type": "uint8", + "value": 3 + }, + { + "id": "0x00f6", + "name": "reporting_interval", + "zcl_type": "uint16", + "value": 300 + }, + { + "id": "0x0234", + "name": "sensitivity", + "zcl_type": "uint16", + "value": 360 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4120 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "21": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + }, + "71": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "72": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.switch.agl011", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "21": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x000c" + ], + "output_clusters": [] + }, + "72": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0xfcc0" + ], + "output_clusters": [] + }, + "71": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0xfcc0" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0xfcc0" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0xfcc0" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0b04", + "0x0702", + "0x0012", + "0x0005", + "0x0004", + "0x0003", + "0x0000", + "0x0008", + "0x0006", + "0xfcc0" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-8-off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OffTransitionTimeConfigurationEntity", + "translation_key": "off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-8-on_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnTransitionTimeConfigurationEntity", + "translation_key": "on_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Maximum brightness", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-max_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "max_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "mode": "auto", + "native_max_value": 100, + "native_min_value": 1, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Minimum brightness", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-min_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "min_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 83, + "mode": "auto", + "native_max_value": 99, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Reporting interval", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-reporting_interval", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "reporting_interval", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 300, + "mode": "auto", + "native_max_value": 3600, + "native_min_value": 1, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Sensitivity", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-sensitivity", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "sensitivity", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 360, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 1, + "native_step": 1, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": "Mode switch", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-mode_switch", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "mode_switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Anti Flicker", + "enum": "ModeSwitch", + "options": [ + "Quick", + "Anti Flicker" + ] + }, + { + "fallback_name": "Operation mode", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-operation_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "operation_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Relay", + "enum": "OperationMode", + "options": [ + "Decoupled", + "Relay" + ] + }, + { + "fallback_name": "Phase", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-phase", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "phase", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Trailing", + "enum": "Phase", + "options": [ + "Leading", + "Trailing" + ] + }, + { + "fallback_name": "Power on state", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-power_on_state", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "power_on_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Inverted", + "enum": "PowerOnState", + "options": [ + "On", + "Previous", + "Off", + "Inverted" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 152, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 32.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": "Flip indicator light", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-flip_indicator_light", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "flip_indicator_light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "flip_indicator_light", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "LED indicator", + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-led_indicator", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "led_indicator", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "led_indicator", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:a1:7e:99-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:a1:7e:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001018", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/aqara-lumi-vibration-agl002-0x00000015.json b/tests/data/devices/aqara-lumi-vibration-agl002-0x00000015.json new file mode 100644 index 000000000..381635bc0 --- /dev/null +++ b/tests/data/devices/aqara-lumi-vibration-agl002-0x00000015.json @@ -0,0 +1,466 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:84:11:b2:cd", + "nwk": "0xA74F", + "manufacturer": "Aqara", + "model": "lumi.vibration.agl002", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.vibration.agl002", + "name": "Aqara lumi.vibration.agl002", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Battery or Unknown", + "lqi": 152, + "rssi": -62, + "last_seen": "2026-06-30T11:00:20.595953+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1034, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1034, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.vibration.agl002" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0101", + "endpoint_attribute": "door_lock", + "attributes": [ + { + "id": "0x0000", + "name": "lock_state", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 21 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.vibration.agl002", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1034, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1034, + "descriptor_capability_field": 0 + }, + "endpoints": { + "2": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x000c" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0101", + "0x000c", + "0x0006", + "0x0003", + "0x0000", + "0xfcc0" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "lock": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-257", + "migrate_unique_ids": [], + "platform": "lock", + "class_name": "DoorLock", + "translation_key": "door_lock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_locked": false + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 152, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:84:11:b2:cd-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:84:11:b2:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000015", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/bituo-technik-spm01x-0x0000000e.json b/tests/data/devices/bituo-technik-spm01x-0x0000000e.json new file mode 100644 index 000000000..13982a32b --- /dev/null +++ b/tests/data/devices/bituo-technik-spm01x-0x0000000e.json @@ -0,0 +1,933 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:42:27:1a:38", + "nwk": "0x6EE1", + "manufacturer": "BITUO TECHNIK", + "model": "SPM01X", + "friendly_manufacturer": "BITUO TECHNIK", + "friendly_model": "SPM01X", + "name": "BITUO TECHNIK SPM01X", + "quirk_applied": true, + "quirk_class": "zhaquirks.bituo.spm01:(BITUO TECHNIK / SPM01X)", + "exposes_features": [], + "manufacturer_code": 4630, + "power_source": "Mains", + "lqi": 140, + "rssi": -65, + "last_seen": "2026-06-22T22:25:35.847116+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4630, + "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": 260, + "device_type": { + "name": "undefined_0x0501", + "id": 1281 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 14 + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "01.00.14" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "BITUO TECHNIK" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SPM01X" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "003.00.13" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 5000 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "value": 1 + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 100 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "value": 1 + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 22650 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 14 + } + ] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "BITUO TECHNIK", + "model": "SPM01X", + "node_desc": { + "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": 4630, + "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": "0x0501", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc00" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0019", + "0xfc00" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset energy", + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-on", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "reset_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "on", + "args": [], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 140, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -65, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-1794-summation_received", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummationReceived", + "translation_key": "summation_received", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 226.5, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:27:1a:38-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:27:1a:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/bosch-rbsh-rth0-zb-eu-0x03096a90.json b/tests/data/devices/bosch-rbsh-rth0-zb-eu-0x03096a90.json new file mode 100644 index 000000000..26baee3e0 --- /dev/null +++ b/tests/data/devices/bosch-rbsh-rth0-zb-eu-0x03096a90.json @@ -0,0 +1,1265 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:28:a4:a4:f2", + "nwk": "0x7D40", + "manufacturer": "Bosch", + "model": "RBSH-RTH0-ZB-EU", + "friendly_manufacturer": "Bosch", + "friendly_model": "RBSH-RTH0-ZB-EU", + "name": "Bosch RBSH-RTH0-ZB-EU", + "quirk_applied": true, + "quirk_class": "zhaquirks.bosch.rbsh_rth0_zb_eu:(Bosch / RBSH-RTH0-ZB-EU)", + "exposes_features": [], + "manufacturer_code": 4617, + "power_source": "Mains", + "lqi": 240, + "rssi": -51, + "last_seen": "2026-10-05T19:39:22.768138+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4617, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Bosch" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "RBSH-RTH0-ZB-EU" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x4060", + "name": "actuator_type", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4043", + "name": "boost_heating", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 6 + }, + { + "id": "0x5000", + "name": "error_code", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4052", + "name": "external_temperature", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x4063", + "name": "heater_type", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4020", + "name": "heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2220 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2400 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 450 + }, + { + "id": "0x4007", + "name": "operating_mode", + "zcl_type": "enum8", + "value": 5 + }, + { + "id": "0x4051", + "name": "outdoor_temperature", + "zcl_type": "int16", + "value": -32768 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x4062", + "name": "sensor_connection", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x4022", + "name": "valve_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4042", + "name": "window_open", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x403b", + "name": "display_brightness", + "zcl_type": "enum8", + "value": 7 + }, + { + "id": "0x403a", + "name": "display_on_time", + "zcl_type": "enum8", + "value": 5 + }, + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "schedule_programming_visibility", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "temperature_display_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4033", + "name": "valve_status_led", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0002", + "name": "max_measured_value", + "zcl_type": "uint16", + "value": 5679 + }, + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 5338 + }, + { + "id": "0x0001", + "name": "min_measured_value", + "zcl_type": "uint16", + "value": 4971 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfca1", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 50948752 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Bosch", + "model": "RBSH-RTH0-ZB-EU", + "node_desc": { + "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": 4617, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0x0201", + "0x0204", + "0x0405", + "0x0b05", + "0xfca1" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": "Valve state", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-valve_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "valve_state", + "translation_placeholders": null, + "device_class": "running", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "valve_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 22.2, + "outdoor_temperature": -327.68, + "target_temperature": null, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "off", + "hvac_mode": "off", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "cool", + "heat", + "off" + ], + "sys_mode": "[0]/off", + "occupancy": 0, + "occupied_cooling_setpoint": 2400, + "occupied_heating_setpoint": 450, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "BoschThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 5.0, + "native_min_value": -5.0, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 327.67, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": -273.15000000000003, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Display brightness", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-display_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "display_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 7, + "mode": "auto", + "native_max_value": 10, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Display on-time", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-display_on_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "display_on_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5, + "mode": "auto", + "native_max_value": 30, + "native_min_value": 5, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Max cool setpoint limit", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-max_cool_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "max_cool_setpoint_limit", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "auto", + "native_max_value": 3000, + "native_min_value": -500, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Min cool setpoint limit", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-min_cool_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "min_cool_setpoint_limit", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "auto", + "native_max_value": 3000, + "native_min_value": -500, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Outdoor temperature", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-outdoor_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "outdoor_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -327.68, + "mode": "auto", + "native_max_value": 32767, + "native_min_value": -32768, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + }, + { + "fallback_name": "Actuator type", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-actuator_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "actuator_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "NormallyClosed", + "enum": "BoschActuatorType", + "options": [ + "NormallyClosed", + "NormallyOpen" + ] + }, + { + "fallback_name": "Heater type", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-heater_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "heater_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "UnderfloorHeating", + "enum": "BoschHeaterType", + "options": [ + "UnderfloorHeating", + "Boiler", + "Radiator", + "CentralHeating" + ] + }, + { + "fallback_name": "Operating mode", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-operating_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "operating_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Pause", + "enum": "BoschOperatingMode", + "options": [ + "Schedule", + "Manual", + "Pause" + ] + }, + { + "fallback_name": "Sensor connection", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-sensor_connection", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "sensor_connection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "NotUsed", + "enum": "BoschSensorConnection", + "options": [ + "NotUsed", + "WithoutRegulation", + "WithRegulation" + ] + }, + { + "fallback_name": "Temperature display mode", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-temperature_display_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "temperature_display_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Metric", + "enum": "TemperatureDisplayMode", + "options": [ + "Metric", + "Imperial" + ] + }, + { + "fallback_name": "Valve status LED", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-valve_status_led", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "valve_status_led", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Normal", + "enum": "BoschValveStatusLed", + "options": [ + "Off", + "Normal", + "On" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 240, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -51, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 53.38, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "off", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-513-setpoint_change_source", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSource", + "translation_key": "setpoint_change_source", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "External", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Manual", + "Schedule", + "External" + ] + }, + { + "fallback_name": "Error code", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-error_code", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "error_code", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "External temperature", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-external_temperature", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "external_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": "Heating demand", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": "Local temperature", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-local_temperature", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "local_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 22.2, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Boost heating", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-boost_heating", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "boost_heating", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "boost_heating", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Window open", + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-window_open", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "window_open", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "window_open", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:a4:a4:f2-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:a4:a4:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x03096a90", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/bosch-rbsh-sd-zb-eu-0x11106780.json b/tests/data/devices/bosch-rbsh-sd-zb-eu-0x11106780.json new file mode 100644 index 000000000..ed84af270 --- /dev/null +++ b/tests/data/devices/bosch-rbsh-sd-zb-eu-0x11106780.json @@ -0,0 +1,375 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:10:76:fe:3a", + "nwk": "0xA42B", + "manufacturer": "Bosch", + "model": "RBSH-SD-ZB-EU", + "friendly_manufacturer": "Bosch", + "friendly_model": "RBSH-SD-ZB-EU", + "name": "Bosch RBSH-SD-ZB-EU", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4617, + "power_source": "Battery or Unknown", + "lqi": 148, + "rssi": -74, + "last_seen": "2026-05-27T14:19:22.981545+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4617, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Bosch" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "RBSH-SD-ZB-EU" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0000", + "name": "checkin_interval", + "zcl_type": "uint32", + "value": 13200 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 286287744 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Bosch", + "model": "RBSH-SD-ZB-EU", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4617, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0500", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 148, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Built in", + "battery_quantity": 1, + "battery_voltage": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:10:76:fe:3a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:10:76:fe:3a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x11106780", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/bosch-st-champion-0x000f4633.json b/tests/data/devices/bosch-st-champion-0x000f4633.json new file mode 100644 index 000000000..3c6522dd3 --- /dev/null +++ b/tests/data/devices/bosch-st-champion-0x000f4633.json @@ -0,0 +1,999 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b6:4d:69:98", + "nwk": "0x1234", + "manufacturer": "BOSCH ST", + "model": "Champion", + "friendly_manufacturer": "BOSCH ST", + "friendly_model": "Champion", + "name": "BOSCH ST Champion", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4617, + "power_source": "Battery or Unknown", + "lqi": 184, + "rssi": -54, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4617, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 0, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0060", + "id": 96 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "BOSCH ST" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Champion" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe004", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0061", + "id": 97 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe004", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "undefined_0xf000", + "id": 61440 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xe002", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0062", + "id": 98 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 6 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 79 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + } + ] + }, + "5": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2671 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "6": { + "profile_id": 260, + "device_type": { + "name": "LIGHT_SENSOR", + "id": 262 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 154 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "7": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 1001011 + } + ] + } + ] + }, + "8": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x03f4", + "id": 1012 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0403", + "endpoint_attribute": "pressure", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 31306 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "9": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x03f0", + "id": 1008 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 3965 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "10": { + "profile_id": 260, + "device_type": { + "name": "undefined_0xf002", + "id": 61442 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xe005", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "11": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x03f2", + "id": 1010 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x040c", + "endpoint_attribute": "carbon_monoxide_concentration", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "single", + "value": 0.0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "12": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x03f3", + "id": 1011 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xe003", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe006", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe007", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "BOSCH ST", + "model": "Champion", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4617, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 0, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0060", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0009", + "0xe000", + "0xe004" + ], + "output_clusters": [ + "0x0003", + "0x0009" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0061", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0009", + "0xe001", + "0xe004" + ], + "output_clusters": [ + "0x0003", + "0x0009" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0xf000", + "input_clusters": [ + "0x0000", + "0x0003", + "0xe002" + ], + "output_clusters": [ + "0x0003" + ] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0062", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x0009" + ], + "output_clusters": [ + "0x0003", + "0x0009" + ] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402" + ], + "output_clusters": [ + "0x0003" + ] + }, + "6": { + "profile_id": "0x0104", + "device_type": "0x0106", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0400" + ], + "output_clusters": [ + "0x0003" + ] + }, + "7": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0020" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "8": { + "profile_id": "0x0104", + "device_type": "0x03f4", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0403" + ], + "output_clusters": [ + "0x0003" + ] + }, + "9": { + "profile_id": "0x0104", + "device_type": "0x03f0", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0405" + ], + "output_clusters": [ + "0x0003" + ] + }, + "10": { + "profile_id": "0x0104", + "device_type": "0xf002", + "input_clusters": [ + "0x0000", + "0x0003", + "0xe005" + ], + "output_clusters": [ + "0x0003" + ] + }, + "11": { + "profile_id": "0x0104", + "device_type": "0x03f2", + "input_clusters": [ + "0x0000", + "0x0003", + "0x040c" + ], + "output_clusters": [ + "0x0003" + ] + }, + "12": { + "profile_id": "0x0104", + "device_type": "0x03f3", + "input_clusters": [ + "0x0000", + "0x0003", + "0xe003", + "0xe006", + "0xe007" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 184, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -54, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-11-1036", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonMonoxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_monoxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 0, + "unit": "ppm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-4-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 6, + "battery_voltage": 7.9 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-5-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 5, + "available": true, + "group_id": null, + "native_value": 26.71, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-6-1024", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Illuminance", + "translation_key": null, + "translation_placeholders": null, + "device_class": "illuminance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 6, + "available": true, + "group_id": null, + "native_value": 1, + "suggested_display_precision": null, + "unit": "lx" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-8-1027", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Pressure", + "translation_key": null, + "translation_placeholders": null, + "device_class": "pressure", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 8, + "available": true, + "group_id": null, + "native_value": 31306, + "suggested_display_precision": 0, + "unit": "hPa" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-9-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 9, + "available": true, + "group_id": null, + "native_value": 39.65, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:4d:69:98-7-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:4d:69:98", + "endpoint_id": 7, + "available": true, + "group_id": null, + "installed_version": "0x000f4633", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1p-dim-0x0000000c.json b/tests/data/devices/candeo-c-zb-rd1p-dim-0x0000000c.json new file mode 100644 index 000000000..2d582ce19 --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1p-dim-0x0000000c.json @@ -0,0 +1,1016 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4f:c6:8b:63", + "nwk": "0xF6AC", + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-DIM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1P-DIM", + "name": "Candeo C-ZB-RD1P-DIM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-10-01T10:08:50.461597+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1P-DIM" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23760 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 12 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-DIM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-8-default_move_rate", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "DefaultMoveRateConfigurationEntity", + "translation_key": "default_move_rate", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 85, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-8-off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OffTransitionTimeConfigurationEntity", + "translation_key": "off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-8-on_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnTransitionTimeConfigurationEntity", + "translation_key": "on_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 237.6, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:c6:8b:63-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:c6:8b:63", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000c", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1p-dpm.json b/tests/data/devices/candeo-c-zb-rd1p-dpm.json new file mode 100644 index 000000000..870343455 --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1p-dpm.json @@ -0,0 +1,1065 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:16:e7:8a:44", + "nwk": "0xF6AC", + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-DPM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1P-DPM", + "name": "Candeo C-ZB-RD1P-DPM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1P-DPM)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-10-01T10:12:48.209544+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1P-DPM" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 25380 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-DPM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-8-default_move_rate", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "DefaultMoveRateConfigurationEntity", + "translation_key": "default_move_rate", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 85, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-8-off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OffTransitionTimeConfigurationEntity", + "translation_key": "off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-8-on_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnTransitionTimeConfigurationEntity", + "translation_key": "on_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 253.8, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:e7:8a:44-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:e7:8a:44", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1p-rem-0x0000000c.json b/tests/data/devices/candeo-c-zb-rd1p-rem-0x0000000c.json new file mode 100644 index 000000000..85abdcd9c --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1p-rem-0x0000000c.json @@ -0,0 +1,746 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4e:e2:53:64", + "nwk": "0xF6AC", + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-REM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1P-REM", + "name": "Candeo C-ZB-RD1P-REM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1P-REM)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 184, + "rssi": -54, + "last_seen": "2026-10-01T10:10:44.426456+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1P-REM" + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 26 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 16 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 25355 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 12 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1P-REM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 184, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -54, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.16, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 253.55, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:e2:53:64-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:e2:53:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000c", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1pv2-dim-0x00000016.json b/tests/data/devices/candeo-c-zb-rd1pv2-dim-0x00000016.json new file mode 100644 index 000000000..1638b30ec --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1pv2-dim-0x00000016.json @@ -0,0 +1,1094 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:1f:92:2b:77", + "nwk": "0xE7B9", + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-DIM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1Pv2-DIM", + "name": "Candeo C-ZB-RD1Pv2-DIM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1Pv2-DIM)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 192, + "rssi": -52, + "last_seen": "2026-09-18T14:18:11.946198+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1Pv2-DIM" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 31 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 19 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 26340 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 22 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-DIM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-8-default_move_rate", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "DefaultMoveRateConfigurationEntity", + "translation_key": "default_move_rate", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 85, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-8-off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OffTransitionTimeConfigurationEntity", + "translation_key": "off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-8-on_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnTransitionTimeConfigurationEntity", + "translation_key": "on_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 192, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -52, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 31.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.19, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 263.4, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": "Extra button commands", + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-extra_button_commands", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "extra_button_commands", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "extra_button_commands", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1f:92:2b:77-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1f:92:2b:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000016", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1pv2-dpm.json b/tests/data/devices/candeo-c-zb-rd1pv2-dpm.json new file mode 100644 index 000000000..db2b77e0a --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1pv2-dpm.json @@ -0,0 +1,1114 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3f:c0:37:f5", + "nwk": "0xE7B9", + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-DPM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1Pv2-DPM", + "name": "Candeo C-ZB-RD1Pv2-DPM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1P-DPM)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 192, + "rssi": -52, + "last_seen": "2026-09-18T14:29:14.847789+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1Pv2-DPM" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 24290 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-DPM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-8-default_move_rate", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "DefaultMoveRateConfigurationEntity", + "translation_key": "default_move_rate", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 85, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-8-off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OffTransitionTimeConfigurationEntity", + "translation_key": "off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-8-on_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnTransitionTimeConfigurationEntity", + "translation_key": "on_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 10, + "mode": "auto", + "native_max_value": 65534, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 192, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -52, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 242.9, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3f:c0:37:f5-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3f:c0:37:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/candeo-c-zb-rd1pv2-rem.json b/tests/data/devices/candeo-c-zb-rd1pv2-rem.json new file mode 100644 index 000000000..45d924d75 --- /dev/null +++ b/tests/data/devices/candeo-c-zb-rd1pv2-rem.json @@ -0,0 +1,822 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:5f:10:f8:28", + "nwk": "0xE7B9", + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-REM", + "friendly_manufacturer": "Candeo", + "friendly_model": "C-ZB-RD1Pv2-REM", + "name": "Candeo C-ZB-RD1Pv2-REM", + "quirk_applied": true, + "quirk_class": "zhaquirks.candeo.rotary_dimmer_switches:(Candeo / C-ZB-RD1P-REM)", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 192, + "rssi": -52, + "last_seen": "2026-09-18T14:24:50.430167+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Candeo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "C-ZB-RD1Pv2-REM" + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 26 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 18 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 24195 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Candeo", + "model": "C-ZB-RD1Pv2-REM", + "node_desc": { + "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": 4714, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0702", + "0x0b04", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-3-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 3, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 192, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -52, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.18, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 241.95, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5f:10:f8:28-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5f:10:f8:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/centralite-3300-0x1f075310.json b/tests/data/devices/centralite-3300-0x1f075310.json index 81c930353..a40883bba 100644 --- a/tests/data/devices/centralite-3300-0x1f075310.json +++ b/tests/data/devices/centralite-3300-0x1f075310.json @@ -75,12 +75,6 @@ "zcl_type": "uint8", "unsupported": true }, - { - "id": "0x0021", - "name": "battery_percentage_remaining", - "zcl_type": "uint8", - "unsupported": true - }, { "id": "0x0033", "name": "battery_quantity", diff --git a/tests/data/devices/ctm-lyng-ax-valve-controller-0x0000002a.json b/tests/data/devices/ctm-lyng-ax-valve-controller-0x0000002a.json new file mode 100644 index 000000000..73f8d727a --- /dev/null +++ b/tests/data/devices/ctm-lyng-ax-valve-controller-0x0000002a.json @@ -0,0 +1,398 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:21:bb:ce:df", + "nwk": "0x9C3D", + "manufacturer": "CTM Lyng", + "model": "AX Valve Controller", + "friendly_manufacturer": "CTM Lyng", + "friendly_model": "AX Valve Controller", + "name": "CTM Lyng AX Valve Controller", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4919, + "power_source": "Mains", + "lqi": 232, + "rssi": -53, + "last_seen": "2026-09-10T07:04:44.981170+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4919, + "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": 260, + "device_type": { + "name": "undefined_0xffff", + "id": 65535 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "CTM Lyng" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "AX Valve Controller" + }, + { + "id": "0x000d", + "name": "serial_number", + "zcl_type": "string", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 42 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 42 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "CTM Lyng", + "model": "AX Valve Controller", + "node_desc": { + "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": 4919, + "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": "0xffff", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0006", + "0x1000" + ], + "output_clusters": [ + "0x0019", + "0x0500" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0500" + ], + "output_clusters": [ + "0x0003", + "0x0500" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-2-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "moisture", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -53, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:21:bb:ce:df-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:21:bb:ce:df", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000002a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ctm-lyng-mkomfy-0x0a006a30.json b/tests/data/devices/ctm-lyng-mkomfy-0x0a006a30.json new file mode 100644 index 000000000..31d14c32d --- /dev/null +++ b/tests/data/devices/ctm-lyng-mkomfy-0x0a006a30.json @@ -0,0 +1,346 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9d:16:43:88", + "nwk": "0x7703", + "manufacturer": "CTM Lyng", + "model": "mKomfy", + "friendly_manufacturer": "CTM Lyng", + "friendly_model": "mKomfy", + "name": "CTM Lyng mKomfy", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4919, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -30, + "last_seen": "2026-07-31T08:48:16.876797+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4919, + "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": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "CTM Lyng" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "mKomfy" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 168 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2500 + } + ] + }, + { + "cluster_id": "0xfeed", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xffc9", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 167799344 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "CTM Lyng", + "model": "mKomfy", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4919, + "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": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0402", + "0xfeed", + "0xffc9" + ], + "output_clusters": [ + "0x0003", + "0x0019", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -30, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 84.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 25.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:16:43:88-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:16:43:88", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0a006a30", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ctm-lyng-tavlerele-25a-0x10006a30.json b/tests/data/devices/ctm-lyng-tavlerele-25a-0x10006a30.json new file mode 100644 index 000000000..b2cdf2eb1 --- /dev/null +++ b/tests/data/devices/ctm-lyng-tavlerele-25a-0x10006a30.json @@ -0,0 +1,959 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:de:0b:d2:cc", + "nwk": "0xDA11", + "manufacturer": "CTM Lyng", + "model": "Tavlerele 25A", + "friendly_manufacturer": "CTM Lyng", + "friendly_model": "Tavlerele 25A", + "name": "CTM Lyng Tavlerele 25A", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4919, + "power_source": "Mains", + "lqi": 220, + "rssi": -56, + "last_seen": "2026-07-31T09:10:53.549486+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4919, + "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": 260, + "device_type": { + "name": "MAIN_POWER_OUTLET", + "id": 9 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "CTM Lyng" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Tavlerele 25A" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 42 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 6982 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50005 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "value": 50165 + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "value": 2387 + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 100 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "value": 1008 + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23900 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "value": 24356 + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfeed", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 268462640 + } + ] + }, + { + "cluster_id": "0xffc9", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "CTM Lyng", + "model": "Tavlerele 25A", + "node_desc": { + "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": 4919, + "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": "0x0009", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0009", + "0x0702", + "0x0b04", + "0x1000", + "0xfeed" + ], + "output_clusters": [ + "0x0003", + "0x0019", + "0xffc9" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 220, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 6.982, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.42, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "", + "max_value": 2387.0, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.005, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "", + "max_value": 50.165, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.01, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "", + "max_value": 10.08, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 239.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "", + "max_value": 243.56, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:de:0b:d2:cc-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:de:0b:d2:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x10006a30", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/develco-products-a-s-hmszb-110-0x00040001.json b/tests/data/devices/develco-products-a-s-hmszb-110-0x00040001.json new file mode 100644 index 000000000..1a513f39d --- /dev/null +++ b/tests/data/devices/develco-products-a-s-hmszb-110-0x00040001.json @@ -0,0 +1,429 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "nwk": "0xD94F", + "manufacturer": "Develco Products A/S", + "model": "HMSZB-110", + "friendly_manufacturer": "Develco Products A/S", + "friendly_model": "HMSZB-110", + "name": "Develco Products A/S HMSZB-110", + "quirk_applied": true, + "quirk_class": "zhaquirks.develco.humidity:(frient A/S / HMSZB-120)", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -22, + "last_seen": "2026-03-30T10:12:11.061314+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "38": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Develco Products A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HMSZB-110" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 57 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2710 + }, + { + "id": "0x0003", + "name": "tolerance", + "zcl_type": "uint16", + "value": 50 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 3000 + }, + { + "id": "0x0003", + "name": "tolerance", + "zcl_type": "uint16", + "value": 350 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 262145 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Develco Products A/S", + "model": "HMSZB-110", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0003", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "38": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0405" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": 38, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -22, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": 38, + "available": true, + "group_id": null, + "native_value": 28.5, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 2, + "battery_voltage": 2.5 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": 38, + "available": true, + "group_id": null, + "native_value": 27.1, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": 38, + "available": true, + "group_id": null, + "native_value": 30.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e2:7f:6e:4f-38-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e2:7f:6e:4f", + "endpoint_id": 38, + "available": true, + "group_id": null, + "installed_version": "0x00040001", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/devi-devi-c-0x00000300.json b/tests/data/devices/devi-devi-c-0x00000300.json new file mode 100644 index 000000000..443fdca1c --- /dev/null +++ b/tests/data/devices/devi-devi-c-0x00000300.json @@ -0,0 +1,675 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "nwk": "0x498C", + "manufacturer": "devi", + "model": "devi_c", + "friendly_manufacturer": "devi", + "friendly_model": "devi_c", + "name": "devi devi_c", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4678, + "power_source": "Mains", + "lqi": 184, + "rssi": -65, + "last_seen": "2026-08-31T09:00:34.050608+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4678, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "devi" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "devi_c" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "value": 841480894.86124 + }, + { + "id": "0x0001", + "name": "time_status", + "zcl_type": "map8", + "value": 2 + }, + { + "id": "0x0002", + "name": "time_zone", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3500 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2784 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3500 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 1500 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x001a", + "name": "remote_sensing", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "temperature_display_mode", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": -32768 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 768 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "devi", + "model": "devi_c", + "node_desc": { + "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": 4678, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x000a", + "0x0201", + "0x0204", + "0x0402", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0003", + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 27.84, + "outdoor_temperature": null, + "target_temperature": 15.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 35.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 1500, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 35.0, + "mode": "box", + "native_max_value": 35.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 35.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 184, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -65, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-513-setpoint_change_source", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSource", + "translation_key": "setpoint_change_source", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Manual", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Manual", + "Schedule", + "External" + ] + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:fb:7e:bc-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:fb:7e:bc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000300", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/epsilonrt-ert-mpz-03.json b/tests/data/devices/epsilonrt-ert-mpz-03.json new file mode 100644 index 000000000..d84b41f54 --- /dev/null +++ b/tests/data/devices/epsilonrt-ert-mpz-03.json @@ -0,0 +1,450 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6a:1e:db:14", + "nwk": "0xA439", + "manufacturer": "EpsilonRT", + "model": "ERT-MPZ-03", + "friendly_manufacturer": "EpsilonRT", + "friendly_model": "ERT-MPZ-03", + "name": "EpsilonRT ERT-MPZ-03", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": 208, + "rssi": -48, + "last_seen": "2026-03-13T21:52:02.121819+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "EpsilonRT" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ERT-MPZ-03" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 1981 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 303561 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 19 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 2 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 59 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "EpsilonRT", + "model": "ERT-MPZ-03", + "node_desc": { + "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": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0xfc00", + "0x0402", + "0x0702" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 208, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -48, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 19.81, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 303.561, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:1e:db:14-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:1e:db:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/espressif-zigbeeelectricalmeasurementdc.json b/tests/data/devices/espressif-zigbeeelectricalmeasurementdc.json new file mode 100644 index 000000000..9f64c76a5 --- /dev/null +++ b/tests/data/devices/espressif-zigbeeelectricalmeasurementdc.json @@ -0,0 +1,559 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:81:47:b3:49", + "nwk": "0x6DE4", + "manufacturer": "Espressif", + "model": "ZigbeeElectricalMeasurementDC", + "friendly_manufacturer": "Espressif", + "friendly_model": "ZigbeeElectricalMeasurementDC", + "name": "Espressif ZigbeeElectricalMeasurementDC", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "2026-10-05T20:09:39.877785+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SIMPLE_SENSOR", + "id": 12 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Espressif" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZigbeeElectricalMeasurementDC" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "value": 234 + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0105", + "name": "dc_current_max", + "zcl_type": "int16", + "value": 1000 + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "value": 253 + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0108", + "name": "dc_power_max", + "zcl_type": "int16", + "value": 5000 + }, + { + "id": "0x0107", + "name": "dc_power_min", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "value": 1083 + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0102", + "name": "dc_voltage_max", + "zcl_type": "int16", + "value": 5000 + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 64 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Espressif", + "model": "ZigbeeElectricalMeasurementDC", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x000c", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0b04" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-2820-dc_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementDCCurrent", + "translation_key": "dc_current", + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.234, + "suggested_display_precision": 1, + "unit": "A", + "measurement_type": "DC_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-2820-dc_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementDCPower", + "translation_key": "dc_power", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.253, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "DC_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:47:b3:49-1-2820-dc_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementDCVoltage", + "translation_key": "dc_voltage", + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:81:47:b3:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1.083, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "DC_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ewelink-ck-bl702-swp-01-7020-0x00001002.json b/tests/data/devices/ewelink-ck-bl702-swp-01-7020-0x00001002.json new file mode 100644 index 000000000..f669753de --- /dev/null +++ b/tests/data/devices/ewelink-ck-bl702-swp-01-7020-0x00001002.json @@ -0,0 +1,362 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8d:89:ed:2f", + "nwk": "0x429F", + "manufacturer": "eWeLink", + "model": "CK-BL702-SWP-01(7020)", + "friendly_manufacturer": "eWeLink", + "friendly_model": "CK-BL702-SWP-01(7020)", + "name": "eWeLink CK-BL702-SWP-01(7020)", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 184, + "rssi": -54, + "last_seen": "2026-08-09T11:06:03.171270+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "MAIN_POWER_OUTLET", + "id": 9 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "eWeLink" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "CK-BL702-SWP-01(7020)" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4098 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "eWeLink", + "model": "CK-BL702-SWP-01(7020)", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0009", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x1000", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0019", + "0x0b04", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 184, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -54, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:89:ed:2f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:89:ed:2f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-rexzb-111-0x00020002.json b/tests/data/devices/frient-a-s-rexzb-111-0x00020002.json new file mode 100644 index 000000000..d65715b5e --- /dev/null +++ b/tests/data/devices/frient-a-s-rexzb-111-0x00020002.json @@ -0,0 +1,402 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a5:60:3b:a6", + "nwk": "0x6C72", + "manufacturer": "frient A/S", + "model": "REXZB-111", + "friendly_manufacturer": "frient A/S", + "friendly_model": "REXZB-111", + "name": "frient A/S REXZB-111", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 255, + "rssi": -31, + "last_seen": "2026-05-08T09:48:37.818081+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "37": { + "profile_id": 260, + "device_type": { + "name": "RANGE_EXTENDER", + "id": 8 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "REXZB-111" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 41 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 553 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 131074 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "REXZB-111", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "37": { + "profile_id": "0x0104", + "device_type": "0x0008", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x0500", + "0x0b05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:60:3b:a6-37-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:60:3b:a6", + "endpoint_id": 37, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:60:3b:a6-37-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:60:3b:a6", + "endpoint_id": 37, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:60:3b:a6-37-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:60:3b:a6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:60:3b:a6-37-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:60:3b:a6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -31, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:60:3b:a6-37-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:60:3b:a6", + "endpoint_id": 37, + "available": true, + "group_id": null, + "installed_version": "0x00020002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-sirzb-110-0x00020004.json b/tests/data/devices/frient-a-s-sirzb-110-0x00020004.json new file mode 100644 index 000000000..5a9690946 --- /dev/null +++ b/tests/data/devices/frient-a-s-sirzb-110-0x00020004.json @@ -0,0 +1,585 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8f:79:5b:48", + "nwk": "0x643A", + "manufacturer": "frient A/S", + "model": "SIRZB-110", + "friendly_manufacturer": "frient A/S", + "friendly_model": "SIRZB-110", + "name": "frient A/S SIRZB-110", + "quirk_applied": true, + "quirk_class": "zhaquirks.develco.smart_siren:(frient A/S / SIRZB-110)", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 255, + "rssi": -31, + "last_seen": "2026-04-16T08:09:46.344146+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "43": { + "profile_id": 260, + "device_type": { + "name": "IAS_WARNING_DEVICE", + "id": 1027 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SIRZB-110" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 50 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 36 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 549 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [ + { + "id": "0x0000", + "name": "max_duration", + "zcl_type": "uint16", + "value": 900 + } + ] + }, + { + "cluster_id": "0xfc05", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 131076 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "SIRZB-110", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "43": { + "profile_id": "0x0104", + "device_type": "0x0403", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0001", + "0x0004", + "0x0500", + "0x0502", + "0xfc05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": "Tamper", + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-tamper", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "tamper", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -31, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": "Battery", + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-battery", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "native_value": 25.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:79:5b:48-43-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:79:5b:48", + "endpoint_id": 43, + "available": true, + "group_id": null, + "installed_version": "0x00020004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-sirzb-112-0x0000e387.json b/tests/data/devices/frient-a-s-sirzb-112-0x0000e387.json new file mode 100644 index 000000000..ce82adb05 --- /dev/null +++ b/tests/data/devices/frient-a-s-sirzb-112-0x0000e387.json @@ -0,0 +1,562 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a5:3e:c7:67", + "nwk": "0x9534", + "manufacturer": "frient A/S", + "model": "SIRZB-112", + "friendly_manufacturer": "frient A/S", + "friendly_model": "SIRZB-112", + "name": "frient A/S SIRZB-112", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 252, + "rssi": -40, + "last_seen": "2026-04-16T08:10:49.740162+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "43": { + "profile_id": 260, + "device_type": { + "name": "IAS_WARNING_DEVICE", + "id": 1027 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SIRZB-112" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 38 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 549 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [ + { + "id": "0x0000", + "name": "max_duration", + "zcl_type": "uint16", + "value": 900 + } + ] + }, + { + "cluster_id": "0xfc05", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 58247 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "SIRZB-112", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "43": { + "profile_id": "0x0104", + "device_type": "0x0403", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x0500", + "0x0502", + "0xfc05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 252, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -40, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:3e:c7:67-43-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:3e:c7:67", + "endpoint_id": 43, + "available": true, + "group_id": null, + "installed_version": "0x0000e387", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-smrzb-153-0x00020006.json b/tests/data/devices/frient-a-s-smrzb-153-0x00020006.json new file mode 100644 index 000000000..56ab35e28 --- /dev/null +++ b/tests/data/devices/frient-a-s-smrzb-153-0x00020006.json @@ -0,0 +1,953 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:07:9e:01:38", + "nwk": "0xFE4B", + "manufacturer": "frient A/S", + "model": "SMRZB-153", + "friendly_manufacturer": "frient A/S", + "friendly_model": "SMRZB-153", + "name": "frient A/S SMRZB-153", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 255, + "rssi": -20, + "last_seen": "2026-03-27T10:06:41.083035+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SMRZB-153" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 32 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 49966 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 11 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23735 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "value": 23757 + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 131078 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "SMRZB-153", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0009", + "0x0702", + "0x0b04", + "0x0b05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019", + "0x0406" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -20, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.32, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 49.966, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 0.0, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 237.35, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 237.57, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:9e:01:38-2-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:9e:01:38", + "endpoint_id": 2, + "available": true, + "group_id": null, + "installed_version": "0x00020006", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-smrzb-342-0x00020005.json b/tests/data/devices/frient-a-s-smrzb-342-0x00020005.json new file mode 100644 index 000000000..9187704e0 --- /dev/null +++ b/tests/data/devices/frient-a-s-smrzb-342-0x00020005.json @@ -0,0 +1,953 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9f:40:09:1d", + "nwk": "0xC03C", + "manufacturer": "frient A/S", + "model": "SMRZB-342", + "friendly_manufacturer": "frient A/S", + "friendly_model": "SMRZB-342", + "name": "frient A/S SMRZB-342", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 255, + "rssi": -32, + "last_seen": "2026-03-27T10:28:40.517069+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SMRZB-342" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 29 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 2 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 476 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 49977 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 1 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 11 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "value": 65 + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23661 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "value": 23669 + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 131077 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "SMRZB-342", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0009", + "0x0702", + "0x0b04", + "0x0b05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019", + "0x0406" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -32, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 476, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.002, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.29, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 1.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 49.977, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.002, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 0.065, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 236.61, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 236.69, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:40:09:1d-2-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:40:09:1d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "installed_version": "0x00020005", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-splzb-132-0x00030c0e.json b/tests/data/devices/frient-a-s-splzb-132-0x00030c0e.json new file mode 100644 index 000000000..bf299a802 --- /dev/null +++ b/tests/data/devices/frient-a-s-splzb-132-0x00030c0e.json @@ -0,0 +1,960 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:2f:77:af:08", + "nwk": "0xCF0A", + "manufacturer": "frient A/S", + "model": "SPLZB-132", + "friendly_manufacturer": "frient A/S", + "friendly_model": "SPLZB-132", + "name": "frient A/S SPLZB-132", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Mains", + "lqi": 255, + "rssi": -30, + "last_seen": "2026-03-27T10:16:47.590401+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4117, + "maximum_buffer_size": 72, + "maximum_incoming_transfer_size": 1560, + "server_mask": 0, + "maximum_outgoing_transfer_size": 1560, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SPLZB-132" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 27 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 248 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 49980 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 11 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23910 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "value": 23953 + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 199694 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "SPLZB-132", + "node_desc": { + "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": 4117, + "maximum_buffer_size": 72, + "maximum_incoming_transfer_size": 1560, + "server_mask": 0, + "maximum_outgoing_transfer_size": 1560, + "descriptor_capability_field": 0 + }, + "endpoints": { + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0702", + "0x0003", + "0x0009", + "0x0b04", + "0x0006", + "0x0004", + "0x0005", + "0x0002" + ], + "output_clusters": [ + "0x0000", + "0x0019", + "0x000a", + "0x0003", + "0x0406" + ] + }, + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -30, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-1794-summation_received", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummationReceived", + "translation_key": "summation_received", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.27, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 49.98, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 0.0, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 239.1, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 239.53, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2f:77:af:08-2-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2f:77:af:08", + "endpoint_id": 2, + "available": true, + "group_id": null, + "installed_version": "0x00030c0e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-wiszb-120-0x00040002.json b/tests/data/devices/frient-a-s-wiszb-120-0x00040002.json new file mode 100644 index 000000000..f94928eeb --- /dev/null +++ b/tests/data/devices/frient-a-s-wiszb-120-0x00040002.json @@ -0,0 +1,515 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:55:f0:14:db", + "nwk": "0x2998", + "manufacturer": "frient A/S", + "model": "WISZB-120", + "friendly_manufacturer": "frient A/S", + "friendly_model": "WISZB-120", + "name": "frient A/S WISZB-120", + "quirk_applied": true, + "quirk_class": "zhaquirks.develco.open_close:(frient A/S / WISZB-131)", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -33, + "last_seen": "2026-04-13T09:53:50.475133+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "35": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "WISZB-120" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 31 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000f", + "endpoint_attribute": "binary_input", + "attributes": [ + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "value": "Magnet Open" + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 21 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 262146 + } + ] + } + ] + }, + "38": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2543 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "WISZB-120", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0003", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "35": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x000f", + "0x0020", + "0x0500" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "38": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Tamper", + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-tamper", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "tamper", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 35, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -33, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 35, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": 3.1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-38-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 38, + "available": true, + "group_id": null, + "native_value": 25.43, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:55:f0:14:db-35-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:55:f0:14:db", + "endpoint_id": 35, + "available": true, + "group_id": null, + "installed_version": "0x00040002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-wiszb-121-0x00040003.json b/tests/data/devices/frient-a-s-wiszb-121-0x00040003.json new file mode 100644 index 000000000..02b6452f1 --- /dev/null +++ b/tests/data/devices/frient-a-s-wiszb-121-0x00040003.json @@ -0,0 +1,450 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:70:8f:3f:70", + "nwk": "0xE07F", + "manufacturer": "frient A/S", + "model": "WISZB-121", + "friendly_manufacturer": "frient A/S", + "friendly_model": "WISZB-121", + "name": "frient A/S WISZB-121", + "quirk_applied": true, + "quirk_class": "zhaquirks.develco.open_close:(frient A/S / WISZB-131)", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -30, + "last_seen": "2026-04-13T09:53:48.029014+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "35": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "WISZB-121" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 180 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 29 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000f", + "endpoint_attribute": "binary_input", + "attributes": [ + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "value": "Magnet Open" + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 49 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 21 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 262147 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "WISZB-121", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 0, + "manufacturer_code": 4117, + "maximum_buffer_size": 80, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0003", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "35": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x000f", + "0x0020", + "0x0500" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": true, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Tamper", + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-tamper", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "tamper", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": 35, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -30, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": 35, + "available": true, + "group_id": null, + "native_value": 90.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": 2.9 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:8f:3f:70-35-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:8f:3f:70", + "endpoint_id": 35, + "available": true, + "group_id": null, + "installed_version": "0x00040003", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/frient-a-s-wiszb-138-0x00020006.json b/tests/data/devices/frient-a-s-wiszb-138-0x00020006.json new file mode 100644 index 000000000..90a70e581 --- /dev/null +++ b/tests/data/devices/frient-a-s-wiszb-138-0x00020006.json @@ -0,0 +1,529 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:09:24:5c:d9", + "nwk": "0xC900", + "manufacturer": "frient A/S", + "model": "WISZB-138", + "friendly_manufacturer": "frient A/S", + "friendly_model": "WISZB-138", + "name": "frient A/S WISZB-138", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -30, + "last_seen": "2026-04-13T09:56:21.756176+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 49353, + "device_type": { + "name": "unknown", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "35": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "frient A/S" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "WISZB-138" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000f", + "endpoint_attribute": "binary_input", + "attributes": [ + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "value": "Magnet Open" + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 49 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 21 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 131078 + } + ] + } + ] + }, + "38": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2612 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "WISZB-138", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4117, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1500, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1500, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0xc0c9", + "device_type": "0x0001", + "input_clusters": [ + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "35": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0x000f", + "0x0500", + "0x0b05" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "38": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": true, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Magnet Open", + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-15", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinaryInputWithDescription", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 35, + "available": true, + "group_id": null, + "is_on": true, + "attribute_name": "present_value" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 35, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -30, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 35, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-38-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 38, + "available": true, + "group_id": null, + "native_value": 26.12, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:09:24:5c:d9-35-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:09:24:5c:d9", + "endpoint_id": 35, + "available": true, + "group_id": null, + "installed_version": "0x00020006", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hm-5ha-e-0x00000011.json b/tests/data/devices/heiman-hm-5ha-e-0x00000011.json new file mode 100644 index 000000000..97a79b0a2 --- /dev/null +++ b/tests/data/devices/heiman-hm-5ha-e-0x00000011.json @@ -0,0 +1,577 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:03:08:fc:02", + "nwk": "0xA5C6", + "manufacturer": "Heiman", + "model": "HM-5HA-E", + "friendly_manufacturer": "Heiman", + "friendly_model": "HM-5HA-E", + "name": "Heiman HM-5HA-E", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 92, + "rssi": -77, + "last_seen": "2026-09-24T06:33:43.873004+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Heiman" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HM-5HA-E" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2420 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 32 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 32771 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -63 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 17 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Heiman", + "model": "HM-5HA-E", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 92, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -77, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 24.2, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:03:08:fc:02-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:03:08:fc:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000011", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hm-636thv-ac-m-0xffffffff.json b/tests/data/devices/heiman-hm-636thv-ac-m-0xffffffff.json new file mode 100644 index 000000000..7fe267a4a --- /dev/null +++ b/tests/data/devices/heiman-hm-636thv-ac-m-0xffffffff.json @@ -0,0 +1,962 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:66:d4:00:3c", + "nwk": "0x504C", + "manufacturer": "HEIMAN", + "model": "HM-636THV-AC-M", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HM-636THV-AC-M", + "name": "HEIMAN HM-636THV-AC-M", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hm_636thv_ac_m:(HEIMAN / HM-636THV-AC-M)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4660, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-09-24T05:38:36.166317+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 1, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4660, + "maximum_buffer_size": 96, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11776, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HM-636THV-AC-M" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2441 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -68 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4294967295 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 6767 + } + ] + }, + { + "cluster_id": "0x040c", + "endpoint_attribute": "carbon_monoxide_concentration", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "single", + "value": 0.0 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 43 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "HM-636THV-AC-M", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 1, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4660, + "maximum_buffer_size": 96, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11776, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0500", + "0x0502", + "0x0020", + "0x0402", + "0x0001", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0500", + "0x040c", + "0x0405" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Interconnectable", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-interconnectable", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "interconnectable", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "interconnectable" + }, + { + "fallback_name": "Fault", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-sensor_fault_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_fault_state" + }, + { + "fallback_name": "Muted", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-sensor_mute_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "muted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_mute_state" + }, + { + "fallback_name": "Self-test", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-sensor_self_check_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "self_test_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_self_check_state" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-2-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_monoxide", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 1, + "battery_voltage": 25.5 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 24.41, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": "Chamber contamination", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-chamber_contamination", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "chamber_contamination", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "Normal", + "Light_contamination", + "Medium_contamination", + "Critical_contamination" + ] + }, + { + "fallback_name": "Alarm level", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-co_alarm_level", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "alarm_level", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "normal", + "prealarm", + "warning_alarm", + "critical_alarm" + ] + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Sensor expiration", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-sensor_life_state", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "sensor_expiration", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "normal", + "expires_soon", + "expired" + ] + }, + { + "fallback_name": "Smoke level", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-smoke_level", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "smoke_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-2-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 67.67, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-2-1036", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonMonoxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_monoxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 0, + "unit": "ppm" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "switch": [ + { + "fallback_name": "Heartbeat indicator", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-heartbeat_indicator", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "heartbeat_indicator", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "heartbeat_indicator", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Buzzer manual mute", + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-remote_mute", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "buzzer_manual_mute", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "remote_mute", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:66:d4:00:3c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:66:d4:00:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0xffffffff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hm-722esy-e-plus-0x00000010.json b/tests/data/devices/heiman-hm-722esy-e-plus-0x00000010.json new file mode 100644 index 000000000..369e33f47 --- /dev/null +++ b/tests/data/devices/heiman-hm-722esy-e-plus-0x00000010.json @@ -0,0 +1,796 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3d:59:86:82", + "nwk": "0xC15B", + "manufacturer": "HEIMAN", + "model": "HM-722ESY-E-PLUS", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HM-722ESY-E-PLUS", + "name": "HEIMAN HM-722ESY-E-PLUS", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hm_722_esy_e_plus:(HEIMAN / HM-722ESY-E-PLUS)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -36, + "last_seen": "2026-05-19T01:00:20.773020+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HM-722ESY-E-PLUS" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 86 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 27 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2590 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 7830 + } + ] + }, + { + "cluster_id": "0x040c", + "endpoint_attribute": "carbon_monoxide_concentration", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "single", + "value": 0.0 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 32 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -43 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x1007", + "name": "interconnectable", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0019", + "name": "rebooted_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001a", + "name": "rejoined_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0008", + "name": "remote_mute", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001b", + "name": "reported_packages", + "zcl_type": "uint16", + "value": 13 + }, + { + "id": "0x0002", + "name": "sensor_fault_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "sensor_mute_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "sensor_self_check_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0012", + "name": "siren_for_automation", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "HM-722ESY-E-PLUS", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0405", + "0x040c", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Interconnectable", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-interconnectable", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "interconnectable", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "interconnectable" + }, + { + "fallback_name": "Fault", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-sensor_fault_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_fault_state" + }, + { + "fallback_name": "Muted", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-sensor_mute_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "muted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_mute_state" + }, + { + "fallback_name": "Self-test", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-sensor_self_check_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "self_test_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_self_check_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -36, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 43.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 2.7 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 25.9, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 78.3, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1036", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonMonoxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_monoxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 0, + "unit": "ppm" + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 13, + "suggested_display_precision": null, + "unit": null + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "switch": [ + { + "fallback_name": "Buzzer manual mute", + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-remote_mute", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "buzzer_manual_mute", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "remote_mute", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:59:86:82-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:59:86:82", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000010", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hs1ca-e-plus-0x00000020.json b/tests/data/devices/heiman-hs1ca-e-plus-0x00000020.json new file mode 100644 index 000000000..f61f8f792 --- /dev/null +++ b/tests/data/devices/heiman-hs1ca-e-plus-0x00000020.json @@ -0,0 +1,754 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ba:7b:1b:60", + "nwk": "0xE4DB", + "manufacturer": "HEIMAN", + "model": "HS1CA-E PLUS", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HS1CA-E-PLUS", + "name": "HEIMAN HS1CA-E-PLUS", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hs1ca_e_plus:(HEIMAN / HS1CA-E PLUS)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-05-18T09:53:42.623128+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HS1CA-E PLUS" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2800 + } + ] + }, + { + "cluster_id": "0x040c", + "endpoint_attribute": "carbon_monoxide_concentration", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "single", + "value": 0.0 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -58 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x1007", + "name": "interconnectable", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0019", + "name": "rebooted_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001a", + "name": "rejoined_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0008", + "name": "remote_mute", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001b", + "name": "reported_packages", + "zcl_type": "uint16", + "value": 11 + }, + { + "id": "0x0002", + "name": "sensor_fault_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "sensor_mute_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "sensor_self_check_state", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 32 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "HS1CA-E PLUS", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x040c", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Interconnectable", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-interconnectable", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "interconnectable", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "interconnectable" + }, + { + "fallback_name": "Fault", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-sensor_fault_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_fault_state" + }, + { + "fallback_name": "Muted", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-sensor_mute_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "muted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_mute_state" + }, + { + "fallback_name": "Self-test", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-sensor_self_check_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "self_test_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_self_check_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 28.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-1036", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonMonoxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_monoxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 0, + "unit": "ppm" + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 11, + "suggested_display_precision": null, + "unit": null + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "switch": [ + { + "fallback_name": "Buzzer manual mute", + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-remote_mute", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "buzzer_manual_mute", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "remote_mute", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ba:7b:1b:60-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ba:7b:1b:60", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000020", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hs1sa-e-plus-0x00000022.json b/tests/data/devices/heiman-hs1sa-e-plus-0x00000022.json new file mode 100644 index 000000000..d31696216 --- /dev/null +++ b/tests/data/devices/heiman-hs1sa-e-plus-0x00000022.json @@ -0,0 +1,833 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "nwk": "0xAD71", + "manufacturer": "HEIMAN", + "model": "HS1SA-E-PLUS", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HS1SA-E-PLUS", + "name": "HEIMAN HS1SA-E-PLUS", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hs1sa_efa:(HEIMAN / HS1SA-EF-3.0)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-04-01T01:20:27.573464+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "20260311" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HS1SA-E-PLUS" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "2.2.0" + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2204 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 48 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -48 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0017", + "name": "chamber_contamination", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x1004", + "name": "heartbeat_indicator", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x1007", + "name": "interconnectable", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0019", + "name": "rebooted_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001a", + "name": "rejoined_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0008", + "name": "remote_mute", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001b", + "name": "reported_packages", + "zcl_type": "uint16", + "value": 8 + }, + { + "id": "0x0002", + "name": "sensor_fault_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "sensor_mute_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "sensor_self_check_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0016", + "name": "smoke_level", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 34 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "HS1SA-E-PLUS", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Interconnectable", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-interconnectable", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "interconnectable", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "interconnectable" + }, + { + "fallback_name": "Fault", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-sensor_fault_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_fault_state" + }, + { + "fallback_name": "Muted", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-sensor_mute_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "muted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_mute_state" + }, + { + "fallback_name": "Self-test", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-sensor_self_check_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "self_test_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_self_check_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 22.04, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": "Chamber contamination", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-chamber_contamination", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "chamber_contamination", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Normal", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Normal", + "Light_contamination", + "Medium_contamination", + "Critical_contamination" + ] + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 8, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Smoke level", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-smoke_level", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "smoke_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": null + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "switch": [ + { + "fallback_name": "Heartbeat indicator", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-heartbeat_indicator", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "heartbeat_indicator", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "heartbeat_indicator", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Buzzer manual mute", + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-remote_mute", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "buzzer_manual_mute", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "remote_mute", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:6d:3c:ff-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:6d:3c:ff", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000022", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-hs1sa-ef-3-0-0x00000020.json b/tests/data/devices/heiman-hs1sa-ef-3-0-0x00000020.json new file mode 100644 index 000000000..7f4438f76 --- /dev/null +++ b/tests/data/devices/heiman-hs1sa-ef-3-0-0x00000020.json @@ -0,0 +1,875 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ca:02:c1:fe", + "nwk": "0xAD71", + "manufacturer": "HEIMAN", + "model": "HS1SA-EF-3.0", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HS1SA-E-PLUS", + "name": "HEIMAN HS1SA-E-PLUS", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hs1sa_efa:(HEIMAN / HS1SA-EF-3.0)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 200, + "rssi": -50, + "last_seen": "2026-03-31T23:23:08.125227+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 32 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "20260202" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HS1SA-EF-3.0" + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0x000e", + "name": "product_label", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x000b", + "name": "product_url", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x000d", + "name": "serial_number", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "2.0.0" + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2057 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 32 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -67 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0017", + "name": "chamber_contamination", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x1004", + "name": "heartbeat_indicator", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x1007", + "name": "interconnectable", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0019", + "name": "rebooted_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001a", + "name": "rejoined_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0008", + "name": "remote_mute", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001b", + "name": "reported_packages", + "zcl_type": "uint16", + "value": 9 + }, + { + "id": "0x0002", + "name": "sensor_fault_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "sensor_mute_state", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "sensor_self_check_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0016", + "name": "smoke_level", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 32 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "HS1SA-EF-3.0", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Interconnectable", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-interconnectable", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "interconnectable", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "interconnectable" + }, + { + "fallback_name": "Fault", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-sensor_fault_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_fault_state" + }, + { + "fallback_name": "Muted", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-sensor_mute_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "muted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_mute_state" + }, + { + "fallback_name": "Self-test", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-sensor_self_check_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "self_test_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "sensor_self_check_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 200, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -50, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 20.57, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": "Chamber contamination", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-chamber_contamination", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "chamber_contamination", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Normal", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Normal", + "Light_contamination", + "Medium_contamination", + "Critical_contamination" + ] + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 9, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Smoke level", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-smoke_level", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "smoke_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": null + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "switch": [ + { + "fallback_name": "Heartbeat indicator", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-heartbeat_indicator", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "heartbeat_indicator", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "heartbeat_indicator", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Buzzer manual mute", + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-remote_mute", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "buzzer_manual_mute", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "remote_mute", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:02:c1:fe-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:02:c1:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000020", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-relaymodule-ef-3-0-0x00000015.json b/tests/data/devices/heiman-relaymodule-ef-3-0-0x00000015.json new file mode 100644 index 000000000..2b957e1ec --- /dev/null +++ b/tests/data/devices/heiman-relaymodule-ef-3-0-0x00000015.json @@ -0,0 +1,649 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d4:57:23:d2", + "nwk": "0x2CA9", + "manufacturer": "HEIMAN", + "model": "RelayModule-EF-3.0", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HS1RM-E", + "name": "HEIMAN HS1RM-E", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hs1rm_e:(HEIMAN / RelayModule-EF-3.0)", + "exposes_features": [], + "manufacturer_code": 4619, + "power_source": "Mains", + "lqi": 255, + "rssi": -24, + "last_seen": "2026-05-20T11:45:36.091499+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "RelayModule-EF-3.0" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 3400 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0007", + "endpoint_attribute": "on_off_config", + "attributes": [ + { + "id": "0x0010", + "name": "switch_actions", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "switch_type", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 21 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0007", + "endpoint_attribute": "on_off_config", + "attributes": [ + { + "id": "0x0010", + "name": "switch_actions", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "switch_type", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "RelayModule-EF-3.0", + "node_desc": { + "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": 4619, + "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": "0x0002", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0007", + "0x0009", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0x0006", + "0x0007", + "0x0009" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "Switch action L1", + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-switch_actions", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_action_l1", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "OnOff", + "enum": "SwitchActions", + "options": [ + "OnOff", + "OffOn", + "ToggleToggle" + ] + }, + { + "fallback_name": "Switch type L1", + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-switch_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_type_l1", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "HeimanSwitchType", + "options": [ + "Toggle", + "Momentary" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "Switch action L2", + "unique_id": "ab:cd:ef:12:d4:57:23:d2-2-switch_actions", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_action_l2", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "ToggleToggle", + "enum": "SwitchActions", + "options": [ + "OnOff", + "OffOn", + "ToggleToggle" + ] + }, + { + "fallback_name": "Switch type L2", + "unique_id": "ab:cd:ef:12:d4:57:23:d2-2-switch_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "switch_type_l2", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": null, + "enum": "HeimanSwitchType", + "options": [ + "Toggle", + "Momentary" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -24, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 34.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:57:23:d2-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:57:23:d2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000015", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-s1-tl-0x00000010.json b/tests/data/devices/heiman-s1-tl-0x00000010.json new file mode 100644 index 000000000..65f9b1a99 --- /dev/null +++ b/tests/data/devices/heiman-s1-tl-0x00000010.json @@ -0,0 +1,642 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:08:47:e9:a7", + "nwk": "0x0585", + "manufacturer": "Heiman", + "model": "S1-TL", + "friendly_manufacturer": "Heiman", + "friendly_model": "S1-TL", + "name": "Heiman S1-TL", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 132, + "rssi": -67, + "last_seen": "2026-09-24T06:20:34.619264+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Heiman" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "S1-TL" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2539 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 32 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -76 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 6822 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Heiman", + "model": "S1-TL", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0405" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 132, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -67, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 25.39, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-2-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 68.22, + "suggested_display_precision": null, + "unit": "%" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:08:47:e9:a7-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:08:47:e9:a7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000010", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/heiman-smokesensor-ef2-3-0-0x00000015.json b/tests/data/devices/heiman-smokesensor-ef2-3-0-0x00000015.json new file mode 100644 index 000000000..dffb05c9e --- /dev/null +++ b/tests/data/devices/heiman-smokesensor-ef2-3-0-0x00000015.json @@ -0,0 +1,529 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b9:64:70:c2", + "nwk": "0x016A", + "manufacturer": "HEIMAN", + "model": "SmokeSensor-EF2-3.0", + "friendly_manufacturer": "HEIMAN", + "friendly_model": "HS1SA-E-Lover", + "name": "HEIMAN HS1SA-E-Lover", + "quirk_applied": true, + "quirk_class": "zhaquirks.heiman.hs1sa_e_lover:(HEIMAN / SmokeSensor-EF2-3.0)", + "exposes_features": [ + "siren_basic" + ], + "manufacturer_code": 4619, + "power_source": "Battery or Unknown", + "lqi": 252, + "rssi": -37, + "last_seen": "2026-05-18T10:50:30.611383+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "HEIMAN" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SmokeSensor-EF2-3.0" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 32 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x011d", + "name": "last_message_rssi", + "zcl_type": "int8", + "value": -44 + } + ] + }, + { + "cluster_id": "0xfc90", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0019", + "name": "rebooted_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001a", + "name": "rejoined_count", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x001b", + "name": "reported_packages", + "zcl_type": "uint16", + "value": 4 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 21 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "HEIMAN", + "model": "SmokeSensor-EF2-3.0", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4619, + "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", + "0x0001", + "0x0003", + "0x0020", + "0x0500", + "0x0502", + "0x0b05", + "0xfc90" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Remote test", + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-init_test_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "remote_test", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "init_test_mode", + "args": [], + "kwargs": { + "test_mode_duration": 5, + "current_zone_sensitivity_level": 0 + } + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 252, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -37, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 0.0 + }, + { + "fallback_name": "Rebooted count", + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-rebooted_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rebooted_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Rejoined count", + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-rejoined_count", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "rejoined_count", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Reported packages", + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-reported_packages", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "reported_packages", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 4, + "suggested_display_precision": null, + "unit": null + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "BasicSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": {}, + "supported_features": 19 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:64:70:c2-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:64:70:c2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000015", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/hobeian-zg-102zm.json b/tests/data/devices/hobeian-zg-102zm.json index 0aefce59d..5a2fd7f01 100644 --- a/tests/data/devices/hobeian-zg-102zm.json +++ b/tests/data/devices/hobeian-zg-102zm.json @@ -73,13 +73,19 @@ "id": "0x0033", "name": "battery_quantity", "zcl_type": "uint8", - "unsupported": true + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 }, { "id": "0x0031", "name": "battery_size", "zcl_type": "enum8", - "unsupported": true + "value": 3 }, { "id": "0x0020", @@ -300,8 +306,8 @@ "native_value": 100.0, "suggested_display_precision": 0, "unit": "%", - "battery_size": null, - "battery_quantity": null, + "battery_size": "AA", + "battery_quantity": 2, "battery_voltage": 3.0 } ] diff --git a/tests/data/devices/innr-sp-240-0x191e3685.json b/tests/data/devices/innr-sp-240-0x191e3685.json index d5adb60fb..af14fdeca 100644 --- a/tests/data/devices/innr-sp-240-0x191e3685.json +++ b/tests/data/devices/innr-sp-240-0x191e3685.json @@ -95,50 +95,7 @@ { "cluster_id": "0x0008", "endpoint_attribute": "level", - "attributes": [ - { - "id": "0x0000", - "name": "current_level", - "zcl_type": "uint8", - "value": 254 - }, - { - "id": "0x0014", - "name": "default_move_rate", - "zcl_type": "uint8", - "unsupported": true - }, - { - "id": "0x0013", - "name": "off_transition_time", - "zcl_type": "uint16", - "value": 65535 - }, - { - "id": "0x0011", - "name": "on_level", - "zcl_type": "uint8", - "value": 255 - }, - { - "id": "0x0010", - "name": "on_off_transition_time", - "zcl_type": "uint16", - "value": 0 - }, - { - "id": "0x0012", - "name": "on_transition_time", - "zcl_type": "uint16", - "value": 65535 - }, - { - "id": "0x4000", - "name": "start_up_current_level", - "zcl_type": "uint8", - "value": 255 - } - ] + "attributes": [] }, { "cluster_id": "0x0702", diff --git a/tests/data/devices/innr-sp-240-0x19223685.json b/tests/data/devices/innr-sp-240-0x19223685.json new file mode 100644 index 000000000..0fd1fad70 --- /dev/null +++ b/tests/data/devices/innr-sp-240-0x19223685.json @@ -0,0 +1,829 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:39:51:53:67", + "nwk": "0xAA7D", + "manufacturer": "innr", + "model": "SP 240", + "friendly_manufacturer": "innr", + "friendly_model": "SP 240", + "name": "innr SP 240", + "quirk_applied": true, + "quirk_class": "zhaquirks.innr.innr_sp240_plug:(innr / SP 240)", + "exposes_features": [], + "manufacturer_code": 4454, + "power_source": "Mains", + "lqi": 232, + "rssi": -42, + "last_seen": "2025-12-14T01:43:40.041590+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4454, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 25 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "20250418" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "innr" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SP 240" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.9.34" + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 8 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 51 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 7 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 2433372681 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 40 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 235 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 421672581 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "innr", + "model": "SP 240", + "node_desc": { + "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": 4454, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x1000", + "0xe001" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -42, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 7.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.04, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 235.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:51:53:67-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:51:53:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x19223685", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/innr-sp-240.json b/tests/data/devices/innr-sp-240.json index 06c5a2aeb..db5104678 100644 --- a/tests/data/devices/innr-sp-240.json +++ b/tests/data/devices/innr-sp-240.json @@ -95,50 +95,7 @@ { "cluster_id": "0x0008", "endpoint_attribute": "level", - "attributes": [ - { - "id": "0x0000", - "name": "current_level", - "zcl_type": "uint8", - "value": 1 - }, - { - "id": "0x0014", - "name": "default_move_rate", - "zcl_type": "uint8", - "unsupported": true - }, - { - "id": "0x0013", - "name": "off_transition_time", - "zcl_type": "uint16", - "unsupported": true - }, - { - "id": "0x0011", - "name": "on_level", - "zcl_type": "uint8", - "unsupported": true - }, - { - "id": "0x0010", - "name": "on_off_transition_time", - "zcl_type": "uint16", - "unsupported": true - }, - { - "id": "0x0012", - "name": "on_transition_time", - "zcl_type": "uint16", - "unsupported": true - }, - { - "id": "0x4000", - "name": "start_up_current_level", - "zcl_type": "uint8", - "unsupported": true - } - ] + "attributes": [] }, { "cluster_id": "0x0702", diff --git a/tests/data/devices/innr-sp-242-0x17173685.json b/tests/data/devices/innr-sp-242-0x17173685.json index 3e731c87a..f5861d4d3 100644 --- a/tests/data/devices/innr-sp-242-0x17173685.json +++ b/tests/data/devices/innr-sp-242-0x17173685.json @@ -95,50 +95,7 @@ { "cluster_id": "0x0008", "endpoint_attribute": "level", - "attributes": [ - { - "id": "0x0000", - "name": "current_level", - "zcl_type": "uint8", - "value": 254 - }, - { - "id": "0x0014", - "name": "default_move_rate", - "zcl_type": "uint8", - "unsupported": true - }, - { - "id": "0x0013", - "name": "off_transition_time", - "zcl_type": "uint16", - "value": 65535 - }, - { - "id": "0x0011", - "name": "on_level", - "zcl_type": "uint8", - "value": 255 - }, - { - "id": "0x0010", - "name": "on_off_transition_time", - "zcl_type": "uint16", - "value": 0 - }, - { - "id": "0x0012", - "name": "on_transition_time", - "zcl_type": "uint16", - "value": 65535 - }, - { - "id": "0x4000", - "name": "start_up_current_level", - "zcl_type": "uint8", - "value": 255 - } - ] + "attributes": [] }, { "cluster_id": "0x0702", @@ -202,7 +159,7 @@ "id": "0x0302", "name": "divisor", "zcl_type": "uint24", - "unsupported": true + "value": 1000 }, { "id": "0x0400", @@ -220,7 +177,7 @@ "id": "0x0301", "name": "multiplier", "zcl_type": "uint24", - "unsupported": true + "value": 1 }, { "id": "0x0200", @@ -588,138 +545,6 @@ "kwargs": {} } ], - "number": [ - { - "fallback_name": null, - "unique_id": "ab:cd:ef:12:86:df:1b:97-1-8-off_transition_time", - "migrate_unique_ids": [], - "platform": "number", - "class_name": "OffTransitionTimeConfigurationEntity", - "translation_key": "off_transition_time", - "translation_placeholders": null, - "device_class": null, - "state_class": null, - "entity_category": "config", - "entity_registry_enabled_default": true, - "enabled": true, - "primary": false, - "extra_state_attribute_names": [], - "device_ieee": "ab:cd:ef:12:86:df:1b:97", - "endpoint_id": 1, - "available": true, - "group_id": null, - "native_value": 65535, - "mode": "auto", - "native_max_value": 65534, - "native_min_value": 0, - "native_step": 1.0, - "native_unit_of_measurement": null - }, - { - "fallback_name": null, - "unique_id": "ab:cd:ef:12:86:df:1b:97-1-8-on_level", - "migrate_unique_ids": [], - "platform": "number", - "class_name": "OnLevelConfigurationEntity", - "translation_key": "on_level", - "translation_placeholders": null, - "device_class": null, - "state_class": null, - "entity_category": "config", - "entity_registry_enabled_default": true, - "enabled": true, - "primary": false, - "extra_state_attribute_names": [], - "device_ieee": "ab:cd:ef:12:86:df:1b:97", - "endpoint_id": 1, - "available": true, - "group_id": null, - "native_value": 255, - "mode": "auto", - "native_max_value": 255, - "native_min_value": 0, - "native_step": 1.0, - "native_unit_of_measurement": null - }, - { - "fallback_name": null, - "unique_id": "ab:cd:ef:12:86:df:1b:97-1-8-on_off_transition_time", - "migrate_unique_ids": [], - "platform": "number", - "class_name": "OnOffTransitionTimeConfigurationEntity", - "translation_key": "on_off_transition_time", - "translation_placeholders": null, - "device_class": null, - "state_class": null, - "entity_category": "config", - "entity_registry_enabled_default": true, - "enabled": true, - "primary": false, - "extra_state_attribute_names": [], - "device_ieee": "ab:cd:ef:12:86:df:1b:97", - "endpoint_id": 1, - "available": true, - "group_id": null, - "native_value": 0, - "mode": "auto", - "native_max_value": 65535, - "native_min_value": 0, - "native_step": 1.0, - "native_unit_of_measurement": null - }, - { - "fallback_name": null, - "unique_id": "ab:cd:ef:12:86:df:1b:97-1-8-on_transition_time", - "migrate_unique_ids": [], - "platform": "number", - "class_name": "OnTransitionTimeConfigurationEntity", - "translation_key": "on_transition_time", - "translation_placeholders": null, - "device_class": null, - "state_class": null, - "entity_category": "config", - "entity_registry_enabled_default": true, - "enabled": true, - "primary": false, - "extra_state_attribute_names": [], - "device_ieee": "ab:cd:ef:12:86:df:1b:97", - "endpoint_id": 1, - "available": true, - "group_id": null, - "native_value": 65535, - "mode": "auto", - "native_max_value": 65534, - "native_min_value": 0, - "native_step": 1.0, - "native_unit_of_measurement": null - }, - { - "fallback_name": null, - "unique_id": "ab:cd:ef:12:86:df:1b:97-1-8-start_up_current_level", - "migrate_unique_ids": [], - "platform": "number", - "class_name": "StartUpCurrentLevelConfigurationEntity", - "translation_key": "start_up_current_level", - "translation_placeholders": null, - "device_class": null, - "state_class": null, - "entity_category": "config", - "entity_registry_enabled_default": true, - "enabled": true, - "primary": false, - "extra_state_attribute_names": [], - "device_ieee": "ab:cd:ef:12:86:df:1b:97", - "endpoint_id": 1, - "available": true, - "group_id": null, - "native_value": 255, - "mode": "auto", - "native_max_value": 255, - "native_min_value": 0, - "native_step": 1.0, - "native_unit_of_measurement": null - } - ], "select": [ { "fallback_name": null, @@ -820,7 +645,7 @@ "endpoint_id": 1, "available": true, "group_id": null, - "native_value": 466.0, + "native_value": 0.466, "suggested_display_precision": 3, "unit": "kWh", "device_type": "Electric Metering", diff --git a/tests/data/devices/legrand-contactor-0x006845ff.json b/tests/data/devices/legrand-contactor-0x006845ff.json new file mode 100644 index 000000000..f86200fd4 --- /dev/null +++ b/tests/data/devices/legrand-contactor-0x006845ff.json @@ -0,0 +1,947 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:0d:ab:89:6b", + "nwk": "0xC42B", + "manufacturer": " Legrand", + "model": " Contactor", + "friendly_manufacturer": " Legrand", + "friendly_model": " Contactor", + "name": " Legrand Contactor", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4129, + "power_source": "Mains", + "lqi": 36, + "rssi": null, + "last_seen": "2026-02-07T17:48:59.921981+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": true, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4129, + "maximum_buffer_size": 89, + "maximum_incoming_transfer_size": 63, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 63, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0013", + "name": "alarm_mask", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": " Legrand" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": " Contactor" + }, + { + "id": "0x0011", + "name": "physical_env", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x000f", + "endpoint_attribute": "binary_input", + "attributes": [ + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0803", + "name": "ac_active_power_overload", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc41", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 6833663 + }, + { + "id": "0x0003", + "name": "current_zigbee_stack_version", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "downloaded_file_version", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0005", + "name": "downloaded_zigbee_stack_version", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0001", + "name": "file_offset", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0006", + "name": "image_upgrade_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0007", + "name": "manufacturer_id", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0009", + "name": "minimum_block_req_delay", + "zcl_type": "uint16", + "value": 20 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x000b", + "name": "upgrade_activation_policy", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "upgrade_server_id", + "zcl_type": "EUI64", + "value": "00:12:4b:00:2a:45:56:22" + }, + { + "id": "0x000c", + "name": "upgrade_timeout_policy", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": " Legrand", + "model": " Contactor", + "node_desc": { + "logical_type": 1, + "complex_descriptor_available": 0, + "user_descriptor_available": 1, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4129, + "maximum_buffer_size": 89, + "maximum_incoming_transfer_size": 63, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 63, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0xfc01", + "0x0b04", + "0x0006", + "0x000f", + "0xfc41" + ], + "output_clusters": [ + "0x0006", + "0x0000", + "0xfc01", + "0x0005", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-15", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinaryInput", + "translation_key": "binary_input", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "present_value" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 36, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0d:ab:89:6b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0d:ab:89:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x006845ff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/leviton-inc-lu107-0x01000009.json b/tests/data/devices/leviton-inc-lu107-0x01000009.json new file mode 100644 index 000000000..1cdab3cf2 --- /dev/null +++ b/tests/data/devices/leviton-inc-lu107-0x01000009.json @@ -0,0 +1,671 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "nwk": "0xEA78", + "manufacturer": "Leviton Inc", + "model": "LU107", + "friendly_manufacturer": "Leviton Inc", + "friendly_model": "LU107", + "name": "Leviton Inc LU107", + "quirk_applied": true, + "quirk_class": "zhaquirks.leviton.dimmer:(LEVITON / ZK700-D0W)", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 168, + "rssi": -58, + "last_seen": "2026-04-19T20:19:35.449493+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 10752, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0012", + "name": "device_enabled", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0008", + "name": "generic_device_class", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0009", + "name": "generic_device_type", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Leviton Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LU107" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x000d", + "name": "serial_number", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "01.00.0009" + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 2 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 122 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0005", + "name": "min_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0002", + "name": "min_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0015", + "endpoint_attribute": "commissioning", + "attributes": [] + }, + { + "cluster_id": "0x0301", + "endpoint_attribute": "light_ballast", + "attributes": [ + { + "id": "0x0015", + "name": "ballast_factor_adjustment", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "ballast_status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0014", + "name": "intrinsic_ballast_factor", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0030", + "name": "lamp_type", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0011", + "name": "max_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "min_level", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "physical_max_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0000", + "name": "physical_min_level", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0012", + "name": "power_on_level", + "zcl_type": "uint8", + "value": 120 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x8008", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16777225 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0000", + "name": "checkin_interval", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0004", + "name": "checkin_interval_min", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0006", + "name": "fast_poll_timeout_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0001", + "name": "long_poll_interval", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0005", + "name": "long_poll_interval_min", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "short_poll_interval", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Leviton Inc", + "model": "LU107", + "node_desc": { + "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": 10752, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0015", + "0x0301", + "0x8008", + "0xfc02" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0020", + "0x0300" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": 122, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-769-ballast_max_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "BallastMaxLevel", + "translation_key": "maximum_dimming_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 1, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-769-ballast_min_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "BallastMinLevel", + "translation_key": "minimum_dimming_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 1, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 168, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -58, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3d:e2:4b:3c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3d:e2:4b:3c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x01000009", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/leviton-zk700-d0w-0x01020002.json b/tests/data/devices/leviton-zk700-d0w-0x01020002.json new file mode 100644 index 000000000..84bca9c3d --- /dev/null +++ b/tests/data/devices/leviton-zk700-d0w-0x01020002.json @@ -0,0 +1,504 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:35:36:ba:17", + "nwk": "0x4259", + "manufacturer": "LEVITON", + "model": "ZK700-D0W", + "friendly_manufacturer": "LEVITON", + "friendly_model": "ZK700-D0W", + "name": "LEVITON ZK700-D0W", + "quirk_applied": true, + "quirk_class": "zhaquirks.leviton.dimmer:(LEVITON / ZK700-D0W)", + "exposes_features": [], + "manufacturer_code": 4251, + "power_source": "Mains", + "lqi": 140, + "rssi": -65, + "last_seen": "2026-04-19T20:24:06.299604+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4251, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LEVITON" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZK700-D0W" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0004", + "name": "current_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0003", + "name": "max_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0301", + "endpoint_attribute": "light_ballast", + "attributes": [ + { + "id": "0x0011", + "name": "max_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0010", + "name": "min_level", + "zcl_type": "uint8", + "value": 1 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16908290 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "LEVITON", + "model": "ZK700-D0W", + "node_desc": { + "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": 4251, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0301" + ], + "output_clusters": [ + "0x0003", + "0x0019", + "0x0406" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-769-ballast_max_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "BallastMaxLevel", + "translation_key": "maximum_dimming_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 1, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-769-ballast_min_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "BallastMinLevel", + "translation_key": "minimum_dimming_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 1, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 140, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -65, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:36:ba:17-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:36:ba:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x01020002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lixee-zlinky-tic-0x00000001.json b/tests/data/devices/lixee-zlinky-tic-0x00000001.json new file mode 100644 index 000000000..41f58669f --- /dev/null +++ b/tests/data/devices/lixee-zlinky-tic-0x00000001.json @@ -0,0 +1,1295 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b9:db:c0:ae", + "nwk": "0x1738", + "manufacturer": "LiXee", + "model": "ZLinky_TIC", + "friendly_manufacturer": "LiXee", + "friendly_model": "ZLinky_TIC", + "name": "LiXee ZLinky_TIC", + "quirk_applied": true, + "quirk_class": "zhaquirks.lixee.zlinky:ZLinkyTICFWV15", + "exposes_features": [], + "manufacturer_code": 4151, + "power_source": "Mains", + "lqi": 191, + "rssi": null, + "last_seen": "2026-08-12T10:36:02.692584+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4151, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 200, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 200, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LiXee" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZLinky_TIC" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 35421000 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "value": 35421000 + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b01", + "endpoint_attribute": "meter_id", + "attributes": [] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "value": 430 + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "value": 90 + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "value": 0 + } + ] + }, + { + "cluster_id": "0xff66", + "endpoint_attribute": "zlinky_manufacturer_specific", + "attributes": [ + { + "id": "0x0002", + "name": "hist_schedule_peak_hours_off_peak_hours", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0005", + "name": "hist_subscribed_power_exceeding_warning", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "hist_tariff_option_or_std_supplier_price_schedule_name", + "zcl_type": "string", + "value": "BASE" + }, + { + "id": "0x0001", + "name": "hist_tomorrow_color", + "zcl_type": "string", + "value": "" + }, + { + "id": "0x0100", + "name": "linky_acquisition_time", + "zcl_type": "uint8", + "value": 5 + }, + { + "id": "0x0300", + "name": "linky_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "linky_status", + "zcl_type": "string", + "value": "000000" + }, + { + "id": "0x0010", + "name": "linky_tariff_period", + "zcl_type": "string", + "value": "TH.." + }, + { + "id": "0x0200", + "name": "std_current_supplier_price_description", + "zcl_type": "string", + "value": "" + }, + { + "id": "0x0201", + "name": "std_current_tariff_index_number", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0224", + "name": "std_relay", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0217", + "name": "std_status_register", + "zcl_type": "string", + "value": "b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'" + }, + { + "id": "0x0227", + "name": "std_supplier_calendar_next_day_profile", + "zcl_type": "string", + "value": "" + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 1 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "LiXee", + "model": "ZLinky_TIC", + "node_desc": { + "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": 4151, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 200, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 200, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x000a", + "0x0702", + "0x0b04", + "0x0b01", + "0xff66", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0xef00" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 191, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 35421.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-summation_received", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummationReceived", + "translation_key": "summation_received", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier1_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier1SmartEnergySummation", + "translation_key": "tier1_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 35421.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier2_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier2SmartEnergySummation", + "translation_key": "tier2_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier3_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier3SmartEnergySummation", + "translation_key": "tier3_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier4_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier4SmartEnergySummation", + "translation_key": "tier4_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier5_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier5SmartEnergySummation", + "translation_key": "tier5_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-1794-tier6_summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Tier6SmartEnergySummation", + "translation_key": "tier6_summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "", + "max_value": 0.0, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-active_power_ph_b", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePowerPhB", + "translation_key": "active_power_ph_b", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max_ph_b", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "", + "max_value": 0.0, + "max_attribute_name": "active_power_max_ph_b" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 430.0, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": "", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "", + "max_value": 90.0, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_current_ph_b", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrentPhB", + "translation_key": "rms_current_ph_b", + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max_ph_b" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "", + "max_value": 0.0, + "max_attribute_name": "rms_current_max_ph_b" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_current_ph_c", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrentPhC", + "translation_key": "rms_current_ph_c", + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max_ph_c" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "", + "max_value": 0.0, + "max_attribute_name": "rms_current_max_ph_c" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_voltage_ph_b", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltagePhB", + "translation_key": "rms_voltage_ph_b", + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max_ph_b" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "rms_voltage_max_ph_b" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-rms_voltage_ph_c", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltagePhC", + "translation_key": "rms_voltage_ph_c", + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max_ph_c" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "", + "max_value": null, + "max_attribute_name": "rms_voltage_max_ph_c" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-2820-total_active_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementTotalActivePower", + "translation_key": "total_active_power", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "", + "max_value": 0.0, + "max_attribute_name": "active_power_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:db:c0:ae-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:db:c0:ae", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000001", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lumi-lumi-curtain-0x00000022.json b/tests/data/devices/lumi-lumi-curtain-0x00000022.json new file mode 100644 index 000000000..5f2aeb46d --- /dev/null +++ b/tests/data/devices/lumi-lumi-curtain-0x00000022.json @@ -0,0 +1,1028 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:93:da:9c:5a", + "nwk": "0x1027", + "manufacturer": "LUMI", + "model": "lumi.curtain", + "friendly_manufacturer": "LUMI", + "friendly_model": "lumi.curtain", + "name": "LUMI lumi.curtain", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 255, + "rssi": -48, + "last_seen": "2026-05-24T04:20:40.273070+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 0, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 34 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "07-17-2020" + }, + { + "id": "0x0012", + "name": "device_enabled", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0014", + "name": "disable_local_config", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "generic_device_class", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0009", + "name": "generic_device_type", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 17 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LUMI" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.curtain" + }, + { + "id": "0x0011", + "name": "physical_env", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0x000e", + "name": "product_label", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x000b", + "name": "product_url", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x000d", + "name": "serial_number", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "mains_alarm_mask", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0001", + "name": "mains_frequency", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "mains_voltage", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0x0004", + "name": "dst_end", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0007", + "name": "local_time", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x000d", + "endpoint_attribute": "analog_output", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "value": 100.0 + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 100.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0068", + "name": "relinquish_default", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0013", + "endpoint_attribute": "multistate_output", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x004a", + "name": "number_of_states", + "zcl_type": "uint16", + "value": 6 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 0.0 + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0015", + "name": "acceleration_time_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 123 + }, + { + "id": "0x0003", + "name": "current_position_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "current_position_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0016", + "name": "deceleration_time_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0018", + "name": "intermediate_setpoints_lift", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0x0005", + "name": "number_of_actuations_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0006", + "name": "number_of_actuations_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0001", + "name": "physical_closed_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "velocity_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 4 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "ultrasonic_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x000d", + "endpoint_attribute": "analog_output", + "attributes": [] + }, + { + "cluster_id": "0x0013", + "endpoint_attribute": "multistate_output", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 34 + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "LUMI", + "model": "lumi.curtain", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 0, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0003", + "0x0005", + "0x000a", + "0x0102", + "0x000d", + "0x0013", + "0x0006", + "0x0001", + "0x0406" + ], + "output_clusters": [ + "0x0019", + "0x000a", + "0x000d", + "0x0102", + "0x0013", + "0x0006", + "0x0001", + "0x0406" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "curtain", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-13", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "AnalogOutputNumber", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "mode": "auto", + "native_max_value": 100.0, + "native_min_value": 0.0, + "native_step": null, + "native_unit_of_measurement": null + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -48, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Drapery", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:93:da:9c:5a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:93:da:9c:5a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000022", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lumi-lumi-curtain-aq2.json b/tests/data/devices/lumi-lumi-curtain-aq2.json new file mode 100644 index 000000000..19d725985 --- /dev/null +++ b/tests/data/devices/lumi-lumi-curtain-aq2.json @@ -0,0 +1,472 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:28:b9:4c:7c", + "nwk": "0xF451", + "manufacturer": "LUMI", + "model": "lumi.curtain.aq2", + "friendly_manufacturer": "LUMI", + "friendly_model": "lumi.curtain.aq2", + "name": "LUMI lumi.curtain.aq2", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 196, + "rssi": -62, + "last_seen": "2026-05-12T11:46:18.915961+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 0, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 30 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "07-06-2020" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LUMI" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.curtain.aq2" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x000d", + "endpoint_attribute": "analog_output", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "value": "Current position" + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "unsupported": true + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "value": 100.0 + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "value": 0.0 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 100.0 + }, + { + "id": "0x0068", + "name": "relinquish_default", + "zcl_type": "single", + "unsupported": true + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "value": 1.0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0013", + "endpoint_attribute": "multistate_output", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 47 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "LUMI", + "model": "lumi.curtain.aq2", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 0, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0003", + "0x0005", + "0x000a", + "0x0102", + "0x000d", + "0x0013" + ], + "output_clusters": [ + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "shade", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "number": [ + { + "fallback_name": "Current position", + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-13", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "AnalogOutputNumber", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "mode": "auto", + "native_max_value": 100.0, + "native_min_value": 0.0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 196, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Rollershade", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:28:b9:4c:7c-1-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:28:b9:4c:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lumi-lumi-remote-rkba01-0x00000014.json b/tests/data/devices/lumi-lumi-remote-rkba01-0x00000014.json new file mode 100644 index 000000000..a8a3be9a2 --- /dev/null +++ b/tests/data/devices/lumi-lumi-remote-rkba01-0x00000014.json @@ -0,0 +1,298 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:05:ba:35:4d", + "nwk": "0x39E8", + "manufacturer": "LUMI", + "model": "lumi.remote.rkba01", + "friendly_manufacturer": "LUMI", + "friendly_model": "lumi.remote.rkba01", + "name": "LUMI lumi.remote.rkba01", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -70, + "last_seen": "2026-04-21T08:07:37.004898+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT_SWITCH", + "id": 259 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LUMI" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.remote.rkba01" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 174 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30.6 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 20 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "LUMI", + "model": "lumi.remote.rkba01", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0103", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0001" + ], + "output_clusters": [ + "0x0003", + "0x0019", + "0x0006" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:05:ba:35:4d-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:05:ba:35:4d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:05:ba:35:4d-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:05:ba:35:4d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:05:ba:35:4d-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:05:ba:35:4d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -70, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:05:ba:35:4d-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:05:ba:35:4d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 87.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 1, + "battery_voltage": 3.06 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:05:ba:35:4d-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:05:ba:35:4d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000014", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lumi-lumi-switch-b2nc01-0x00000019.json b/tests/data/devices/lumi-lumi-switch-b2nc01-0x00000019.json new file mode 100644 index 000000000..762039c57 --- /dev/null +++ b/tests/data/devices/lumi-lumi-switch-b2nc01-0x00000019.json @@ -0,0 +1,660 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c9:e1:af:79", + "nwk": "0xE111", + "manufacturer": "LUMI", + "model": "lumi.switch.b2nc01", + "friendly_manufacturer": "LUMI", + "friendly_model": "lumi.switch.b2nc01", + "name": "LUMI lumi.switch.b2nc01", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 232, + "rssi": -42, + "last_seen": "2026-05-07T09:57:32.322395+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "LUMI" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.switch.b2nc01" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 2600 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "41": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + } + ], + "out_clusters": [] + }, + "42": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + } + ], + "out_clusters": [] + }, + "51": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "LUMI", + "model": "lumi.switch.b2nc01", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 100, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 100, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0xfcc0" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0xfcc0" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "41": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0012" + ], + "output_clusters": [] + }, + "42": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0012" + ], + "output_clusters": [] + }, + "51": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0012" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-3", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 3, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -42, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:e1:af:79-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:e1:af:79", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/lutron-z3-1brl-0x00000c12.json b/tests/data/devices/lutron-z3-1brl-0x00000c12.json new file mode 100644 index 000000000..4f78a1df5 --- /dev/null +++ b/tests/data/devices/lutron-z3-1brl-0x00000c12.json @@ -0,0 +1,328 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e0:a8:32:1c", + "nwk": "0x1234", + "manufacturer": "Lutron", + "model": "Z3-1BRL", + "friendly_manufacturer": "Lutron", + "friendly_model": "Z3-1BRL", + "name": "Lutron Z3-1BRL", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4420, + "power_source": "Battery or Unknown", + "lqi": 144, + "rssi": -64, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4420, + "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": 260, + "device_type": { + "name": "NON_COLOR_CONTROLLER", + "id": 2080 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Lutron" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Z3-1BRL" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 3090 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Lutron", + "model": "Z3-1BRL", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4420, + "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": "0x0820", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x1000", + "0xfc00" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0006", + "0x0008", + "0x0019", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:a8:32:1c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e0:a8:32:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:a8:32:1c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e0:a8:32:1c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 144, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:a8:32:1c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e0:a8:32:1c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -64, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:a8:32:1c-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:e0:a8:32:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:a8:32:1c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e0:a8:32:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000c12", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/mli-zbt-extendedcolor-0x11020002.json b/tests/data/devices/mli-zbt-extendedcolor-0x11020002.json new file mode 100644 index 000000000..8eecf2685 --- /dev/null +++ b/tests/data/devices/mli-zbt-extendedcolor-0x11020002.json @@ -0,0 +1,557 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ae:f7:c1:45", + "nwk": "0x4477", + "manufacturer": "MLI", + "model": "ZBT-ExtendedColor", + "friendly_manufacturer": "MLI", + "friendly_model": "ZBT-ExtendedColor", + "name": "MLI ZBT-ExtendedColor", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4635, + "power_source": "Mains", + "lqi": 92, + "rssi": -88, + "last_seen": "2026-01-04T12:57:10.401483+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4635, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 90, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 90, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "MLI" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZBT-ExtendedColor" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 556 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 370 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 24 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 202 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 29991 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 26872 + }, + { + "id": "0x4000", + "name": "enhanced_current_hue", + "zcl_type": "uint16", + "value": 6388 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 65535 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 285343746 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "MLI", + "model": "ZBT-ExtendedColor", + "node_desc": { + "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": 4635, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 90, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 90, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0x1000" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 1, + "xy_color": [ + 0.45763332570382237, + 0.41004043640802623 + ], + "color_temp": 370, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "color_temp", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 556 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 65535, + "mode": "auto", + "native_max_value": 556, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 92, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -88, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:f7:c1:45-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:f7:c1:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x11020002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/namron-as-4512773-0x00000019.json b/tests/data/devices/namron-as-4512773-0x00000019.json new file mode 100644 index 000000000..05229b32b --- /dev/null +++ b/tests/data/devices/namron-as-4512773-0x00000019.json @@ -0,0 +1,929 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:73:00:38:e9", + "nwk": "0x4920", + "manufacturer": "NAMRON AS", + "model": "4512773", + "friendly_manufacturer": "NAMRON AS", + "friendly_model": "4512773", + "name": "NAMRON AS 4512773", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4644, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -31, + "last_seen": "2026-09-11T00:10:03.786368+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4644, + "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": 260, + "device_type": { + "name": "LEVEL_CONTROL_SWITCH", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "NAMRON AS" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "4512773" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 33 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "LEVEL_CONTROL_SWITCH", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 33 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "LEVEL_CONTROL_SWITCH", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 33 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "LEVEL_CONTROL_SWITCH", + "id": 1 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 255 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 33 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "NAMRON AS", + "model": "4512773", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4644, + "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": "0x0001", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0300", + "0x1000" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0001", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0300", + "0x1000" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0001", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0300", + "0x1000" + ] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0001", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0300", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -31, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 0, + "battery_voltage": 3.3 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-2-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 0, + "battery_voltage": 3.3 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-3-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 0, + "battery_voltage": 3.3 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-4-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 0, + "battery_voltage": 3.3 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-2-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 2, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-3-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 3, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:00:38:e9-4-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:00:38:e9", + "endpoint_id": 4, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/namron-as-4512793-0x0000001d.json b/tests/data/devices/namron-as-4512793-0x0000001d.json new file mode 100644 index 000000000..64df8393d --- /dev/null +++ b/tests/data/devices/namron-as-4512793-0x0000001d.json @@ -0,0 +1,439 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4d:bc:18:0f", + "nwk": "0x49D2", + "manufacturer": "Namron AS", + "model": "4512793", + "friendly_manufacturer": "Namron AS", + "friendly_model": "4512793", + "name": "Namron AS 4512793", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -52, + "last_seen": "2026-09-08T20:59:22.391086+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Namron AS" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "4512793" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 32 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0xe004", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 29 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Namron AS", + "model": "4512793", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4714, + "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": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0xe004" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x1000" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:bc:18:0f-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:bc:18:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:bc:18:0f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:bc:18:0f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:bc:18:0f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:bc:18:0f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -52, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:bc:18:0f-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4d:bc:18:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.2 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:bc:18:0f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:bc:18:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000001d", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/namron-as-4512796-0x00000019.json b/tests/data/devices/namron-as-4512796-0x00000019.json new file mode 100644 index 000000000..dc11f040b --- /dev/null +++ b/tests/data/devices/namron-as-4512796-0x00000019.json @@ -0,0 +1,1129 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6c:fa:45:80", + "nwk": "0xA0FC", + "manufacturer": "Namron AS", + "model": "4512796", + "friendly_manufacturer": "Namron AS", + "friendly_model": "4512796", + "name": "Namron AS 4512796", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4714, + "power_source": "Mains", + "lqi": 255, + "rssi": -33, + "last_seen": "2026-10-04T15:53:29.006515+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4714, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Namron AS" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "4512796" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 4000 + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 4000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2600 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2800 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2050 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4600 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 232 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xe002", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Namron AS", + "model": "4512796", + "node_desc": { + "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": 4714, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0201", + "0x0204", + "0x0405", + "0x0702", + "0x0b04", + "0x1000", + "0xe002" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 26.0, + "outdoor_temperature": null, + "target_temperature": 20.5, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 40.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": 2800, + "occupied_heating_setpoint": 2050, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -33, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 46.0, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:fa:45:80-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:fa:45:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/none-aqara-toilet-acn002.json b/tests/data/devices/none-aqara-toilet-acn002.json new file mode 100644 index 000000000..887f4c831 --- /dev/null +++ b/tests/data/devices/none-aqara-toilet-acn002.json @@ -0,0 +1,319 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3e:e3:db:50", + "nwk": "0x696B", + "manufacturer": null, + "model": "aqara.toilet.acn002", + "friendly_manufacturer": "unk_manufacturer", + "friendly_model": "aqara.toilet.acn002", + "name": "unk_manufacturer aqara.toilet.acn002", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 76, + "rssi": -81, + "last_seen": "2026-05-10T09:04:39.462982+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 33 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "aqara.toilet.acn002" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "model": "aqara.toilet.acn002", + "node_desc": { + "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": 4447, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xfcc0" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3e:e3:db:50-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3e:e3:db:50", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3e:e3:db:50-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3e:e3:db:50", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 76, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3e:e3:db:50-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3e:e3:db:50", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -81, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3e:e3:db:50-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3e:e3:db:50", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3e:e3:db:50-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3e:e3:db:50", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ntcht01-excellux.json b/tests/data/devices/ntcht01-excellux.json new file mode 100644 index 000000000..d4d00b0ad --- /dev/null +++ b/tests/data/devices/ntcht01-excellux.json @@ -0,0 +1,345 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:75:b3:e8:01", + "nwk": "0x1E7D", + "manufacturer": "NTCHT01", + "model": "Excellux", + "friendly_manufacturer": "NTCHT01", + "friendly_model": "Excellux", + "name": "NTCHT01 Excellux", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 108, + "rssi": -73, + "last_seen": "2026-05-13T19:32:48.989083+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "NTCHT01" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Excellux" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2650 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 3811 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "NTCHT01", + "model": "Excellux", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0xef00", + "0x0001", + "0x0402", + "0x0405", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0xef00", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 108, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -73, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.5, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:b3:e8:01-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:b3:e8:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 38.11, + "suggested_display_precision": null, + "unit": "%" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/onesti-products-as-nimlypro-0x00000000.json b/tests/data/devices/onesti-products-as-nimlypro-0x00000000.json new file mode 100644 index 000000000..2dce51153 --- /dev/null +++ b/tests/data/devices/onesti-products-as-nimlypro-0x00000000.json @@ -0,0 +1,516 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4f:77:25:d6", + "nwk": "0xD1BE", + "manufacturer": "Onesti Products AS", + "model": "NimlyPRO", + "friendly_manufacturer": "Onesti Products AS", + "friendly_model": "NimlyPRO", + "name": "Onesti Products AS NimlyPRO", + "quirk_applied": true, + "quirk_class": "zhaquirks.nimly.lock:(Onesti Products AS / NimlyPRO24)", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Battery or Unknown", + "lqi": 108, + "rssi": -73, + "last_seen": "2026-03-30T20:01:07.399106+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 136, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 127, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 127, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "DOOR_LOCK", + "id": 10 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Onesti Products AS" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "NimlyPRO" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 3 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 45 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0101", + "endpoint_attribute": "door_lock", + "attributes": [ + { + "id": "0x0023", + "name": "auto_relock_time", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x0000", + "name": "lock_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0100", + "name": "nimly_last_lock_unlock_source", + "zcl_type": "map32", + "value": 167903232 + }, + { + "id": "0x0101", + "name": "nimly_last_pin_code", + "zcl_type": "octstr", + "value": { + "__type": "", + "repr": "b''" + } + }, + { + "id": "0x0024", + "name": "sound_volume", + "zcl_type": "uint8", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfea2", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 0 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Onesti Products AS", + "model": "NimlyPRO", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 136, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 127, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 127, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x000a", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0005", + "0x0004", + "0x0101", + "0xfea2" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "lock": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-257", + "migrate_unique_ids": [], + "platform": "lock", + "class_name": "DoorLock", + "translation_key": "door_lock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "is_locked": true + } + ], + "number": [ + { + "fallback_name": "Sound volume", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-sound_volume", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "sound_volume", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 1, + "mode": "auto", + "native_max_value": 2, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": null + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 108, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -73, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 3, + "battery_voltage": 4.5 + }, + { + "fallback_name": "Last action", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-last_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "last_action", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": "unlock", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Last action source", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-last_action_source", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "last_action_source", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": "self", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Last action user", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-last_action_user", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "last_action_user", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": "Last PIN code", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-last_pin_code", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "last_pin_code", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": "", + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": "Autorelock", + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-auto_relock_time", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "auto_relock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "auto_relock_time", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:77:25:d6-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:77:25:d6", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x00000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/philips-1746330p7-0x01002604.json b/tests/data/devices/philips-1746330p7-0x01002604.json new file mode 100644 index 000000000..870a892a0 --- /dev/null +++ b/tests/data/devices/philips-1746330p7-0x01002604.json @@ -0,0 +1,554 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:37:7a:c9:6d", + "nwk": "0xB1B7", + "manufacturer": "Philips", + "model": "1746330P7", + "friendly_manufacturer": "Philips", + "friendly_model": "Hue Appear Outdoor wall light", + "name": "Philips Hue Appear Outdoor wall light", + "quirk_applied": true, + "quirk_class": "zhaquirks.philips.hue_light:(Philips / 1746330P7)", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 136, + "rssi": -66, + "last_seen": "2026-01-29T11:59:23.416435+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Philips" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "1746330P7" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 64 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 254 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 146 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 195 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 13872 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 22671 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 366 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "philips_hue_light_cluster", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16786948 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Philips", + "model": "1746330P7", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0x1000", + "0xfc01" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": true, + "brightness": 64, + "xy_color": [ + 0.21167315175097276, + 0.34593728542000457 + ], + "color_temp": 153, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "xy", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 366, + "mode": "auto", + "native_max_value": 500, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 136, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -66, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:37:7a:c9:6d-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:37:7a:c9:6d", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01002604", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/philips-915005987101-0x01000804.json b/tests/data/devices/philips-915005987101-0x01000804.json new file mode 100644 index 000000000..bf2135817 --- /dev/null +++ b/tests/data/devices/philips-915005987101-0x01000804.json @@ -0,0 +1,555 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e7:40:47:bc", + "nwk": "0x46A8", + "manufacturer": "Philips", + "model": "915005987101", + "friendly_manufacturer": "Philips", + "friendly_model": "915005987101", + "name": "Philips 915005987101", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 104, + "rssi": -85, + "last_seen": "2026-09-14T10:05:08.650162+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Philips" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "915005987101" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 180 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 254 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 45313 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 20202 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 366 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16779268 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Philips", + "model": "915005987101", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0xfc03", + "0x0300", + "0xfc01" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": false, + "brightness": 180, + "xy_color": [ + 0.691432059205005, + 0.3082627603570611 + ], + "color_temp": 500, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "xy", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 366, + "mode": "auto", + "native_max_value": 500, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 104, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -85, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:40:47:bc-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:40:47:bc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01000804", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/philips-lom006-0x01000200.json b/tests/data/devices/philips-lom006-0x01000200.json new file mode 100644 index 000000000..796c7ad23 --- /dev/null +++ b/tests/data/devices/philips-lom006-0x01000200.json @@ -0,0 +1,350 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "nwk": "0xE5C7", + "manufacturer": "Philips", + "model": "LOM006", + "friendly_manufacturer": "Philips", + "friendly_model": "LOM006", + "name": "Philips LOM006", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 156, + "rssi": -72, + "last_seen": "2026-10-04T14:06:05.963465+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Philips" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LOM006" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16777728 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Philips", + "model": "LOM006", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0xfc02" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 156, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -72, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": 11, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:0c:5b:eb-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:0c:5b:eb", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01000200", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/piriv01-excellux.json b/tests/data/devices/piriv01-excellux.json new file mode 100644 index 000000000..d3e3e11ac --- /dev/null +++ b/tests/data/devices/piriv01-excellux.json @@ -0,0 +1,337 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:77:06:2b:c1", + "nwk": "0xEBE1", + "manufacturer": "PIRIV01", + "model": "Excellux", + "friendly_manufacturer": "PIRIV01", + "friendly_model": "Excellux", + "name": "PIRIV01 Excellux", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 132, + "rssi": -67, + "last_seen": "2026-04-27T20:48:23.794073+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "PIRIV01" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Excellux" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "PIRIV01", + "model": "Excellux", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0xef00", + "0x0001", + "0x0500", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0xef00", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:06:2b:c1-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:06:2b:c1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:06:2b:c1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:06:2b:c1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:06:2b:c1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:06:2b:c1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 132, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:06:2b:c1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:06:2b:c1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -67, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:06:2b:c1-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:77:06:2b:c1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": null, + "battery_voltage": 3.0 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/plugwise-170-01-0x0000000a.json b/tests/data/devices/plugwise-170-01-0x0000000a.json new file mode 100644 index 000000000..efe7966a4 --- /dev/null +++ b/tests/data/devices/plugwise-170-01-0x0000000a.json @@ -0,0 +1,757 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ca:22:fe:a4", + "nwk": "0xBC88", + "manufacturer": "Plugwise", + "model": "170-01", + "friendly_manufacturer": "Plugwise", + "friendly_model": "170-01", + "name": "Plugwise 170-01", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4466, + "power_source": "Mains", + "lqi": 244, + "rssi": -39, + "last_seen": "2026-05-13T13:10:36.467466+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4466, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Plugwise" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "170-01" + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "value": { + "__type": "", + "repr": "b'OpenTherm'" + } + }, + { + "id": "0x000b", + "name": "product_url", + "zcl_type": "string", + "value": "https://www.plugwise.com/emma-wired-pro" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "R0010" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + }, + { + "id": "0x0002", + "name": "short_poll_interval", + "zcl_type": "uint16", + "value": 4 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 9000 + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 9000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "value": -2000 + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": -2000 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2325 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2250 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2250 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4167 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 10 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Plugwise", + "model": "170-01", + "node_desc": { + "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": 4466, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x000a", + "0x0020", + "0x0201", + "0x0204", + "0x0402", + "0x0405", + "0x0b05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 23.25, + "outdoor_temperature": null, + "target_temperature": 22.5, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 0.0, + "supported_features": 387, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat_cool", + "cool", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": 2250, + "occupied_heating_setpoint": 2250, + "pi_heating_demand": 0, + "pi_cooling_demand": 0, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 90.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": -20.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 244, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -39, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 41.67, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 0, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:22:fe:a4-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:22:fe:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/rti-tek-sthzb-0x00000080.json b/tests/data/devices/rti-tek-sthzb-0x00000080.json new file mode 100644 index 000000000..27c616a2c --- /dev/null +++ b/tests/data/devices/rti-tek-sthzb-0x00000080.json @@ -0,0 +1,395 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:0a:a6:cc:af", + "nwk": "0x1F92", + "manufacturer": "Rti-Tek", + "model": "STHZB", + "friendly_manufacturer": "Rti-Tek", + "friendly_model": "STHZB", + "name": "Rti-Tek STHZB", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 220, + "rssi": -45, + "last_seen": "2026-09-07T03:05:10.770483+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Rti-Tek" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "STHZB" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 196 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 43 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2740 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4190 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + }, + { + "cluster_id": "0xfd22", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 128 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Rti-Tek", + "model": "STHZB", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0x0402", + "0x0405", + "0xfd22", + "0xef00", + "0xfc57" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 220, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -45, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 98.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 4.3 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 27.4, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 41.9, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0a:a6:cc:af-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0a:a6:cc:af", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000080", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/samotech-sm309-s-0x0000003f.json b/tests/data/devices/samotech-sm309-s-0x0000003f.json new file mode 100644 index 000000000..8372133c6 --- /dev/null +++ b/tests/data/devices/samotech-sm309-s-0x0000003f.json @@ -0,0 +1,1024 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:36:d1:2d:e2", + "nwk": "0xC2FE", + "manufacturer": "Samotech", + "model": "SM309-S", + "friendly_manufacturer": "Samotech", + "friendly_model": "SM309-S", + "name": "Samotech SM309-S", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 51, + "rssi": null, + "last_seen": "2026-05-27T20:53:06.850141+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Samotech" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SM309-S" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 1747454 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 3600000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 51 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 56 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 65545 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "value": 10000 + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "value": 1 + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 44 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2251 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "value": 56 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 63 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Samotech", + "model": "SM309-S", + "node_desc": { + "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": 4107, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 51, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.4854038888888889, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.6, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.044, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 225.1, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-2820-total_active_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementTotalActivePower", + "translation_key": "total_active_power", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.6, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:36:d1:2d:e2-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:36:d1:2d:e2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000003f", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/samotech-sm309-s-2ch-0x00000037.json b/tests/data/devices/samotech-sm309-s-2ch-0x00000037.json new file mode 100644 index 000000000..52550152c --- /dev/null +++ b/tests/data/devices/samotech-sm309-s-2ch-0x00000037.json @@ -0,0 +1,1243 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bd:27:99:b0", + "nwk": "0x8635", + "manufacturer": "Samotech", + "model": "SM309-S-2CH", + "friendly_manufacturer": "Samotech", + "friendly_model": "SM309-S-2CH", + "name": "Samotech SM309-S-2CH", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 90, + "rssi": null, + "last_seen": "2026-05-28T13:31:14.716521+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Samotech" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SM309-S-2CH" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 20 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 55 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 20 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "undefined_0xffff", + "id": 65535 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 20 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "undefined_0xffff", + "id": 65535 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 20 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Samotech", + "model": "SM309-S-2CH", + "node_desc": { + "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": 4107, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0xffff", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0xffff", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 20, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-2-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-2-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 20, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-2-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-3-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-3-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 20, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-3-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-4-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-4-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": 20, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-4-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-3-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-4-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 4, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 90, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-3-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-4-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 4, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bd:27:99:b0-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bd:27:99:b0", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000037", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/samotech-sm323-0x0000003d.json b/tests/data/devices/samotech-sm323-0x0000003d.json new file mode 100644 index 000000000..3f68266e6 --- /dev/null +++ b/tests/data/devices/samotech-sm323-0x0000003d.json @@ -0,0 +1,1011 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4c:3e:2b:00", + "nwk": "0xA6E3", + "manufacturer": "Samotech", + "model": "SM323", + "friendly_manufacturer": "Samotech", + "friendly_model": "SM323", + "name": "Samotech SM323", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 51, + "rssi": null, + "last_seen": "2026-05-27T20:53:26.967343+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 466134658 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 3600000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 51 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 509 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 65545 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "value": 10000 + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "value": 1 + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 242 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2235 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "value": 509 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 61 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Samotech", + "model": "SM323", + "node_desc": { + "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": 4107, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0702", + "0x0b04", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 51, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 129.48184944444444, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.9, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.242, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 223.5, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-2820-total_active_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementTotalActivePower", + "translation_key": "total_active_power", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.9, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4c:3e:2b:00-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4c:3e:2b:00", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000003d", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/schneider-electric-ch-dimmer-1.json b/tests/data/devices/schneider-electric-ch-dimmer-1.json new file mode 100644 index 000000000..ab9b046f1 --- /dev/null +++ b/tests/data/devices/schneider-electric-ch-dimmer-1.json @@ -0,0 +1,383 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4b:b4:f1:00", + "nwk": "0x1234", + "manufacturer": "Schneider Electric", + "model": "CH/DIMMER/1", + "friendly_manufacturer": "Schneider Electric", + "friendly_model": "CH/DIMMER/1", + "name": "Schneider Electric CH/DIMMER/1", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4190, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4190, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0301", + "endpoint_attribute": "light_ballast", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [] + } + ] + }, + "21": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Schneider Electric", + "model": "CH/DIMMER/1", + "node_desc": { + "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": 4190, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "21": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0b05", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0301", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:b4:f1:00-21-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:b4:f1:00", + "endpoint_id": 21, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:b4:f1:00-3", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:b4:f1:00", + "endpoint_id": 3, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:b4:f1:00-21-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:b4:f1:00", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:b4:f1:00-21-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:b4:f1:00", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:b4:f1:00-3-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:b4:f1:00", + "endpoint_id": 3, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/schneider-electric-ch10ax-switch-1-0x020a08ff.json b/tests/data/devices/schneider-electric-ch10ax-switch-1-0x020a08ff.json new file mode 100644 index 000000000..d929d3f9d --- /dev/null +++ b/tests/data/devices/schneider-electric-ch10ax-switch-1-0x020a08ff.json @@ -0,0 +1,417 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:62:35:c6:b4", + "nwk": "0xF229", + "manufacturer": "Schneider Electric", + "model": "CH10AX/SWITCH/1", + "friendly_manufacturer": "Schneider Electric", + "friendly_model": "CH10AX/SWITCH/1", + "name": "Schneider Electric CH10AX/SWITCH/1", + "quirk_applied": true, + "quirk_class": "zhaquirks.schneiderelectric.dimmers:(Schneider Electric / NHPB/SWITCH/1)", + "exposes_features": [], + "manufacturer_code": 4190, + "power_source": "Mains", + "lqi": 96, + "rssi": -87, + "last_seen": "2026-05-03T08:23:55.893903+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4190, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Schneider Electric" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "CH10AX/SWITCH/1" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 34212095 + } + ] + } + ] + }, + "21": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "switch_configuration", + "attributes": [ + { + "id": "0x0000", + "name": "se_switch_indication", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Schneider Electric", + "model": "CH10AX/SWITCH/1", + "node_desc": { + "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": 4190, + "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": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b05" + ], + "output_clusters": [ + "0x0019" + ] + }, + "21": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0b05", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:35:c6:b4-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:35:c6:b4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:35:c6:b4-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:35:c6:b4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:35:c6:b4-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:35:c6:b4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 96, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:35:c6:b4-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:35:c6:b4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -87, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:35:c6:b4-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:35:c6:b4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x020a08ff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/schneider-electric-fls-airlink-4-0x020901ff.json b/tests/data/devices/schneider-electric-fls-airlink-4-0x020901ff.json new file mode 100644 index 000000000..e3e641e51 --- /dev/null +++ b/tests/data/devices/schneider-electric-fls-airlink-4-0x020901ff.json @@ -0,0 +1,757 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "nwk": "0x2164", + "manufacturer": "Schneider Electric", + "model": "FLS/AIRLINK/4", + "friendly_manufacturer": "Schneider Electric", + "friendly_model": "FLS/AIRLINK/4", + "name": "Schneider Electric FLS/AIRLINK/4", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4190, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-07-30T08:05:31.840200+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4190, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "21": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Schneider Electric" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "FLS/AIRLINK/4" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 34144767 + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "22": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "23": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "24": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xff17", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Schneider Electric", + "model": "FLS/AIRLINK/4", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4190, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "21": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x0102" + ] + }, + "22": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "23": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "24": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0xff17" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-21-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 21, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-21-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-21-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-21-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 21, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-22-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 22, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-23-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 23, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-24-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 24, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:a1:1d:6d-21-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:a1:1d:6d", + "endpoint_id": 21, + "available": true, + "group_id": null, + "installed_version": "0x020901ff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/schneider-electric-wde002497-0x01004200.json b/tests/data/devices/schneider-electric-wde002497-0x01004200.json new file mode 100644 index 000000000..936132488 --- /dev/null +++ b/tests/data/devices/schneider-electric-wde002497-0x01004200.json @@ -0,0 +1,1617 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:64:55:32:d7", + "nwk": "0x6B15", + "manufacturer": "Schneider Electric", + "model": "WDE002497", + "friendly_manufacturer": "Schneider Electric", + "friendly_model": "WDE002497", + "name": "Schneider Electric WDE002497", + "quirk_applied": true, + "quirk_class": "zhaquirks.schneiderelectric.thermostat:(Schneider Electric / EKO07259)", + "exposes_features": [], + "manufacturer_code": 4190, + "power_source": "Mains", + "lqi": 21, + "rssi": null, + "last_seen": "2026-09-30T18:45:58.631836+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4190, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Schneider Electric" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "WDE002497" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 4000 + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 4000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "value": 400 + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 400 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 1316 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 2700 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "value": 1000 + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 400 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2000 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 750 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0xe210", + "name": "se_boost_amount", + "zcl_type": "uint16", + "value": 200 + }, + { + "id": "0xe211", + "name": "se_control_status", + "zcl_type": "enum8", + "value": 128 + }, + { + "id": "0xe213", + "name": "se_control_type", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xe200", + "name": "se_fallback_timeout", + "zcl_type": "uint16", + "value": 600 + }, + { + "id": "0xe218", + "name": "se_heat_transfer_medium", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0xe21a", + "name": "se_heating_emitter_type", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0xe217", + "name": "se_heating_fuel", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0xe212", + "name": "se_local_temperature_source_select", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0xe015", + "name": "se_open_window_detection_guard_period", + "zcl_type": "uint16", + "value": 120 + }, + { + "id": "0xe012", + "name": "se_open_window_detection_status", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0xe013", + "name": "se_open_window_detection_threshold", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0xe014", + "name": "se_open_window_event_duration", + "zcl_type": "uint16", + "value": 1200 + }, + { + "id": "0xe216", + "name": "se_thermostat_application", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2200 + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "value": 1600 + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0xe002", + "name": "se_activity_timeout", + "zcl_type": "uint16", + "value": 121 + }, + { + "id": "0xe000", + "name": "se_brightness", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0xe001", + "name": "se_inactive_brightness", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfe03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xff16", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xff23", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16794112 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 1316 + }, + { + "id": "0xe020", + "name": "se_sensor_correction", + "zcl_type": "int16", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 1375 + }, + { + "id": "0xe020", + "name": "se_sensor_correction", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0xe021", + "name": "se_temperature_sensor_type", + "zcl_type": "enum8", + "value": 4 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + }, + "5": { + "profile_id": 260, + "device_type": { + "name": "CONSUMPTION_AWARENESS_DEVICE", + "id": 13 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 147 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x4510", + "name": "se_fixed_load_demand", + "zcl_type": "uint24", + "value": 0 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 171 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Schneider Electric", + "model": "WDE002497", + "node_desc": { + "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": 4190, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0201", + "0x0204", + "0x0b05", + "0xfe03", + "0xff16", + "0xff23" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019", + "0x0402", + "0x0406" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402" + ], + "output_clusters": [ + "0x0003" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402" + ], + "output_clusters": [ + "0x0003" + ] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x000d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0702" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": "Open window detection status", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_open_window_detection_status", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "open_window_detection_status", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "se_open_window_detection_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 13.16, + "outdoor_temperature": null, + "target_temperature": null, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "off", + "hvac_mode": "off", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 27.0, + "min_temp": 4.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[0]/off", + "occupancy": 1, + "occupied_cooling_setpoint": 2000, + "occupied_heating_setpoint": 750, + "pi_heating_demand": 0, + "pi_cooling_demand": 0, + "unoccupied_cooling_setpoint": 2200, + "unoccupied_heating_setpoint": 1600 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 27.0, + "mode": "box", + "native_max_value": 40.0, + "native_min_value": 4.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 4.0, + "mode": "box", + "native_max_value": 27.0, + "native_min_value": 4.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Display activity timeout", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_activity_timeout", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "display_activity_timeout", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 121, + "mode": "auto", + "native_max_value": 3600, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Boost amount", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_boost_amount", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "boost_amount", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2.0, + "mode": "auto", + "native_max_value": 10, + "native_min_value": 0.5, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Display brightness", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "display_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "mode": "auto", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Fallback timeout", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_fallback_timeout", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "fallback_timeout", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 600, + "mode": "auto", + "native_max_value": 10800, + "native_min_value": 30, + "native_step": 1, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Display inactive brightness", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_inactive_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "display_inactive_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Open window detection guard period", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_open_window_detection_guard_period", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "open_window_detection_guard_period", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 120, + "mode": "auto", + "native_max_value": 7620, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Open window detection threshold", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_open_window_detection_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "open_window_detection_threshold", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.2, + "mode": "auto", + "native_max_value": 1.2, + "native_min_value": 0, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Open window event duration", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_open_window_event_duration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "open_window_event_duration", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1200, + "mode": "auto", + "native_max_value": 7620, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Ambient sensor correction", + "unique_id": "ab:cd:ef:12:64:55:32:d7-2-se_sensor_correction", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "ambient_sensor_correction", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10, + "native_min_value": -10, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "External sensor correction", + "unique_id": "ab:cd:ef:12:64:55:32:d7-3-se_sensor_correction", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "external_sensor_correction", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10, + "native_min_value": -10, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Fixed load demand", + "unique_id": "ab:cd:ef:12:64:55:32:d7-5-se_fixed_load_demand", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "fixed_load_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 5, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 10000, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "W" + } + ], + "select": [ + { + "fallback_name": "Control type", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_control_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "control_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PI", + "enum": "SEControlType", + "options": [ + "OnOff", + "PI", + "NoControl" + ] + }, + { + "fallback_name": "Heat transfer medium", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_heat_transfer_medium", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "heat_transfer_medium", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Nothing", + "enum": "SEHeatTransferMedium", + "options": [ + "Nothing", + "Hydronic", + "Air" + ] + }, + { + "fallback_name": "Heating emitter type", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_heating_emitter_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "heating_emitter_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Floor", + "enum": "SEHeatingEmitterType", + "options": [ + "Direct", + "Radiator", + "FanAssistedRadiator", + "RadiantPanel", + "Floor", + "NotSpecified" + ] + }, + { + "fallback_name": "Heating fuel", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_heating_fuel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "heating_fuel", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Electricity", + "enum": "SEHeatingFuel", + "options": [ + "Electricity", + "Gas", + "Oil", + "SolidFuel", + "Solar", + "ComunityHeating", + "HeatPump", + "NotSpecified" + ] + }, + { + "fallback_name": "Local temperature source", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_local_temperature_source_select", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "local_temperature_source", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Ambient", + "enum": "SELocalTemperatureSourceSelect", + "options": [ + "Ambient", + "External" + ] + }, + { + "fallback_name": "Thermostat application", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_thermostat_application", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "thermostat_application", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Floor", + "enum": "SEThermostatApplication", + "options": [ + "OccupiedSpace", + "Floor", + "NotKnown" + ] + }, + { + "fallback_name": "External temperature sensor type", + "unique_id": "ab:cd:ef:12:64:55:32:d7-3-se_temperature_sensor_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "external_temperature_sensor_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_option": "Sensor15kOhm", + "enum": "SETemperatureSensorType", + "options": [ + "Sensor2kOhm", + "Sensor10kOhm", + "Sensor12kOhm", + "Sensor15kOhm", + "Sensor33kOhm", + "Sensor47kOhm", + "SensorAbsent" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 21, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "off", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 0, + "unit": "%" + }, + { + "fallback_name": "Control status", + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-se_control_status", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "control_status", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "undefined_0x80", + "suggested_display_precision": null, + "unit": null, + "options": [ + "NormalOperation", + "NoTemperature", + "RemoteDemandOverride", + "WindowOpen", + "LocalForceOn", + "Maintenance", + "OutputTemporalLimit", + "SensorFault" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-2-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 13.16, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-3-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 13.75, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-5-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 5, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": null, + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-5-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 5, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": null, + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:64:55:32:d7-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:64:55:32:d7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x01004200", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00196-0x06000000.json b/tests/data/devices/sdevices-sbdv-00196-0x06000000.json new file mode 100644 index 000000000..e5c15b161 --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00196-0x06000000.json @@ -0,0 +1,381 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6c:05:ce:2b", + "nwk": "0x9E7E", + "manufacturer": "SDevices", + "model": "SBDV-00196", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00196", + "name": "SDevices SBDV-00196", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 252, + "rssi": -48, + "last_seen": "2026-08-11T17:03:02.149318+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00196" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x0117", + "name": "packet_buffer_allocate_failures", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0119", + "name": "phy_to_mac_queue_limit_reached", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 100663296 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00196", + "node_desc": { + "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": 5423, + "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": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 252, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -48, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:05:ce:2b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:05:ce:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x06000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00197-0x05000000.json b/tests/data/devices/sdevices-sbdv-00197-0x05000000.json new file mode 100644 index 000000000..a2935f82a --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00197-0x05000000.json @@ -0,0 +1,369 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6c:66:fd:40", + "nwk": "0xFB38", + "manufacturer": "SDevices", + "model": "SBDV-00197", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00197", + "name": "SDevices SBDV-00197", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 220, + "rssi": -56, + "last_seen": "2026-08-11T15:20:16.160738+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00197" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 69 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 83886080 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00197", + "node_desc": { + "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": 5423, + "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": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 220, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:66:fd:40-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:66:fd:40", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x05000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00199-0x06000000.json b/tests/data/devices/sdevices-sbdv-00199-0x06000000.json new file mode 100644 index 000000000..deed19743 --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00199-0x06000000.json @@ -0,0 +1,513 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:eb:92:ee:b2", + "nwk": "0xF370", + "manufacturer": "SDevices", + "model": "SBDV-00199", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00199", + "name": "SDevices SBDV-00199", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 255, + "rssi": -40, + "last_seen": "2026-08-11T17:03:43.607691+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00199" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 57 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 100663296 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00199", + "node_desc": { + "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": 5423, + "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": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0012", + "0xfccf" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -40, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x06000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00199-0xffffffff.json b/tests/data/devices/sdevices-sbdv-00199-0xffffffff.json new file mode 100644 index 000000000..fb61b216e --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00199-0xffffffff.json @@ -0,0 +1,415 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:eb:92:ee:b2", + "nwk": "0x3F5A", + "manufacturer": "SDevices", + "model": "SBDV-00199", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00199", + "name": "SDevices SBDV-00199", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 255, + "rssi": -41, + "last_seen": "2026-08-11T17:08:01.292847+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00199" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0015", + "name": "acceleration_time_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 10 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0016", + "name": "deceleration_time_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0014", + "name": "velocity_lift", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 57 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4294967295 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00199", + "node_desc": { + "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": 5423, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0102", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 3, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "shade", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -41, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": "Rollershade", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:92:ee:b2-3-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:92:ee:b2", + "endpoint_id": 3, + "available": true, + "group_id": null, + "installed_version": "0xffffffff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00200-0x05000000.json b/tests/data/devices/sdevices-sbdv-00200-0x05000000.json new file mode 100644 index 000000000..4dc5587ba --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00200-0x05000000.json @@ -0,0 +1,415 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:be:60:3e:d6", + "nwk": "0x79FA", + "manufacturer": "SDevices", + "model": "SBDV-00200", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00200", + "name": "SDevices SBDV-00200", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 236, + "rssi": -52, + "last_seen": "2026-08-11T17:09:54.132352+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00200" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0015", + "name": "acceleration_time_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0016", + "name": "deceleration_time_lift", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0014", + "name": "velocity_lift", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 54 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 83886080 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00200", + "node_desc": { + "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": 5423, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 82, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 82, + "descriptor_capability_field": 0 + }, + "endpoints": { + "3": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0102", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "shade", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 236, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -52, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": "Rollershade", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:60:3e:d6-3-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:60:3e:d6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "installed_version": "0x05000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00202-0x06000000.json b/tests/data/devices/sdevices-sbdv-00202-0x06000000.json new file mode 100644 index 000000000..bc6b76047 --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00202-0x06000000.json @@ -0,0 +1,376 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:12:07:07:a9", + "nwk": "0xD549", + "manufacturer": "SDevices", + "model": "SBDV-00202", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00202", + "name": "SDevices SBDV-00202", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": 255, + "rssi": -46, + "last_seen": "2026-08-11T17:05:43.437525+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "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": 260, + "device_type": { + "name": "MAIN_POWER_OUTLET", + "id": 9 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00202" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 64 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 100663296 + } + ] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00202", + "node_desc": { + "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": 5423, + "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": "0x0009", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x000a", + "0x0019", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -46, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.3, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:12:07:07:a9-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:12:07:07:a9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x06000000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sdevices-sbdv-00205-0x0619091a.json b/tests/data/devices/sdevices-sbdv-00205-0x0619091a.json new file mode 100644 index 000000000..882a75944 --- /dev/null +++ b/tests/data/devices/sdevices-sbdv-00205-0x0619091a.json @@ -0,0 +1,758 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:01:10:be:37", + "nwk": "0x5600", + "manufacturer": "SDevices", + "model": "SBDV-00205", + "friendly_manufacturer": "SDevices", + "friendly_model": "SBDV-00205", + "name": "SDevices SBDV-00205", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5423, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "2026-08-24T06:10:13.853563+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5423, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SDevices" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SBDV-00205" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 49 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 5000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 100 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 960 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3500 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2600 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 1 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 960 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x010b", + "name": "aps_tx_ucast_fail", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x010a", + "name": "aps_tx_ucast_retry", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x0109", + "name": "aps_tx_ucast_success", + "zcl_type": "uint16", + "value": 11362 + }, + { + "id": "0x011b", + "name": "average_mac_retry_per_aps_message_sent", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0103", + "name": "mac_tx_ucast", + "zcl_type": "uint32", + "value": 14004 + }, + { + "id": "0x0105", + "name": "mac_tx_ucast_fail", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0104", + "name": "mac_tx_ucast_retry", + "zcl_type": "uint16", + "value": 64 + }, + { + "id": "0x0000", + "name": "number_of_resets", + "zcl_type": "uint16", + "value": 60 + }, + { + "id": "0x0117", + "name": "packet_buffer_allocate_failures", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0119", + "name": "phy_to_mac_queue_limit_reached", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfccf", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 102304026 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0704", + "endpoint_attribute": "smartenergy_tunneling", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SDevices", + "model": "SBDV-00205", + "node_desc": { + "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": 5423, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0002", + "0x0003", + "0x0004", + "0x0005", + "0x0201", + "0x0204", + "0x0402", + "0x0b05", + "0xfccf" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019", + "0x0201", + "0x0402", + "0x0704" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 9.6, + "outdoor_temperature": null, + "target_temperature": 26.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "heating", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 35.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2600, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 35.0, + "mode": "box", + "native_max_value": 50.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 35.0, + "native_min_value": 1.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 9.6, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-2", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DeviceTemperature", + "translation_key": "device_temperature", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.49, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "heating", + "suggested_display_precision": null, + "unit": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:10:be:37-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:10:be:37", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0619091a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/shelly-blu-distance.json b/tests/data/devices/shelly-blu-distance.json new file mode 100644 index 000000000..25d248ffb --- /dev/null +++ b/tests/data/devices/shelly-blu-distance.json @@ -0,0 +1,322 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:39:18:9e:5f", + "nwk": "0x5219", + "manufacturer": "Shelly", + "model": "BLU Distance", + "friendly_manufacturer": "Shelly", + "friendly_model": "BLU Distance", + "name": "Shelly BLU Distance", + "quirk_applied": true, + "quirk_class": "zhaquirks.shelly.distance:(Shelly / BLU Distance)", + "exposes_features": [], + "manufacturer_code": 5264, + "power_source": "Battery or Unknown", + "lqi": 112, + "rssi": -72, + "last_seen": "2026-03-25T16:41:31.988679+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5264, + "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": 260, + "device_type": { + "name": "OCCUPANCY_SENSOR", + "id": 263 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Shelly" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "BLU Distance" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc22", + "endpoint_attribute": "shelly_distance_config", + "attributes": [ + { + "id": "0x0000", + "name": "distance", + "zcl_type": "uint16", + "value": 919 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Shelly", + "model": "BLU Distance", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5264, + "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": "0x0107", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0406", + "0xfc22" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 112, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -72, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": "Target distance", + "unique_id": "ab:cd:ef:12:39:18:9e:5f-1-distance", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "target_distance", + "translation_placeholders": null, + "device_class": "distance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:39:18:9e:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 919, + "suggested_display_precision": null, + "unit": "mm" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/shelly-blu-trv.json b/tests/data/devices/shelly-blu-trv.json new file mode 100644 index 000000000..4c1ddceb0 --- /dev/null +++ b/tests/data/devices/shelly-blu-trv.json @@ -0,0 +1,712 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:db:a7:20:f2", + "nwk": "0x0B1B", + "manufacturer": "Shelly", + "model": "BLU TRV", + "friendly_manufacturer": "Shelly", + "friendly_model": "BLU TRV", + "name": "Shelly BLU TRV", + "quirk_applied": true, + "quirk_class": "zhaquirks.shelly.trv:(Shelly / BLU TRV)", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-01-08T20:18:29.464410+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Shelly" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "BLU TRV" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 400 + }, + { + "id": "0x001d", + "name": "alarm_mask", + "zcl_type": "map8", + "value": 4 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2384 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 400 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2220 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x001a", + "name": "remote_sensing", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "value": 2020 + } + ] + }, + { + "cluster_id": "0xfc24", + "endpoint_attribute": "shelly_trv_mode", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Shelly", + "model": "BLU TRV", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x0005", + "0x0201", + "0xfc24" + ], + "output_clusters": [ + "0x0003", + "0x0402", + "0x0406" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Calibrate valve", + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-calibrate", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "Button", + "translation_key": "calibrate_valve", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "calibrate", + "args": [], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 23.84, + "outdoor_temperature": null, + "target_temperature": 22.2, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 4.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": 1, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2220, + "pi_heating_demand": 0, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": 2020 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 4.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 4.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 4.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Valve position", + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-position", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "valve_position", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "%" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 0, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-513-setpoint_change_source_timestamp", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSourceTimestamp", + "translation_key": "setpoint_change_source_timestamp", + "translation_placeholders": null, + "device_class": "timestamp", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": "Manual mode", + "unique_id": "ab:cd:ef:12:db:a7:20:f2-1-trv_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "manual_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:db:a7:20:f2", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "trv_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/shelly-mini1pm-0x020000ff.json b/tests/data/devices/shelly-mini1pm-0x020000ff.json new file mode 100644 index 000000000..7fec54b92 --- /dev/null +++ b/tests/data/devices/shelly-mini1pm-0x020000ff.json @@ -0,0 +1,943 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "nwk": "0xBF05", + "manufacturer": "Shelly", + "model": "Mini1PM", + "friendly_manufacturer": "Shelly", + "friendly_model": "Mini1PM", + "name": "Shelly Mini1PM", + "quirk_applied": true, + "quirk_class": "zhaquirks.shelly.wifi:(Shelly / 1PM)", + "exposes_features": [], + "manufacturer_code": 5264, + "power_source": "Mains", + "lqi": 148, + "rssi": -74, + "last_seen": "2026-08-02T21:54:46.837501+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5264, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Shelly" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Mini1PM" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 27 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 5011 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 24393 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 33554687 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0007", + "endpoint_attribute": "on_off_config", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + } + ] + }, + "239": { + "profile_id": 49153, + "device_type": { + "name": "unknown", + "id": 8193 + }, + "in_clusters": [ + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "shelly_wifi_setup", + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Shelly", + "model": "Mini1PM", + "node_desc": { + "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": 5264, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b04", + "0x0702" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0007" + ], + "output_clusters": [ + "0x0004", + "0x0006", + "0x0003", + "0x0005" + ] + }, + "239": { + "profile_id": "0xc001", + "device_type": "0x2001", + "input_clusters": [ + "0xfc01", + "0xfc02" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 148, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-1794-summation_received", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummationReceived", + "translation_key": "summation_received", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.11, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 243.93, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6a:0d:2c:ef-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6a:0d:2c:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x020000ff", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/shelly-presence-0x01096300.json b/tests/data/devices/shelly-presence-0x01096300.json new file mode 100644 index 000000000..c668064e7 --- /dev/null +++ b/tests/data/devices/shelly-presence-0x01096300.json @@ -0,0 +1,914 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:31:48:95:e1", + "nwk": "0xC99C", + "manufacturer": "Shelly", + "model": "Presence", + "friendly_manufacturer": "Shelly", + "friendly_model": "Presence", + "name": "Shelly Presence", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5264, + "power_source": "Mains", + "lqi": 255, + "rssi": -29, + "last_seen": "2026-05-04T07:25:17.743541+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5264, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Shelly" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Presence" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfc21", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 17392384 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "5": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "6": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "7": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "8": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "9": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "10": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0406", + "id": 1030 + }, + "in_clusters": [ + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "239": { + "profile_id": 49153, + "device_type": { + "name": "unknown", + "id": 8193 + }, + "in_clusters": [ + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Shelly", + "model": "Presence", + "node_desc": { + "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": 5264, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0406", + "0xfc21" + ], + "output_clusters": [ + "0x0019", + "0x0003" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "6": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "7": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "8": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "9": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "10": { + "profile_id": "0x0104", + "device_type": "0x0406", + "input_clusters": [ + "0x0406" + ], + "output_clusters": [] + }, + "239": { + "profile_id": "0xc001", + "device_type": "0x2001", + "input_clusters": [ + "0xfc01", + "0xfc02" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-10-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 10, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-2-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-3-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-4-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 4, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-5-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 5, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-6-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 6, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-7-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 7, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-8-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 8, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-9-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 9, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -29, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:31:48:95:e1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:31:48:95:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x01096300", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/signify-netherlands-b-v-929004297401-0x01002604.json b/tests/data/devices/signify-netherlands-b-v-929004297401-0x01002604.json new file mode 100644 index 000000000..806be8c34 --- /dev/null +++ b/tests/data/devices/signify-netherlands-b-v-929004297401-0x01002604.json @@ -0,0 +1,549 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9e:ce:08:02", + "nwk": "0x3F8A", + "manufacturer": "Signify Netherlands B.V.", + "model": "929004297401", + "friendly_manufacturer": "Signify Netherlands B.V.", + "friendly_model": "929004297401", + "name": "Signify Netherlands B.V. 929004297401", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 127, + "rssi": null, + "last_seen": "2025-12-13T01:56:59.327673+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Signify Netherlands B.V." + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "929004297401" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 254 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 214 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 211 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 23392 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 9583 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 366 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16786948 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Signify Netherlands B.V.", + "model": "929004297401", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0x1000", + "0xfc01" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": true, + "brightness": 51, + "xy_color": [ + 0.3569390402075227, + 0.14622720683604182 + ], + "color_temp": 214, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "xy", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 366, + "mode": "auto", + "native_max_value": 500, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 127, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:ce:08:02-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:ce:08:02", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01002604", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/signify-netherlands-b-v-lcx004-0x01002000.json b/tests/data/devices/signify-netherlands-b-v-lcx004-0x01002000.json new file mode 100644 index 000000000..4e6b1947a --- /dev/null +++ b/tests/data/devices/signify-netherlands-b-v-lcx004-0x01002000.json @@ -0,0 +1,555 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:16:33:04:fc", + "nwk": "0x65DA", + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX004", + "friendly_manufacturer": "Philips", + "friendly_model": "Hue Gradient lightstrip", + "name": "Philips Hue Gradient lightstrip", + "quirk_applied": true, + "quirk_class": "zhaquirks.philips.hue_light:(Signify Netherlands B.V. / LCX004)", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 136, + "rssi": -66, + "last_seen": "2026-01-29T11:47:36.331518+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Signify Netherlands B.V." + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LCX004" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 254 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 262 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 215 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 242 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 25558 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 11311 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 366 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "philips_hue_light_cluster", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16785408 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX004", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0x1000", + "0xfc01", + "0xfc03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": false, + "brightness": 1, + "xy_color": [ + 0.38999008163576715, + 0.17259479667353322 + ], + "color_temp": 262, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "xy", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 366, + "mode": "auto", + "native_max_value": 500, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 136, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -66, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:33:04:fc-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:33:04:fc", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01002000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/signify-netherlands-b-v-lcx024-0x01002000.json b/tests/data/devices/signify-netherlands-b-v-lcx024-0x01002000.json new file mode 100644 index 000000000..202cbe2ff --- /dev/null +++ b/tests/data/devices/signify-netherlands-b-v-lcx024-0x01002000.json @@ -0,0 +1,561 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "nwk": "0x5C45", + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX024", + "friendly_manufacturer": "Philips", + "friendly_model": "Hue Festavia globe outdoor string lights", + "name": "Philips Hue Festavia globe outdoor string lights", + "quirk_applied": true, + "quirk_class": "zhaquirks.philips.hue_light:(Signify Netherlands B.V. / LCX024)", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 102, + "rssi": null, + "last_seen": "2026-04-03T13:17:41.537872+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Signify Netherlands B.V." + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LCX024" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 89 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 367 + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 32 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 141 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 30003 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 26878 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 367 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "philips_hue_light_cluster", + "attributes": [] + }, + { + "cluster_id": "0xfc04", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16785408 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX024", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0xfc03", + "0x0300", + "0xfc01", + "0xfc04" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": false, + "brightness": 89, + "xy_color": [ + 0.4578164339665827, + 0.4101319905394064 + ], + "color_temp": 367, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "color_temp", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 50, + "max_mireds": 1000 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 367, + "mode": "auto", + "native_max_value": 1000, + "native_min_value": 50, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 102, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ae:e1:4b:9b-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ae:e1:4b:9b", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01002000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/signify-netherlands-b-v-lcx029-0x01002000.json b/tests/data/devices/signify-netherlands-b-v-lcx029-0x01002000.json new file mode 100644 index 000000000..c80eefd87 --- /dev/null +++ b/tests/data/devices/signify-netherlands-b-v-lcx029-0x01002000.json @@ -0,0 +1,610 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:53:5c:d5:d5", + "nwk": "0x97C5", + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX029", + "friendly_manufacturer": "Philips", + "friendly_model": "Hue Festavia globe outdoor string lights", + "name": "Philips Hue Festavia globe outdoor string lights", + "quirk_applied": true, + "quirk_class": "zhaquirks.philips.hue_light:(Signify Netherlands B.V. / LCX029)", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Mains", + "lqi": 72, + "rssi": -82, + "last_seen": "2026-06-07T15:40:06.982071+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": 260, + "device_type": { + "name": "EXTENDED_COLOR_LIGHT", + "id": 269 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Signify Netherlands B.V." + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "LCX029" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x4000", + "name": "global_scene_control", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 42 + } + ] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 496 + }, + { + "id": "0x0006", + "name": "compensation_text", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0000", + "name": "current_hue", + "zcl_type": "uint8", + "value": 28 + }, + { + "id": "0x0001", + "name": "current_saturation", + "zcl_type": "uint8", + "value": 229 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 34412 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 27329 + }, + { + "id": "0x4001", + "name": "enhanced_color_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 367 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "philips_hue_light_cluster", + "attributes": [] + }, + { + "cluster_id": "0xfc04", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16785408 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Signify Netherlands B.V.", + "model": "LCX029", + "node_desc": { + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "11": { + "profile_id": "0x0104", + "device_type": "0x010d", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0xfc03", + "0x0300", + "0xfc01", + "0xfc04" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "HueLight", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": [ + 0.5250934615091173, + 0.4170138094148165 + ], + "color_temp": 496, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "color_temp", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 50, + "max_mireds": 1000 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 367, + "mode": "auto", + "native_max_value": 1000, + "native_min_value": 50, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "native_value": 42, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 72, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -82, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:53:5c:d5:d5-11-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:53:5c:d5:d5", + "endpoint_id": 11, + "available": true, + "group_id": null, + "installed_version": "0x01002000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sinope-technologies-th1320zb-04-0x00000501.json b/tests/data/devices/sinope-technologies-th1320zb-04-0x00000501.json new file mode 100644 index 000000000..027b2e113 --- /dev/null +++ b/tests/data/devices/sinope-technologies-th1320zb-04-0x00000501.json @@ -0,0 +1,1418 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:16:30:1a:3d", + "nwk": "0xFE1B", + "manufacturer": "Sinope Technologies", + "model": "TH1320ZB-04", + "friendly_manufacturer": "Sinope Technologies", + "friendly_model": "TH1320ZB-04", + "name": "Sinope Technologies TH1320ZB-04", + "quirk_applied": true, + "quirk_class": "zhaquirks.sinope.thermostat:SinopeLineThermostats", + "exposes_features": [], + "manufacturer_code": 4508, + "power_source": "Mains", + "lqi": 255, + "rssi": -46, + "last_seen": "2026-04-25T18:48:08.612523+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": true, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4508, + "maximum_buffer_size": 71, + "maximum_incoming_transfer_size": 43, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 43, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Sinope Technologies" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TH1320ZB-04" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3600 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001d", + "name": "alarm_mask", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0404", + "name": "aux_cycle_output", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0402", + "name": "backlight_auto_dim_param", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x003a", + "name": "emergency_heat_delta", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 1996 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3600 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2000 + }, + { + "id": "0x0001", + "name": "outdoor_temperature", + "zcl_type": "int16", + "value": -32768 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x001a", + "name": "remote_sensing", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0x0031", + "name": "setpoint_change_amount", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0009", + "name": "system_type_config", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0023", + "name": "temp_setpoint_hold", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "value": 1500 + }, + { + "id": "0x0037", + "name": "unoccupied_setback", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "schedule_programming_visibility", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "temperature_display_mode", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0002", + "name": "max_measured_value", + "zcl_type": "int16", + "value": 10000 + }, + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 1993 + }, + { + "id": "0x0001", + "name": "min_measured_value", + "zcl_type": "int16", + "value": -1500 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0003", + "name": "tolerance", + "zcl_type": "uint16", + "value": 50 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 825407 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 193 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "value": 840 + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "value": 792 + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 12 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 240 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xff01", + "endpoint_attribute": "sinope_manufacturer_specific", + "attributes": [ + { + "id": "0x0070", + "name": "current_load", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x010c", + "name": "floor_limit_status", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0107", + "name": "floor_temperature", + "zcl_type": "int16", + "value": 1994 + }, + { + "id": "0x0115", + "name": "gfci_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0010", + "name": "outdoor_temp", + "zcl_type": "int16", + "value": 4200 + }, + { + "id": "0x0011", + "name": "outdoor_temp_timeout", + "zcl_type": "uint16", + "value": 10800 + }, + { + "id": "0x012d", + "name": "report_local_temperature", + "zcl_type": "int16", + "value": 2000 + }, + { + "id": "0x010d", + "name": "room_temperature", + "zcl_type": "int16", + "value": 1980 + }, + { + "id": "0x0020", + "name": "secs_since_2k", + "zcl_type": "uint32", + "value": 830441911.68247 + }, + { + "id": "0x0104", + "name": "setpoint", + "zcl_type": "int16", + "value": 2000 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0114", + "name": "time_format", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0x0004", + "name": "dst_end", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0005", + "name": "dst_shift", + "zcl_type": "int32", + "unsupported": true + }, + { + "id": "0x0003", + "name": "dst_start", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0007", + "name": "local_time", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0006", + "name": "standard_time", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x0001", + "name": "time_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "time_zone", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 1281 + }, + { + "id": "0x0004", + "name": "downloaded_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Sinope Technologies", + "model": "TH1320ZB-04", + "node_desc": { + "logical_type": 1, + "complex_descriptor_available": 0, + "user_descriptor_available": 1, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4508, + "maximum_buffer_size": 71, + "maximum_incoming_transfer_size": 43, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 43, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0201", + "0x0204", + "0x0402", + "0x0702", + "0x0b04", + "0x0b05", + "0xff01" + ], + "output_clusters": [ + "0x000a", + "0xff01", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "SinopeTechnologiesThermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 19.96, + "outdoor_temperature": -327.68, + "target_temperature": 20.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 36.0, + "min_temp": 5.0, + "supported_features": 401, + "fan_modes": null, + "preset_modes": [ + "away", + "none" + ], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": 1, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2000, + "pi_heating_demand": 0, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": 1500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 36.0, + "mode": "box", + "native_max_value": 36.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 36.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -46, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 19.93, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 825.407, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": 840.0, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 792.0, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": "APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 240.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SinopeHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 0, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:16:30:1a:3d-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:16:30:1a:3d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000501", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-basic-zb1gsp-0x00001000.json b/tests/data/devices/sonoff-basic-zb1gsp-0x00001000.json new file mode 100644 index 000000000..6362e8028 --- /dev/null +++ b/tests/data/devices/sonoff-basic-zb1gsp-0x00001000.json @@ -0,0 +1,889 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9d:2e:1d:13", + "nwk": "0x3058", + "manufacturer": "SONOFF", + "model": "BASIC-ZB1GSP", + "friendly_manufacturer": "SONOFF", + "friendly_model": "BASIC-ZB1GSP", + "name": "SONOFF BASIC-ZB1GSP", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -19, + "last_seen": "2026-05-25T03:10:13.119266+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "BASIC-ZB1GSP" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 179540 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 16 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4096 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "BASIC-ZB1GSP", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -19, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 179.54, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.16, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-basic-zb1gsp-0x00001302.json b/tests/data/devices/sonoff-basic-zb1gsp-0x00001302.json new file mode 100644 index 000000000..d19853951 --- /dev/null +++ b/tests/data/devices/sonoff-basic-zb1gsp-0x00001302.json @@ -0,0 +1,859 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9d:2e:1d:13", + "nwk": "0x92ED", + "manufacturer": "SONOFF", + "model": "BASIC-ZB1GSP", + "friendly_manufacturer": "SONOFF", + "friendly_model": "BASIC-ZB1GSP", + "name": "SONOFF BASIC-ZB1GSP", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -32, + "last_seen": "2026-09-18T10:16:26.395938+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "BASIC-ZB1GSP" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4866 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "BASIC-ZB1GSP", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -32, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.03, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9d:2e:1d:13-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9d:2e:1d:13", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001302", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-dongle-lmg21-zbrouter.json b/tests/data/devices/sonoff-dongle-lmg21-zbrouter.json new file mode 100644 index 000000000..2ba828b03 --- /dev/null +++ b/tests/data/devices/sonoff-dongle-lmg21-zbrouter.json @@ -0,0 +1,516 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:48:70:18:b1", + "nwk": "0x534A", + "manufacturer": "SONOFF", + "model": "Dongle-LMG21_ZBRouter", + "friendly_manufacturer": "SONOFF", + "friendly_model": "Dongle-LMG21_ZBRouter", + "name": "SONOFF Dongle-LMG21_ZBRouter", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 144, + "rssi": -64, + "last_seen": "2026-08-31T12:12:11.972420+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "Dongle-LMG21_ZBRouter" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 51 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "Dongle-LMG21_ZBRouter", + "node_desc": { + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000" + ], + "output_clusters": [ + "0x0019", + "0x0406" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 51, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-8-default_move_rate", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "DefaultMoveRateConfigurationEntity", + "translation_key": "default_move_rate", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 254, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 254, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 51, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 144, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -64, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:48:70:18:b1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:48:70:18:b1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-mini-zb1gp-0x00001204.json b/tests/data/devices/sonoff-mini-zb1gp-0x00001204.json new file mode 100644 index 000000000..02af752d8 --- /dev/null +++ b/tests/data/devices/sonoff-mini-zb1gp-0x00001204.json @@ -0,0 +1,593 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:f2:24:18:6a", + "nwk": "0x24CB", + "manufacturer": "SONOFF", + "model": "MINI-ZB1GP", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZB1GP", + "name": "SONOFF MINI-ZB1GP", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 212, + "rssi": -47, + "last_seen": "2026-07-13T08:00:00.916521+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "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": 260, + "device_type": { + "name": "METER_INTERFACE", + "id": 83 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "MINI-ZB1GP" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [] + }, + { + "cluster_id": "0x0b01", + "endpoint_attribute": "meter_id", + "attributes": [] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4612 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "MINI-ZB1GP", + "node_desc": { + "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": 4742, + "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": "0x0053", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b01", + "0x0b04", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 212, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -47, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 3, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f2:24:18:6a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f2:24:18:6a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001204", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-mini-zb1gs-0x00001204.json b/tests/data/devices/sonoff-mini-zb1gs-0x00001204.json new file mode 100644 index 000000000..9d886863b --- /dev/null +++ b/tests/data/devices/sonoff-mini-zb1gs-0x00001204.json @@ -0,0 +1,630 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:f9:89:18:0d", + "nwk": "0xF502", + "manufacturer": "SONOFF", + "model": "MINI-ZB1GS", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZB1GS", + "name": "SONOFF MINI-ZB1GS", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -26, + "last_seen": "2026-07-13T07:56:22.104907+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "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": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "MINI-ZB1GS" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4612 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "MINI-ZB1GS", + "node_desc": { + "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": 4742, + "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": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -26, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 3, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:f9:89:18:0d-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:f9:89:18:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001204", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-mini-zb1gsp-0x00001101.json b/tests/data/devices/sonoff-mini-zb1gsp-0x00001101.json new file mode 100644 index 000000000..d3ffc9d67 --- /dev/null +++ b/tests/data/devices/sonoff-mini-zb1gsp-0x00001101.json @@ -0,0 +1,630 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:43:a7:31:91", + "nwk": "0x9DBE", + "manufacturer": "SONOFF", + "model": "MINI-ZB1GSP", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZB1GSP", + "name": "SONOFF MINI-ZB1GSP", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -24, + "last_seen": "2026-07-13T06:28:27.430234+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "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": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "MINI-ZB1GSP" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4353 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "MINI-ZB1GSP", + "node_desc": { + "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": 4742, + "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": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -24, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 3, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": null, + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:43:a7:31:91-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:43:a7:31:91", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001101", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-mini-zb2gs-l-0x00001004.json b/tests/data/devices/sonoff-mini-zb2gs-l-0x00001004.json new file mode 100644 index 000000000..9964aa880 --- /dev/null +++ b/tests/data/devices/sonoff-mini-zb2gs-l-0x00001004.json @@ -0,0 +1,670 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:77:d9:9e:93", + "nwk": "0xC567", + "manufacturer": "SONOFF", + "model": "MINI-ZB2GS-L", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZB2GS-L", + "name": "SONOFF MINI-ZB2GS-L", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.mini_zb2gs:(SONOFF / MINI-ZB2GS-L)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -23, + "last_seen": "2026-04-06T17:57:19.437857+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1024, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1024, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "MINI-ZB2GS-L" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0019", + "name": "detach_relay", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0016", + "name": "external_trigger_mode", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0001", + "name": "network_led", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0012", + "name": "turbo_mode", + "zcl_type": "int16", + "value": 9 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": false + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4100 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0019", + "name": "detach_relay", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0016", + "name": "external_trigger_mode", + "zcl_type": "uint8", + "value": 1 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": false + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "MINI-ZB2GS-L", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 1024, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1024, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0006", + "0x0020", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0006", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-2-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "Detach relay", + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-detach_relay", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "detach_relay", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "All channels disabled", + "enum": "SonoffDetachRelayType", + "options": [ + "All channels disabled", + "CH1 enabled", + "CH2 enabled", + "All channels enabled" + ] + }, + { + "fallback_name": "External trigger mode", + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-external_trigger_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "external_trigger_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Pulse trigger", + "enum": "SonoffExternalSwitchTriggerType", + "options": [ + "Edge trigger", + "Pulse trigger", + "Normally off follow trigger", + "Normally on follow trigger" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "External trigger mode", + "unique_id": "ab:cd:ef:12:77:d9:9e:93-2-external_trigger_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "external_trigger_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "Pulse trigger", + "enum": "SonoffExternalSwitchTriggerType", + "options": [ + "Edge trigger", + "Pulse trigger", + "Normally off follow trigger", + "Normally on follow trigger" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -23, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:77:d9:9e:93-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:77:d9:9e:93", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-mini-zbd-0x00001000.json b/tests/data/devices/sonoff-mini-zbd-0x00001000.json new file mode 100644 index 000000000..21295681c --- /dev/null +++ b/tests/data/devices/sonoff-mini-zbd-0x00001000.json @@ -0,0 +1,520 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a4:98:ed:e1", + "nwk": "0xFE81", + "manufacturer": "SONOFF", + "model": "MINI-ZBD", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZBD", + "name": "SONOFF MINI-ZBD", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.zbminir2:(SONOFF / ZBMINIR2)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 153, + "rssi": null, + "last_seen": "2026-03-26T08:11:47.642689+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "MINI-ZBD" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0017", + "name": "detach_relay", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0016", + "name": "external_trigger_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0001", + "name": "network_led", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0012", + "name": "turbo_mode", + "zcl_type": "int16", + "value": 9 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4096 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "MINI-ZBD", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "External trigger mode", + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-external_trigger_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "external_trigger_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Edge trigger", + "enum": "SonoffExternalSwitchTriggerType", + "options": [ + "Edge trigger", + "Pulse trigger", + "Normally off follow trigger", + "Normally on follow trigger" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 153, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Detach relay", + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-detach_relay", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detach_relay", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "detach_relay", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Network LED", + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-network_led", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "network_led", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "network_led", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Turbo mode", + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-turbo_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "turbo_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "turbo_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 9, + "on_value": 20 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a4:98:ed:e1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a4:98:ed:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-s60zbtpf-0x00002004.json b/tests/data/devices/sonoff-s60zbtpf-0x00002004.json new file mode 100644 index 000000000..ee00e8272 --- /dev/null +++ b/tests/data/devices/sonoff-s60zbtpf-0x00002004.json @@ -0,0 +1,886 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:88:55:4d:2b", + "nwk": "0xA097", + "manufacturer": "SONOFF", + "model": "S60ZBTPF", + "friendly_manufacturer": "SONOFF", + "friendly_model": "S60ZBTPF", + "name": "SONOFF S60ZBTPF", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.s60zbtpf:(SONOFF / S60ZBTPF)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -14, + "last_seen": "2026-06-08T09:17:18.588195+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "S60ZBTPF" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 23573 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "ewelink", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 8196 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "S60ZBTPF", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -14, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 235.73, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Network LED", + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-network_led", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "network_led", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "network_led", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:55:4d:2b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:55:4d:2b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00002004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-s60zbtpg-0x00002004.json b/tests/data/devices/sonoff-s60zbtpg-0x00002004.json new file mode 100644 index 000000000..06296c2f3 --- /dev/null +++ b/tests/data/devices/sonoff-s60zbtpg-0x00002004.json @@ -0,0 +1,886 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:0b:76:b6:2c", + "nwk": "0x848E", + "manufacturer": "SONOFF", + "model": "S60ZBTPG", + "friendly_manufacturer": "SONOFF", + "friendly_model": "S60ZBTPG", + "name": "SONOFF S60ZBTPG", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.s60zbtpf:(SONOFF / S60ZBTPF)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -26, + "last_seen": "2026-06-08T09:17:17.337362+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "S60ZBTPG" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "ewelink", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 8196 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "S60ZBTPG", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -26, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Network LED", + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-network_led", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "network_led", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "network_led", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:0b:76:b6:2c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:0b:76:b6:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00002004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-s61szbtpb-0x00001003.json b/tests/data/devices/sonoff-s61szbtpb-0x00001003.json new file mode 100644 index 000000000..013376b71 --- /dev/null +++ b/tests/data/devices/sonoff-s61szbtpb-0x00001003.json @@ -0,0 +1,859 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:85:ee:96:e1", + "nwk": "0x2477", + "manufacturer": "SONOFF", + "model": "S61SZBTPB", + "friendly_manufacturer": "SONOFF", + "friendly_model": "S61SZBTPB", + "name": "SONOFF S61SZBTPB", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -33, + "last_seen": "2026-09-03T08:39:17.786940+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "S61SZBTPB" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 100 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4099 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "S61SZBTPB", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -33, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:85:ee:96:e1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:85:ee:96:e1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001003", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-snzb-02dr2-0x00001005.json b/tests/data/devices/sonoff-snzb-02dr2-0x00001005.json new file mode 100644 index 000000000..ec1c0d558 --- /dev/null +++ b/tests/data/devices/sonoff-snzb-02dr2-0x00001005.json @@ -0,0 +1,618 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:14:61:46:7e", + "nwk": "0x1BCD", + "manufacturer": "SONOFF", + "model": "SNZB-02DR2", + "friendly_manufacturer": "SONOFF", + "friendly_model": "SNZB-02DR2", + "name": "SONOFF SNZB-02DR2", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.snzb02d:(SONOFF / SNZB-02D)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -35, + "last_seen": "2026-08-21T03:30:05.200870+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SNZB-02DR2" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 32 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2850 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 6100 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0006", + "name": "comfort_humidity_max", + "zcl_type": "uint16", + "value": 6000 + }, + { + "id": "0x0005", + "name": "comfort_humidity_min", + "zcl_type": "uint16", + "value": 4000 + }, + { + "id": "0x0003", + "name": "comfort_temperature_max", + "zcl_type": "int16", + "value": 2700 + }, + { + "id": "0x0004", + "name": "comfort_temperature_min", + "zcl_type": "int16", + "value": 1900 + }, + { + "id": "0x2004", + "name": "humidity_offset", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x2003", + "name": "temperature_offset", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0007", + "name": "temperature_unit", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4101 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "SNZB-02DR2", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0402", + "0x0405", + "0x0020", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": "Comfort humidity max", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-comfort_humidity_max", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "comfort_humidity_max", + "translation_placeholders": null, + "device_class": "humidity", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 60.0, + "mode": "auto", + "native_max_value": 95, + "native_min_value": 5, + "native_step": 0.1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Comfort humidity min", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-comfort_humidity_min", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "comfort_humidity_min", + "translation_placeholders": null, + "device_class": "humidity", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40.0, + "mode": "auto", + "native_max_value": 95, + "native_min_value": 5, + "native_step": 0.1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Comfort temperature max", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-comfort_temperature_max", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "comfort_temperature_max", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 27.0, + "mode": "auto", + "native_max_value": 60, + "native_min_value": -10, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Comfort temperature min", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-comfort_temperature_min", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "comfort_temperature_min", + "translation_placeholders": null, + "device_class": "temperature", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 19.0, + "mode": "auto", + "native_max_value": 60, + "native_min_value": -10, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": "Humidity offset", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-humidity_offset", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "humidity_offset", + "translation_placeholders": null, + "device_class": "humidity", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 50, + "native_min_value": -50, + "native_step": 0.1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Temperature offset", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-temperature_offset", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "temperature_offset", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 50, + "native_min_value": -50, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": "Display unit", + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-temperature_unit", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "display_unit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Celsius", + "enum": "TemperatureUnit", + "options": [ + "Celsius", + "Fahrenheit" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -35, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.2 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 28.5, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 61.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:61:46:7e-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:61:46:7e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001005", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-snzb-02ld-0x00001100.json b/tests/data/devices/sonoff-snzb-02ld-0x00001100.json new file mode 100644 index 000000000..c44b45e17 --- /dev/null +++ b/tests/data/devices/sonoff-snzb-02ld-0x00001100.json @@ -0,0 +1,416 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b6:99:73:fd", + "nwk": "0x691D", + "manufacturer": "SONOFF", + "model": "SNZB-02LD", + "friendly_manufacturer": "SONOFF", + "friendly_model": "SNZB-02LD", + "name": "SONOFF SNZB-02LD", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.snzb02ld:(SONOFF / SNZB-02LD)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-06-03T03:32:46.325390+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SNZB-02LD" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 32 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2660 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x2003", + "name": "temperature_offset", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0007", + "name": "temperature_unit", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4352 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "SNZB-02LD", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0402", + "0x0020", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": "Temperature offset", + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-temperature_offset", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "temperature_offset", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 50, + "native_min_value": -50, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "select": [ + { + "fallback_name": "Display unit", + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-temperature_unit", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "display_unit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Fahrenheit", + "enum": "TemperatureUnit", + "options": [ + "Celsius", + "Fahrenheit" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.2 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 26.6, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b6:99:73:fd-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b6:99:73:fd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001100", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-snzb-06p24-0x00001000.json b/tests/data/devices/sonoff-snzb-06p24-0x00001000.json new file mode 100644 index 000000000..44c9e6c8a --- /dev/null +++ b/tests/data/devices/sonoff-snzb-06p24-0x00001000.json @@ -0,0 +1,356 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8e:52:68:76", + "nwk": "0x940A", + "manufacturer": "SONOFF", + "model": "SNZB-06P24", + "friendly_manufacturer": "SONOFF", + "friendly_model": "SNZB-06P24", + "name": "SONOFF SNZB-06P24", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -23, + "last_seen": "2026-04-07T02:24:47.492844+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "OCCUPANCY_SENSOR", + "id": 263 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SNZB-06P24" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 20009 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "value": 15 + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4096 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "SNZB-06P24", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0107", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0400", + "0x0406", + "0xfc11", + "0xfc57" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-1030-pir_o_to_u_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIROccupiedToUnoccupiedDelayConfigurationEntity", + "translation_key": "pir_o_to_u_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 15, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -23, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-1024", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Illuminance", + "translation_key": null, + "translation_placeholders": null, + "device_class": "illuminance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": null, + "unit": "lx" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8e:52:68:76-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8e:52:68:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001000", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-snzb-09p-0x00001100.json b/tests/data/devices/sonoff-snzb-09p-0x00001100.json new file mode 100644 index 000000000..18e6ded2a --- /dev/null +++ b/tests/data/devices/sonoff-snzb-09p-0x00001100.json @@ -0,0 +1,528 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:42:7c:ea:9f", + "nwk": "0xCC96", + "manufacturer": "SONOFF", + "model": "SNZB-09P", + "friendly_manufacturer": "SONOFF", + "friendly_model": "SNZB-09P", + "name": "SONOFF SNZB-09P", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -22, + "last_seen": "2026-07-02T08:39:30.446614+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_WARNING_DEVICE", + "id": 1027 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SNZB-09P" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 549 + } + ] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4352 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "SNZB-09P", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0403", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0x0500", + "0x0502", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -22, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 0.0 + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:42:7c:ea:9f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:42:7c:ea:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001100", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-swv-zfe-0x00001007.json b/tests/data/devices/sonoff-swv-zfe-0x00001007.json new file mode 100644 index 000000000..f30612187 --- /dev/null +++ b/tests/data/devices/sonoff-swv-zfe-0x00001007.json @@ -0,0 +1,389 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c9:1c:72:fe", + "nwk": "0xB3CB", + "manufacturer": "SONOFF", + "model": "SWV-ZFE", + "friendly_manufacturer": "SONOFF", + "friendly_model": "SWV-ZFE", + "name": "SONOFF SWV-ZFE", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 196, + "rssi": -62, + "last_seen": "2026-04-16T09:14:13.443382+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SWV-ZFE" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0000", + "name": "checkin_interval", + "zcl_type": "uint32", + "value": 14400 + }, + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4103 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "SWV-ZFE", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0006", + "0x0020", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 196, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c9:1c:72:fe-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c9:1c:72:fe", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001007", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-tp-wgzba-0x00001003.json b/tests/data/devices/sonoff-tp-wgzba-0x00001003.json new file mode 100644 index 000000000..374d29cff --- /dev/null +++ b/tests/data/devices/sonoff-tp-wgzba-0x00001003.json @@ -0,0 +1,635 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8d:52:72:ed", + "nwk": "0x4AB4", + "manufacturer": "SONOFF", + "model": "TP-WGZBA", + "friendly_manufacturer": "SONOFF", + "friendly_model": "TP-WGZBA", + "name": "SONOFF TP-WGZBA", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -32, + "last_seen": "2026-07-24T10:01:49.574116+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TP-WGZBA" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2950 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 25 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0022", + "name": "number_of_daily_transitions", + "zcl_type": "uint8", + "value": 12 + }, + { + "id": "0x0021", + "name": "number_of_weekly_transitions", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2100 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "start_of_week", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4099 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "TP-WGZBA", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0301", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0201", + "0xfc11", + "0x0b05", + "0xfc57" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 29.5, + "outdoor_temperature": null, + "target_temperature": 21.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2100, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2.5, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -32, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-513-setpoint_change_source_timestamp", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSourceTimestamp", + "translation_key": "setpoint_change_source_timestamp", + "translation_placeholders": null, + "device_class": "timestamp", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8d:52:72:ed-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8d:52:72:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001003", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-trv-zbl-0x00001002.json b/tests/data/devices/sonoff-trv-zbl-0x00001002.json new file mode 100644 index 000000000..f54f63a6b --- /dev/null +++ b/tests/data/devices/sonoff-trv-zbl-0x00001002.json @@ -0,0 +1,668 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:17:da:b6:c3", + "nwk": "0x4040", + "manufacturer": "SONOFF", + "model": "TRV-ZBL", + "friendly_manufacturer": "SONOFF", + "friendly_model": "TRV-ZBL", + "name": "SONOFF TRV-ZBL", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 212, + "rssi": -47, + "last_seen": "2026-09-24T08:19:44.687596+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TRV-ZBL" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 3050 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0022", + "name": "number_of_daily_transitions", + "zcl_type": "uint8", + "value": 6 + }, + { + "id": "0x0021", + "name": "number_of_weekly_transitions", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 1250 + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x001a", + "name": "remote_sensing", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0020", + "name": "start_of_week", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4098 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "TRV-ZBL", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0301", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0006", + "0x000a", + "0x0020", + "0x0201", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 30.5, + "outdoor_temperature": null, + "target_temperature": 12.5, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "idle", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 1250, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 212, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -47, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "idle", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-pi_heating_demand", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "PiHeatingDemand", + "translation_key": "pi_heating_demand", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-setpoint_change_source", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSource", + "translation_key": "setpoint_change_source", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "Manual", + "Schedule", + "External" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-513-setpoint_change_source_timestamp", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSourceTimestamp", + "translation_key": "setpoint_change_source_timestamp", + "translation_placeholders": null, + "device_class": "timestamp", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:17:da:b6:c3-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:17:da:b6:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001002", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-trv-zbt-0x00001009.json b/tests/data/devices/sonoff-trv-zbt-0x00001009.json new file mode 100644 index 000000000..6b525e06d --- /dev/null +++ b/tests/data/devices/sonoff-trv-zbt-0x00001009.json @@ -0,0 +1,655 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d4:2c:7b:64", + "nwk": "0x86C1", + "manufacturer": "SONOFF", + "model": "TRV-ZBT", + "friendly_manufacturer": "SONOFF", + "friendly_model": "TRV-ZBT", + "name": "SONOFF TRV-ZBT", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 164, + "rssi": -59, + "last_seen": "2026-08-07T02:25:28.046707+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TRV-ZBT" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 46 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 1300 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "value": -32 + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 1600 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 1 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4105 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "TRV-ZBT", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0301", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0006", + "0x0020", + "0x0201", + "0xfc11", + "0xfc57" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 13.0, + "outdoor_temperature": null, + "target_temperature": null, + "target_temperature_high": null, + "target_temperature_low": 16.0, + "hvac_action": "heating", + "hvac_mode": "heat_cool", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[1]/heat_cool", + "occupancy": 1, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 1600, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-513-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "ThermostatLocalTempCalibration", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -3.2, + "mode": "box", + "native_max_value": 2.5, + "native_min_value": -2.5, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-513-max_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MaxHeatSetpointLimit", + "translation_key": "max_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 30.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-513-min_heat_setpoint_limit", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "MinHeatSetpointLimit", + "translation_key": "min_heat_setpoint_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5.0, + "mode": "box", + "native_max_value": 30.0, + "native_min_value": 5.0, + "native_step": 0.5, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 164, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -59, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 23.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 2.5 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "heating", + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:2c:7b:64-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:2c:7b:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001009", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-zbm5-1c-80-86-0x00001006.json b/tests/data/devices/sonoff-zbm5-1c-80-86-0x00001006.json new file mode 100644 index 000000000..31bfe547e --- /dev/null +++ b/tests/data/devices/sonoff-zbm5-1c-80-86-0x00001006.json @@ -0,0 +1,435 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b9:29:da:a4", + "nwk": "0x4ADB", + "manufacturer": "SONOFF", + "model": "ZBM5-1C-80/86", + "friendly_manufacturer": "SONOFF", + "friendly_model": "ZBM5-1C-80/86", + "name": "SONOFF ZBM5-1C-80/86", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.zbm5:(SONOFF / ZBM5-1C-80/86)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 255, + "rssi": -46, + "last_seen": "2026-04-06T12:51:57.422468+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZBM5-1C-80/86" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfbfe", + "endpoint_attribute": "sonoff_input_config", + "attributes": [ + { + "id": "0x0000", + "name": "relay_1_detached", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0001", + "name": "relay_2_detached", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0002", + "name": "relay_3_detached", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "sonoff_cluster", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4102 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "ZBM5-1C-80/86", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -46, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": "Work mode", + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-work_mode", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "work_mode", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "EndDevice", + "Router" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": "Detach relay 1", + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-relay_1_detached", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detach_relay_id", + "translation_placeholders": { + "id": "1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "relay_1_detached", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b9:29:da:a4-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b9:29:da:a4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001006", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sonoff-zbm5-3c-80-86-0x00001004.json b/tests/data/devices/sonoff-zbm5-3c-80-86-0x00001004.json new file mode 100644 index 000000000..99c28e753 --- /dev/null +++ b/tests/data/devices/sonoff-zbm5-3c-80-86-0x00001004.json @@ -0,0 +1,769 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:89:f3:cd:e6", + "nwk": "0x2275", + "manufacturer": "SONOFF", + "model": "ZBM5-3C-80/86", + "friendly_manufacturer": "SONOFF", + "friendly_model": "ZBM5-3C-80/86", + "name": "SONOFF ZBM5-3C-80/86", + "quirk_applied": true, + "quirk_class": "zhaquirks.sonoff.zbm5:(SONOFF / ZBM5-3C-80/86)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 156, + "rssi": -61, + "last_seen": "2026-07-05T17:06:33.647798+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "SONOFF" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZBM5-3C-80/86" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0xfbfe", + "endpoint_attribute": "sonoff_input_config", + "attributes": [ + { + "id": "0x0000", + "name": "relay_1_detached", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0001", + "name": "relay_2_detached", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0002", + "name": "relay_3_detached", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "sonoff_cluster", + "attributes": [ + { + "id": "0x0019", + "name": "detach_relay_mask", + "zcl_type": "map8", + "value": 7 + }, + { + "id": "0x0018", + "name": "work_mode", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4100 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": false + } + ] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": true + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "SONOFF", + "model": "ZBM5-3C-80/86", + "node_desc": { + "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": 4742, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b05", + "0xfc57", + "0xfc11" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xfc57" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xfc57" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-3-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "current_option": "Off", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 156, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -61, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": "Work mode", + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-work_mode", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "work_mode", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Router", + "suggested_display_precision": null, + "unit": null, + "options": [ + "EndDevice", + "Router" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Detach relay 1", + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-relay_1_detached", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detach_relay_id", + "translation_placeholders": { + "id": "1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "relay_1_detached", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Detach relay 2", + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-relay_2_detached", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detach_relay_id", + "translation_placeholders": { + "id": "2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "relay_2_detached", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Detach relay 3", + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-relay_3_detached", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detach_relay_id", + "translation_placeholders": { + "id": "3" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "relay_3_detached", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-3-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:f3:cd:e6-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:f3:cd:e6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00001004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/stello-stlo-23-0x4444004a.json b/tests/data/devices/stello-stlo-23-0x4444004a.json new file mode 100644 index 000000000..9bbba1fb2 --- /dev/null +++ b/tests/data/devices/stello-stlo-23-0x4444004a.json @@ -0,0 +1,823 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "nwk": "0x08CF", + "manufacturer": "Stello", + "model": "STLO-23", + "friendly_manufacturer": "Stello", + "friendly_model": "STLO-23", + "name": "Stello STLO-23", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4759, + "power_source": "Mains", + "lqi": 172, + "rssi": -68, + "last_seen": "2026-05-06T21:26:21.930999+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4759, + "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": 260, + "device_type": { + "name": "ON_OFF_OUTPUT", + "id": 2 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 68 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0012", + "name": "device_enabled", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0014", + "name": "disable_local_config", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "generic_device_class", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0009", + "name": "generic_device_type", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "CEE" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Stello" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "STLO-23" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 68 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 8 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "identify_time", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0020", + "name": "active_register_tier_delivered", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0314", + "name": "alternative_consumption_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0a00", + "name": "bill_to_date", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0019", + "name": "control_temperature", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x000e", + "name": "current_block", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0600", + "name": "current_demand_delivered", + "zcl_type": "uint24", + "unsupported": true + }, + { + "id": "0x0206", + "name": "current_meter_id", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 1934449 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "value": 208 + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0800", + "name": "generic_alarm_mask", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0x0207", + "name": "iambient_consumption_indicator", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0018", + "name": "outlet_temperature", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0006", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x000f", + "name": "profile_interval_period", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 208 + }, + { + "id": "0x0014", + "name": "supply_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x030d", + "name": "temperature_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x030c", + "name": "temperature_unit_of_measure", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0803", + "name": "water_specific_alarm_mask", + "zcl_type": "map16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0004", + "name": "dst_end", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0005", + "name": "dst_shift", + "zcl_type": "int32", + "unsupported": true + }, + { + "id": "0x0003", + "name": "dst_start", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x0001", + "name": "time_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0002", + "name": "time_zone", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 4 + }, + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 1145307210 + }, + { + "id": "0x0001", + "name": "file_offset", + "zcl_type": "uint32", + "value": 4294967295 + }, + { + "id": "0x0006", + "name": "image_upgrade_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "upgrade_server_id", + "zcl_type": "EUI64", + "value": "bc:02:6e:ff:fe:aa:04:57" + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Stello", + "model": "STLO-23", + "node_desc": { + "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": 4759, + "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": "0x0002", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0xfc03", + "0xfc01", + "0xfc00", + "0xfc02" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 172, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1934.449, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5e:f1:0e:f8-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5e:f1:0e:f8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x4444004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/sunricher-hk-dim-pir-0x00000038.json b/tests/data/devices/sunricher-hk-dim-pir-0x00000038.json new file mode 100644 index 000000000..37f2fa1ca --- /dev/null +++ b/tests/data/devices/sunricher-hk-dim-pir-0x00000038.json @@ -0,0 +1,758 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:eb:21:32:7c", + "nwk": "0x1DDF", + "manufacturer": "Sunricher", + "model": "HK-DIM-PIR", + "friendly_manufacturer": "Sunricher", + "friendly_model": "HK-DIM-PIR", + "name": "Sunricher HK-DIM-PIR", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4644, + "power_source": "Mains", + "lqi": 149, + "rssi": null, + "last_seen": "2026-03-30T07:06:16.371659+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4644, + "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": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Sunricher" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "HK-DIM-PIR" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 56 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "OCCUPANCY_SENSOR", + "id": 263 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "value": 0 + } + ] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "LIGHT_SENSOR", + "id": 262 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 21368 + } + ] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "COMBO_BASIC", + "id": 102 + }, + "in_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Sunricher", + "model": "HK-DIM-PIR", + "node_desc": { + "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": 4644, + "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": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0b05", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0019", + "0x1000" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0107", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0406" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0106", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0400" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0066", + "input_clusters": [ + "0x0021" + ], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-2-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-2-1030-pir_o_to_u_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIROccupiedToUnoccupiedDelayConfigurationEntity", + "translation_key": "pir_o_to_u_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-2-1030-pir_u_to_o_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIRUnoccupiedToOccupiedDelayConfigurationEntity", + "translation_key": "pir_u_to_o_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 149, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-3-1024", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Illuminance", + "translation_key": null, + "translation_placeholders": null, + "device_class": "illuminance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": 137, + "suggested_display_precision": null, + "unit": "lx" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:eb:21:32:7c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:eb:21:32:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000038", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rap0149bz-0x00000019.json b/tests/data/devices/third-reality-inc-3rap0149bz-0x00000019.json new file mode 100644 index 000000000..6418d8f20 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rap0149bz-0x00000019.json @@ -0,0 +1,430 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6f:2f:02:92", + "nwk": "0x4620", + "manufacturer": "Third Reality, Inc", + "model": "3RAP0149BZ", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RAP0149BZ", + "name": "Third Reality, Inc 3RAP0149BZ", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Battery or Unknown", + "lqi": 44, + "rssi": -89, + "last_seen": "2026-07-14T07:51:03.877538+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "PRESSURE_SENSOR", + "id": 773 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 25 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "Undefined" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RAP0149BZ" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.25" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x000c", + "endpoint_attribute": "analog_input", + "attributes": [ + { + "id": "0x0100", + "name": "application_type", + "zcl_type": "uint32", + "value": 17232 + }, + { + "id": "0x001c", + "name": "description", + "zcl_type": "string", + "value": "Dirty Level" + }, + { + "id": "0x0075", + "name": "engineering_units", + "zcl_type": "enum16", + "value": 115 + }, + { + "id": "0x0041", + "name": "max_present_value", + "zcl_type": "single", + "value": 3.6002311088465e-311 + }, + { + "id": "0x0045", + "name": "min_present_value", + "zcl_type": "single", + "value": 100.0 + }, + { + "id": "0x0051", + "name": "out_of_service", + "zcl_type": "bool", + "value": 119 + }, + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "single", + "value": 3.0 + }, + { + "id": "0x0067", + "name": "reliability", + "zcl_type": "enum8", + "value": 176 + }, + { + "id": "0x006a", + "name": "resolution", + "zcl_type": "single", + "value": 1.0 + }, + { + "id": "0x006f", + "name": "status_flags", + "zcl_type": "map8", + "value": 158 + } + ] + }, + { + "cluster_id": "0x0403", + "endpoint_attribute": "pressure", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 1002 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 25 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RAP0149BZ", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0305", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x000c", + "0x0403" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 44, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -89, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-1027", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Pressure", + "translation_key": null, + "translation_placeholders": null, + "device_class": "pressure", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1002, + "suggested_display_precision": 0, + "unit": "hPa" + }, + { + "fallback_name": "Dirty Level", + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-12-analog_input", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "AnalogInputSensor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3.0, + "suggested_display_precision": 0, + "unit": "\u00b0C" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:2f:02:92-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:2f:02:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000019", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3raq1096z-0x00000010.json b/tests/data/devices/third-reality-inc-3raq1096z-0x00000010.json new file mode 100644 index 000000000..1bde992c2 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3raq1096z-0x00000010.json @@ -0,0 +1,306 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e1:f6:c4:64", + "nwk": "0x984A", + "manufacturer": "Third Reality, Inc", + "model": "3RAQ1096Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RAQ1096Z", + "name": "Third Reality, Inc 3RAQ1096Z", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Battery or Unknown", + "lqi": 127, + "rssi": null, + "last_seen": "2026-06-23T08:21:57.099536+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RAQ1096Z" + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2829 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 7593 + } + ] + }, + { + "cluster_id": "0x040d", + "endpoint_attribute": "carbon_dioxide_concentration", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "single", + "value": 0.002032000105828047 + } + ] + }, + { + "cluster_id": "0x042e", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 16 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RAQ1096Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0402", + "0x0405", + "0x040d", + "0x042e" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 127, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 28.29, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 75.93, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-1037", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonDioxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_dioxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2032.0001058280468, + "suggested_display_precision": 0, + "unit": "ppm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e1:f6:c4:64-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e1:f6:c4:64", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000010", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3ras1098z-0x00000004.json b/tests/data/devices/third-reality-inc-3ras1098z-0x00000004.json new file mode 100644 index 000000000..c6ca3e095 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3ras1098z-0x00000004.json @@ -0,0 +1,452 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:89:aa:64:92", + "nwk": "0x2DF4", + "manufacturer": "Third Reality, Inc", + "model": "3RAS1098Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RAS1098Z", + "name": "Third Reality, Inc 3RAS1098Z", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": -35, + "last_seen": "2026-09-23T01:43:11.076663+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RAS1098Z" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 549 + } + ] + }, + { + "cluster_id": "0x0501", + "endpoint_attribute": "ias_ace", + "attributes": [] + }, + { + "cluster_id": "0x0502", + "endpoint_attribute": "ias_wd", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RAS1098Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0x0008", + "0x0500", + "0x0501", + "0x0502" + ], + "output_clusters": [ + "0x0000", + "0x0019", + "0x0500" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1282-SirenLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultSirenLevelSelectEntity", + "translation_key": "default_siren_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "SirenLevel", + "options": [ + "Low level sound", + "Medium level sound", + "High level sound", + "Very high level sound" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1282-Strobe", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeSelectEntity", + "translation_key": "default_strobe", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "Strobe", + "options": [ + "No Strobe", + "Strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1282-StrobeLevel", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultStrobeLevelSelectEntity", + "translation_key": "default_strobe_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "StrobeLevel", + "options": [ + "Low level strobe", + "Medium level strobe", + "High level strobe", + "Very high level strobe" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1282-WarningMode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DefaultToneSelectEntity", + "translation_key": "default_siren_tone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WarningMode", + "options": [ + "Stop", + "Burglar", + "Fire", + "Emergency", + "Police Panic", + "Fire Panic", + "Emergency Panic" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -35, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "siren": [ + { + "fallback_name": "Siren", + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-1282", + "migrate_unique_ids": [], + "platform": "siren", + "class_name": "AdvancedSiren", + "translation_key": null, + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "available_tones": { + "1": "Burglar", + "2": "Fire", + "3": "Emergency", + "4": "Police Panic", + "5": "Fire Panic", + "6": "Emergency Panic" + }, + "supported_features": 31 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:89:aa:64:92-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:89:aa:64:92", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000004", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rdp01072z-0x00000030.json b/tests/data/devices/third-reality-inc-3rdp01072z-0x00000030.json new file mode 100644 index 000000000..89cc99797 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rdp01072z-0x00000030.json @@ -0,0 +1,1770 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bf:46:f1:35", + "nwk": "0x3578", + "manufacturer": "Third Reality, Inc", + "model": "3RDP01072Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RDP01072Z", + "name": "Third Reality, Inc 3RDP01072Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RDP01072Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": -22, + "last_seen": "2026-06-03T08:55:04.095692+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 48 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "0998638" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RDP01072Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 20 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.48" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 3 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 17 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 7 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2323 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 48 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2323 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RDP01072Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset left total energy", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_left", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + }, + { + "fallback_name": "Reset right total energy", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_right", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on left", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_left", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off left", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_left", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 20, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Countdown to turn on right", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_right", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off right", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_right", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -22, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.3, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 17, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.007, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.3, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 232.3, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000030", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rdp01072z-0x00000036.json b/tests/data/devices/third-reality-inc-3rdp01072z-0x00000036.json new file mode 100644 index 000000000..faa68b3f6 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rdp01072z-0x00000036.json @@ -0,0 +1,1782 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bf:46:f1:35", + "nwk": "0x3A33", + "manufacturer": "Third Reality, Inc", + "model": "3RDP01072Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RDP01072Z", + "name": "Third Reality, Inc 3RDP01072Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RDP01072Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 134, + "rssi": null, + "last_seen": "2026-09-04T09:30:35.009585+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 54 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "0998638" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RDP01072Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.54" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 67 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 4 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 40 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 9 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 1094 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 5 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 54 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 67 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 1094 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RDP01072Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset left total energy", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_left", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + }, + { + "fallback_name": "Reset right total energy", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_right", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on left", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_left", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off left", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_left", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 5, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Countdown to turn on right", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_right", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off right", + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_right", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 134, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.4, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.009, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 109.4, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 109.4, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bf:46:f1:35-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bf:46:f1:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000036", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rks030z-0x00000009.json b/tests/data/devices/third-reality-inc-3rks030z-0x00000009.json new file mode 100644 index 000000000..c9331afb7 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rks030z-0x00000009.json @@ -0,0 +1,265 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:67:77:86:1b", + "nwk": "0xFDCA", + "manufacturer": "Third Reality, Inc", + "model": "3RKS030Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RKS030Z", + "name": "Third Reality, Inc 3RKS030Z", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": null, + "last_seen": "2026-09-17T03:15:33.333533+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SIMPLE_SENSOR", + "id": 12 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RKS030Z" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "v1.00.09" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 35 + } + ] + }, + { + "cluster_id": "0xff0c", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 9 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RKS030Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x000c", + "input_clusters": [ + "0x0000", + "0xff0c", + "0x0001" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:67:77:86:1b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:67:77:86:1b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:67:77:86:1b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:67:77:86:1b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:67:77:86:1b-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:67:77:86:1b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.5 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:67:77:86:1b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:67:77:86:1b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000009", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rpl01084z-0x00000028.json b/tests/data/devices/third-reality-inc-3rpl01084z-0x00000028.json new file mode 100644 index 000000000..ffb9505d3 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rpl01084z-0x00000028.json @@ -0,0 +1,831 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d2:c0:96:2c", + "nwk": "0x286C", + "manufacturer": "Third Reality, Inc", + "model": "3RPL01084Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RPL01084Z", + "name": "Third Reality, Inc 3RPL01084Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.60g_radar:(Third Reality, Inc / 3RPL01084Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 136, + "rssi": -66, + "last_seen": "2026-07-14T08:34:15.187049+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "COLOR_DIMMABLE_LIGHT", + "id": 258 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RPL01084Z" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "value": 255 + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [ + { + "id": "0x400a", + "name": "color_capabilities", + "zcl_type": "map16", + "value": 31 + }, + { + "id": "0x4002", + "name": "color_loop_active", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0008", + "name": "color_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x400c", + "name": "color_temp_physical_max", + "zcl_type": "uint16", + "value": 500 + }, + { + "id": "0x400b", + "name": "color_temp_physical_min", + "zcl_type": "uint16", + "value": 153 + }, + { + "id": "0x0007", + "name": "color_temperature", + "zcl_type": "uint16", + "value": 65535 + }, + { + "id": "0x0003", + "name": "current_x", + "zcl_type": "uint16", + "value": 9836 + }, + { + "id": "0x0004", + "name": "current_y", + "zcl_type": "uint16", + "value": 3953 + }, + { + "id": "0x000f", + "name": "options", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x4010", + "name": "start_up_color_temperature", + "zcl_type": "uint16", + "value": 65535 + } + ] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 19685 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x042e", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0xf003", + "name": "air_threshold", + "zcl_type": "uint16", + "value": 6000 + }, + { + "id": "0xf002", + "name": "sensor_sensitivity", + "zcl_type": "uint8", + "value": 3 + }, + { + "id": "0xf001", + "name": "tvoc_sensor_calibration", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0000", + "name": "volatile_organic_compounds", + "zcl_type": "single", + "value": 0.0 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 40 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RPL01084Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0102", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0012", + "0x0300", + "0x0400", + "0x0406", + "0x042e", + "0x1000" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Calibrate TVOC sensor", + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-tvoc_sensor_calibration", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "calibrate_tvoc_sensor", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "tvoc_sensor_calibration", + "attribute_value": 1 + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": [ + 0.150087739375906, + 0.060318913557640956 + ], + "color_temp": 65535, + "effect_list": [ + "off", + "colorloop" + ], + "effect": "off", + "supported_features": 44, + "color_mode": "xy", + "supported_color_modes": [ + "brightness", + "color_temp", + "onoff", + "xy" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-1030-pir_o_to_u_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIROccupiedToUnoccupiedDelayConfigurationEntity", + "translation_key": "pir_o_to_u_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-1030-pir_u_to_o_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIRUnoccupiedToOccupiedDelayConfigurationEntity", + "translation_key": "pir_u_to_o_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-768-start_up_color_temperature", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpColorTemperatureConfigurationEntity", + "translation_key": "start_up_color_temperature", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 65535, + "mode": "auto", + "native_max_value": 500, + "native_min_value": 153, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-8-on_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnLevelConfigurationEntity", + "translation_key": "on_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-8-on_off_transition_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "OnOffTransitionTimeConfigurationEntity", + "translation_key": "on_off_transition_time", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-8-start_up_current_level", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "StartUpCurrentLevelConfigurationEntity", + "translation_key": "start_up_current_level", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "mode": "auto", + "native_max_value": 255, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Air threshold", + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-air_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "air_threshold", + "translation_placeholders": null, + "device_class": "volatile_organic_compounds_parts", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 6000, + "mode": "auto", + "native_max_value": 50000, + "native_min_value": 3000, + "native_step": 1, + "native_unit_of_measurement": "ppb" + }, + { + "fallback_name": "Presence sensor sensitivity", + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-sensor_sensitivity", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "presence_sensor_sensitivity", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3, + "mode": "auto", + "native_max_value": 6, + "native_min_value": 1, + "native_step": 1, + "native_unit_of_measurement": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 136, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -66, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-1024", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Illuminance", + "translation_key": null, + "translation_placeholders": null, + "device_class": "illuminance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 93, + "suggested_display_precision": null, + "unit": "lx" + }, + { + "fallback_name": "Total volatile organic compounds", + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-volatile_organic_compounds", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "total_volatile_organic_compounds", + "translation_placeholders": null, + "device_class": "volatile_organic_compounds_parts", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "ppb" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d2:c0:96:2c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d2:c0:96:2c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000028", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rsm0347z-0x00000015.json b/tests/data/devices/third-reality-inc-3rsm0347z-0x00000015.json new file mode 100644 index 000000000..aecee9473 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rsm0347z-0x00000015.json @@ -0,0 +1,467 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "nwk": "0x1A9D", + "manufacturer": "Third Reality, Inc", + "model": "3RSM0347Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSM0347Z", + "name": "Third Reality, Inc 3RSM0347Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.soil_moisture_sensor:(Third Reality, Inc / 3RSM0147Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -26, + "last_seen": "2026-04-14T01:48:04.720780+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSM0347Z" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 20 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2112 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4003 + } + ] + }, + { + "cluster_id": "0x0408", + "endpoint_attribute": "soil_moisture", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 4003 + } + ] + }, + { + "cluster_id": "0xff01", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0032", + "name": "humidity_offset", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0031", + "name": "temperature_offset_celsius", + "zcl_type": "int16", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 21 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSM0347Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0402", + "0x0405", + "0x0408", + "0xff01" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": "Humidity offset", + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-humidity_offset", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "humidity_offset", + "translation_placeholders": null, + "device_class": "humidity", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10000, + "native_min_value": -10000, + "native_step": 0.1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Temperature offset", + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-temperature_offset_celsius", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "temperature_offset", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10000, + "native_min_value": -10000, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -26, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 2.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 21.12, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "moisture", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40.03, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1032", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SoilMoisture", + "translation_key": "soil_moisture", + "translation_placeholders": null, + "device_class": "moisture", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40.03, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000015", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rsm0347z-0x00000064.json b/tests/data/devices/third-reality-inc-3rsm0347z-0x00000064.json new file mode 100644 index 000000000..015e8e4b6 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rsm0347z-0x00000064.json @@ -0,0 +1,431 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "nwk": "0x7BB4", + "manufacturer": "Third Reality, Inc", + "model": "3RSM0347Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSM0347Z", + "name": "Third Reality, Inc 3RSM0347Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.soil_moisture_sensor:(Third Reality, Inc / 3RSM0147Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-04-30T00:57:56.815354+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "TEMPERATURE_SENSOR", + "id": 770 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSM0347Z" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 190 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 14 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2143 + } + ] + }, + { + "cluster_id": "0x0408", + "endpoint_attribute": "soil_moisture", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0xff01", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0032", + "name": "humidity_offset", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x0031", + "name": "temperature_offset_celsius", + "zcl_type": "int16", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 100 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSM0347Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0302", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0402", + "0x0408", + "0xff01" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": "Humidity offset", + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-humidity_offset", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "humidity_offset", + "translation_placeholders": null, + "device_class": "humidity", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10000, + "native_min_value": -10000, + "native_step": 0.1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Temperature offset", + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-temperature_offset_celsius", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "temperature_offset", + "translation_placeholders": null, + "device_class": "temperature_delta", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "mode": "auto", + "native_max_value": 10000, + "native_min_value": -10000, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 95.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 1.4 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 21.43, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-1032", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SoilMoisture", + "translation_key": "soil_moisture", + "translation_placeholders": null, + "device_class": "moisture", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4e:c9:2f:ef-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4e:c9:2f:ef", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000064", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rsp0186z-0x00000033.json b/tests/data/devices/third-reality-inc-3rsp0186z-0x00000033.json new file mode 100644 index 000000000..ce3e4f7eb --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rsp0186z-0x00000033.json @@ -0,0 +1,1135 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8c:e0:b6:59", + "nwk": "0x15EE", + "manufacturer": "Third Reality, Inc", + "model": "3RSP0186Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSP0186Z", + "name": "Third Reality, Inc 3RSP0186Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02064Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": -33, + "last_seen": "2026-06-03T07:44:05.726157+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSP0186Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 40 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.51" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2326 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0050", + "name": "metering_only_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0041", + "name": "power_drop_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0040", + "name": "power_rise_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 51 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSP0186Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0006", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Power drop threshold", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-power_drop_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_drop_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Power rise threshold", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-power_rise_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_rise_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -33, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.6, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": "Metering only mode", + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-metering_only_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "metering_only_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "metering_only_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:e0:b6:59-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:e0:b6:59", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000033", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rsp02028bz-0x1001306a.json b/tests/data/devices/third-reality-inc-3rsp02028bz-0x1001306a.json new file mode 100644 index 000000000..455523b01 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rsp02028bz-0x1001306a.json @@ -0,0 +1,1032 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c5:27:e8:0a", + "nwk": "0xE63F", + "manufacturer": "Third Reality, Inc", + "model": "3RSP02028BZ", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSP02028BZ", + "name": "Third Reality, Inc 3RSP02028BZ", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02028BZ)", + "exposes_features": [], + "manufacturer_code": 4659, + "power_source": "Mains", + "lqi": 255, + "rssi": null, + "last_seen": "2026-06-03T08:08:06.382757+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 106 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSP02028BZ" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 3600000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 9 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2326 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0010", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 268513386 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSP02028BZ", + "node_desc": { + "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": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xff03", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b04", + "0x0702" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.6, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c5:27:e8:0a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c5:27:e8:0a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x1001306a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rsp02064z-0x00000033.json b/tests/data/devices/third-reality-inc-3rsp02064z-0x00000033.json new file mode 100644 index 000000000..68d6b9876 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rsp02064z-0x00000033.json @@ -0,0 +1,1135 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bb:32:67:ac", + "nwk": "0xD8E6", + "manufacturer": "Third Reality, Inc", + "model": "3RSP02064Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSP02064Z", + "name": "Third Reality, Inc 3RSP02064Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02064Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 248, + "rssi": -38, + "last_seen": "2026-06-03T07:45:48.475086+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSP02064Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 40 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.51" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2295 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0050", + "name": "metering_only_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0041", + "name": "power_drop_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0040", + "name": "power_rise_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 51 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSP02064Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0006", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Power drop threshold", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-power_drop_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_drop_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Power rise threshold", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-power_rise_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_rise_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 248, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -38, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 229.5, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Metering only mode", + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-metering_only_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "metering_only_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "metering_only_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bb:32:67:ac-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bb:32:67:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000033", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rspe01044bz-0x1001306a.json b/tests/data/devices/third-reality-inc-3rspe01044bz-0x1001306a.json new file mode 100644 index 000000000..6c4d04f16 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rspe01044bz-0x1001306a.json @@ -0,0 +1,1032 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a0:9d:33:a1", + "nwk": "0x3DFD", + "manufacturer": "Third Reality, Inc", + "model": "3RSPE01044BZ", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSPE01044BZ", + "name": "Third Reality, Inc 3RSPE01044BZ", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02028BZ)", + "exposes_features": [], + "manufacturer_code": 4659, + "power_source": "Mains", + "lqi": 255, + "rssi": null, + "last_seen": "2026-06-03T08:05:30.186291+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 106 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSPE01044BZ" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 564 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 3600000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 3 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 9 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 3 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 52 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2321 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0010", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 268513386 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSPE01044BZ", + "node_desc": { + "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": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xff03", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0b04", + "0x0702" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.00015666666666666666, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.3, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.052, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.1, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a0:9d:33:a1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a0:9d:33:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x1001306a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rspe02065z-0x00000033.json b/tests/data/devices/third-reality-inc-3rspe02065z-0x00000033.json new file mode 100644 index 000000000..1d2c73e8d --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rspe02065z-0x00000033.json @@ -0,0 +1,1135 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:71:c3:d7:12", + "nwk": "0xD224", + "manufacturer": "Third Reality, Inc", + "model": "3RSPE02065Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSPE02065Z", + "name": "Third Reality, Inc 3RSPE02065Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02064Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": -22, + "last_seen": "2026-06-03T07:47:02.402110+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSPE02065Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 40 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.51" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2307 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0050", + "name": "metering_only_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0041", + "name": "power_drop_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0040", + "name": "power_rise_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 51 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSPE02065Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0006", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Power drop threshold", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-power_drop_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_drop_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Power rise threshold", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-power_rise_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_rise_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -22, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 230.7, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Metering only mode", + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-metering_only_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "metering_only_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "metering_only_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:71:c3:d7:12-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:71:c3:d7:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000033", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rspj0187z-0x00000033.json b/tests/data/devices/third-reality-inc-3rspj0187z-0x00000033.json new file mode 100644 index 000000000..90fcb44ad --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rspj0187z-0x00000033.json @@ -0,0 +1,1135 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:2a:27:a4:45", + "nwk": "0xF8F5", + "manufacturer": "Third Reality, Inc", + "model": "3RSPJ0187Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSPJ0187Z", + "name": "Third Reality, Inc 3RSPJ0187Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02064Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 248, + "rssi": -38, + "last_seen": "2026-06-03T08:14:08.163671+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 51 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSPJ0187Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 40 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.51" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2327 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0050", + "name": "metering_only_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0041", + "name": "power_drop_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0040", + "name": "power_rise_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 51 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSPJ0187Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0006", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Power drop threshold", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-power_drop_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_drop_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Power rise threshold", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-power_rise_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_rise_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 40, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 248, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -38, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.7, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": "Metering only mode", + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-metering_only_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "metering_only_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "metering_only_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:27:a4:45-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:27:a4:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000033", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rspu01080z-0x0000002f.json b/tests/data/devices/third-reality-inc-3rspu01080z-0x0000002f.json new file mode 100644 index 000000000..cb46aff66 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rspu01080z-0x0000002f.json @@ -0,0 +1,1135 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:06:3f:97:8f", + "nwk": "0x8187", + "manufacturer": "Third Reality, Inc", + "model": "3RSPU01080Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RSPU01080Z", + "name": "Third Reality, Inc 3RSPU01080Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RSP02064Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": -22, + "last_seen": "2026-06-03T07:48:12.633022+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 47 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RSPU01080Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.47" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2328 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0050", + "name": "metering_only_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0041", + "name": "power_drop_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0040", + "name": "power_rise_threshold", + "zcl_type": "uint16", + "value": 3200 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 47 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RSPU01080Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0006", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset total energy", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Power drop threshold", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-power_drop_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_drop_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Power rise threshold", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-power_rise_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "power_rise_threshold", + "translation_placeholders": null, + "device_class": "power", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 3200, + "mode": "box", + "native_max_value": 3277, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -22, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.8, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": "Metering only mode", + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-metering_only_mode", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "metering_only_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "metering_only_mode", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:06:3f:97:8f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:06:3f:97:8f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000002f", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rvs01031z-0x00000041.json b/tests/data/devices/third-reality-inc-3rvs01031z-0x00000041.json new file mode 100644 index 000000000..9e03d29e3 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rvs01031z-0x00000041.json @@ -0,0 +1,377 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:70:fc:8c:33", + "nwk": "0x6192", + "manufacturer": "Third Reality, Inc", + "model": "3RVS01031Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RVS01031Z", + "name": "Third Reality, Inc 3RVS01031Z", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4659, + "power_source": "Battery or Unknown", + "lqi": 232, + "rssi": -42, + "last_seen": "2026-07-14T08:34:37.623903+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "undefined" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RVS01031Z" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.65" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 33 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 17 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + }, + { + "cluster_id": "0xfff1", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RVS01031Z", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4659, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0500", + "0xfff1", + "0x0006" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "attribute_name": "zone_status" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -42, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.3 + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:70:fc:8c:33-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:70:fc:8c:33", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rwp01073z-0x00000030.json b/tests/data/devices/third-reality-inc-3rwp01073z-0x00000030.json new file mode 100644 index 000000000..223f2541e --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rwp01073z-0x00000030.json @@ -0,0 +1,1740 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6c:64:d1:bd", + "nwk": "0xD1C3", + "manufacturer": "Third Reality, Inc", + "model": "3RWP01073Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RWP01073Z", + "name": "Third Reality, Inc 3RWP01073Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RWP01073Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 255, + "rssi": null, + "last_seen": "2026-06-03T09:04:41.622098+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 18 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2327 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 48 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 255 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2318 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RWP01073Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset bottom total energy", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_bottom", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + }, + { + "fallback_name": "Reset top total energy", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_top", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on bottom", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_bottom", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off bottom", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_bottom", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 18, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Countdown to turn on top", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_top", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off top", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_top", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 232.7, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 231.8, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000030", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/third-reality-inc-3rwp01073z-0x00000036.json b/tests/data/devices/third-reality-inc-3rwp01073z-0x00000036.json new file mode 100644 index 000000000..5f6756d11 --- /dev/null +++ b/tests/data/devices/third-reality-inc-3rwp01073z-0x00000036.json @@ -0,0 +1,1794 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6c:64:d1:bd", + "nwk": "0x5F85", + "manufacturer": "Third Reality, Inc", + "model": "3RWP01073Z", + "friendly_manufacturer": "Third Reality, Inc", + "friendly_model": "3RWP01073Z", + "name": "Third Reality, Inc 3RWP01073Z", + "quirk_applied": true, + "quirk_class": "zhaquirks.thirdreality.plug:(Third Reality, Inc / 3RWP01073Z)", + "exposes_features": [], + "manufacturer_code": 5127, + "power_source": "Mains", + "lqi": 131, + "rssi": null, + "last_seen": "2026-09-07T01:26:44.575416+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 54 + }, + { + "id": "0x0010", + "name": "location_desc", + "zcl_type": "string", + "value": "0996376" + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Third Reality, Inc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "3RWP01073Z" + }, + { + "id": "0xff01", + "name": "red_led_brightness", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "1.00.54" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 67 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 1 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 13 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2282 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 54 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 1000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 67 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 50 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 1 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 2280 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xff03", + "endpoint_attribute": null, + "attributes": [ + { + "id": "0x0001", + "name": "countdown_to_turn_off", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0002", + "name": "countdown_to_turn_on", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "reset_total_energy", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Third Reality, Inc", + "model": "3RWP01073Z", + "node_desc": { + "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": 5127, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xff03" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Reset bottom total energy", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_bottom", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + }, + { + "fallback_name": "Reset top total energy", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-reset_summation_delivered", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "reset_total_energy_top", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "attribute_name": "reset_total_energy", + "attribute_value": 1 + } + ], + "number": [ + { + "fallback_name": "Countdown to turn on bottom", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_bottom", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off bottom", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_bottom", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Red LED brightness", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-red_led_brightness", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "red_led_brightness", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Countdown to turn on top", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-off_to_on_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_on_top", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Countdown to turn off top", + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-on_to_off_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "countdown_to_turn_off_top", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 131, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.1, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 13, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.003, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 228.2, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": null, + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": 228.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6c:64:d1:bd-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6c:64:d1:bd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000036", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-402vrq2i-ts004f-0x00000042.json b/tests/data/devices/tz3000-402vrq2i-ts004f-0x00000042.json new file mode 100644 index 000000000..62de3475e --- /dev/null +++ b/tests/data/devices/tz3000-402vrq2i-ts004f-0x00000042.json @@ -0,0 +1,378 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ca:fc:74:67", + "nwk": "0xC6EC", + "manufacturer": "_TZ3000_402vrq2i", + "model": "TS004F", + "friendly_manufacturer": "_TZ3000_402vrq2i", + "friendly_model": "TS004F", + "name": "_TZ3000_402vrq2i TS004F", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts004f:TuyaSmartRemote004F", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 112, + "rssi": -83, + "last_seen": "2026-02-16T08:35:44.345774+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_CONTROLLER", + "id": 2080 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 66 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_402vrq2i" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS004F" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 25 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "TS004X_cluster", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": false + }, + { + "id": "0x8004", + "name": "switch_mode", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 66 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_402vrq2i", + "model": "TS004F", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0001", + "0x0003", + "0x0004", + "0x0006", + "0x1000", + "0x0000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:fc:74:67-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:fc:74:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:fc:74:67-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:fc:74:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 112, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:fc:74:67-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:fc:74:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -83, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:fc:74:67-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ca:fc:74:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 2.5 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:fc:74:67-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:fc:74:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000042", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-ajsypttg-ts0041-0x00000040.json b/tests/data/devices/tz3000-ajsypttg-ts0041-0x00000040.json new file mode 100644 index 000000000..a5909199a --- /dev/null +++ b/tests/data/devices/tz3000-ajsypttg-ts0041-0x00000040.json @@ -0,0 +1,294 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8f:2c:94:8e", + "nwk": "0x91F8", + "manufacturer": "_TZ3000_ajsypttg", + "model": "TS0041", + "friendly_manufacturer": "_TZ3000_ajsypttg", + "friendly_model": "TS0041", + "name": "_TZ3000_ajsypttg TS0041", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 224, + "rssi": -44, + "last_seen": "2026-08-18T15:28:30.566551+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "IAS_ANCILLARY_CONTROL", + "id": 1025 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 64 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_ajsypttg" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0041" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 64 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_ajsypttg", + "model": "TS0041", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0401", + "input_clusters": [ + "0x0000", + "0x000a", + "0x0001", + "0x0006" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:2c:94:8e-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:2c:94:8e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 224, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:2c:94:8e-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:2c:94:8e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -44, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:2c:94:8e-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:8f:2c:94:8e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:2c:94:8e-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:2c:94:8e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8f:2c:94:8e-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8f:2c:94:8e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000040", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-au1rjicn-ts0203-0x00000046.json b/tests/data/devices/tz3000-au1rjicn-ts0203-0x00000046.json new file mode 100644 index 000000000..70bcc9697 --- /dev/null +++ b/tests/data/devices/tz3000-au1rjicn-ts0203-0x00000046.json @@ -0,0 +1,420 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a5:c4:ea:49", + "nwk": "0x427A", + "manufacturer": "_TZ3000_au1rjicn", + "model": "TS0203", + "friendly_manufacturer": "_TZ3000_au1rjicn", + "friendly_model": "TS0203", + "name": "_TZ3000_au1rjicn TS0203", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 208, + "rssi": -59, + "last_seen": "2026-03-29T14:04:04.562043+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_au1rjicn" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0203" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 21 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_au1rjicn", + "model": "TS0203", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0001", + "0x0003", + "0x0500", + "0x0000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 208, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -59, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a5:c4:ea:49-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a5:c4:ea:49", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-bb6xaihh-snzb-03-0x10033607.json b/tests/data/devices/tz3000-bb6xaihh-snzb-03-0x10033607.json new file mode 100644 index 000000000..9d6a7ea73 --- /dev/null +++ b/tests/data/devices/tz3000-bb6xaihh-snzb-03-0x10033607.json @@ -0,0 +1,378 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d8:08:d4:28", + "nwk": "0xF522", + "manufacturer": "_TZ3000_bb6xaihh", + "model": "SNZB-03", + "friendly_manufacturer": "_TZ3000_bb6xaihh", + "friendly_model": "SNZB-03", + "name": "_TZ3000_bb6xaihh SNZB-03", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZ3000_bb6xaihh / SNZB-03)", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 92, + "rssi": -77, + "last_seen": "2026-02-07T04:19:55.904179+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 113 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_bb6xaihh" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SNZB-03" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0013", + "name": "current_zone_sensitivity_level", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 268645895 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_bb6xaihh", + "model": "SNZB-03", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0001", + "0x0500", + "0x0020" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 92, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -77, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:08:d4:28-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:08:d4:28", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x10033607", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-bdbb0fon-ts1001-0x00000049.json b/tests/data/devices/tz3000-bdbb0fon-ts1001-0x00000049.json new file mode 100644 index 000000000..4d8016d25 --- /dev/null +++ b/tests/data/devices/tz3000-bdbb0fon-ts1001-0x00000049.json @@ -0,0 +1,372 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d7:bb:73:a5", + "nwk": "0x2D90", + "manufacturer": "_TZ3000_bdbb0fon", + "model": "TS1001", + "friendly_manufacturer": "_TZ3000_bdbb0fon", + "friendly_model": "TS1001", + "name": "_TZ3000_bdbb0fon TS1001", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 108, + "rssi": null, + "last_seen": "2026-09-19T22:37:37.498723+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_bdbb0fon" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS1001" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 6 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 73 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xe003", + "endpoint_attribute": null, + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_bdbb0fon", + "model": "TS1001", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0104", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x1000", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a", + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x1000", + "0xe003" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d7:bb:73:a5-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d7:bb:73:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d7:bb:73:a5-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d7:bb:73:a5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 108, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d7:bb:73:a5-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d7:bb:73:a5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d7:bb:73:a5-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:d7:bb:73:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d7:bb:73:a5-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d7:bb:73:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000049", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-bs93npae-ts130f-0x00000046.json b/tests/data/devices/tz3000-bs93npae-ts130f-0x00000046.json new file mode 100644 index 000000000..7eb6db53c --- /dev/null +++ b/tests/data/devices/tz3000-bs93npae-ts130f-0x00000046.json @@ -0,0 +1,618 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6d:27:56:14", + "nwk": "0x033B", + "manufacturer": "_TZ3000_bs93npae", + "model": "TS130F", + "friendly_manufacturer": "_TZ3000_bs93npae", + "friendly_model": "TS130F", + "name": "_TZ3000_bs93npae TS130F", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts130f:TuyaTS130ESTC", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 164, + "rssi": -70, + "last_seen": "2026-07-31T23:24:14.101743+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_CONTROLLER", + "id": 515 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "" + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_bs93npae" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS130F" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0002", + "name": "current_group", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_scene", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0004", + "name": "name_support", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0003", + "name": "scene_valid", + "zcl_type": "bool", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "global_scene_control", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 30 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 30 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0015", + "name": "acceleration_time_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xf001", + "name": "calibration", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xf003", + "name": "calibration_time", + "zcl_type": "uint16", + "value": 230 + }, + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0003", + "name": "current_position_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 68 + }, + { + "id": "0x0004", + "name": "current_position_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0016", + "name": "deceleration_time_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x8000", + "name": "motor_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0xf002", + "name": "motor_reversal", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0005", + "name": "number_of_actuations_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0xf000", + "name": "tuya_moving_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0014", + "name": "velocity_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": "tuya_external_switch_type", + "attributes": [ + { + "id": "0xd030", + "name": "external_switch_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 3 + }, + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + }, + { + "id": "0x0003", + "name": "current_zigbee_stack_version", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0004", + "name": "downloaded_file_version", + "zcl_type": "uint32", + "value": 4294967295 + }, + { + "id": "0x0005", + "name": "downloaded_zigbee_stack_version", + "zcl_type": "uint16", + "value": 65535 + }, + { + "id": "0x0001", + "name": "file_offset", + "zcl_type": "uint32", + "value": 4294967295 + }, + { + "id": "0x0008", + "name": "image_type_id", + "zcl_type": "uint16", + "value": 65535 + }, + { + "id": "0x0006", + "name": "image_upgrade_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0007", + "name": "manufacturer_id", + "zcl_type": "uint16", + "value": 4417 + }, + { + "id": "0x0009", + "name": "minimum_block_req_delay", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "upgrade_server_id", + "zcl_type": "EUI64", + "value": [ + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ] + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_bs93npae", + "model": "TS130F", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "0x0102", + "0xe001", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:27:56:14-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:27:56:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 32, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:27:56:14-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:27:56:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 164, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:27:56:14-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:27:56:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -70, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:27:56:14-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:27:56:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-bsvqrxru-ts0202-0x00000046.json b/tests/data/devices/tz3000-bsvqrxru-ts0202-0x00000046.json new file mode 100644 index 000000000..73642894a --- /dev/null +++ b/tests/data/devices/tz3000-bsvqrxru-ts0202-0x00000046.json @@ -0,0 +1,420 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:2a:88:61:67", + "nwk": "0xE639", + "manufacturer": "_TZ3000_bsvqrxru", + "model": "TS0202", + "friendly_manufacturer": "_TZ3000_bsvqrxru", + "friendly_model": "TS0202", + "name": "_TZ3000_bsvqrxru TS0202", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 160, + "rssi": null, + "last_seen": "2026-04-20T16:10:13.722491+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_bsvqrxru" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0202" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0013", + "name": "current_zone_sensitivity_level", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 1 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_bsvqrxru", + "model": "TS0202", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0001", + "0x0500", + "0x0003", + "0x0000" + ], + "output_clusters": [ + "0x1000", + "0x0006", + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "attribute_name": "zone_status" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 160, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": 3.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2a:88:61:67-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2a:88:61:67", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-cxw02yp3-ts0014-0x00000046.json b/tests/data/devices/tz3000-cxw02yp3-ts0014-0x00000046.json new file mode 100644 index 000000000..2debe1e62 --- /dev/null +++ b/tests/data/devices/tz3000-cxw02yp3-ts0014-0x00000046.json @@ -0,0 +1,640 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:35:1d:c9:09", + "nwk": "0xAC7A", + "manufacturer": "_TZ3000_cxw02yp3", + "model": "TS0014", + "friendly_manufacturer": "_TZ3000_cxw02yp3", + "friendly_model": "TS0014", + "name": "_TZ3000_cxw02yp3 TS0014", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 57, + "rssi": null, + "last_seen": "2026-06-29T22:53:26.552476+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_cxw02yp3" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0014" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + } + ] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_cxw02yp3", + "model": "TS0014", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-3", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 3, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-4", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 4, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 57, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:35:1d:c9:09-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:35:1d:c9:09", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-fa9mlvja-ts0041-0x00000048.json b/tests/data/devices/tz3000-fa9mlvja-ts0041-0x00000048.json new file mode 100644 index 000000000..98dfee992 --- /dev/null +++ b/tests/data/devices/tz3000-fa9mlvja-ts0041-0x00000048.json @@ -0,0 +1,681 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:da:28:ec:01", + "nwk": "0x8F02", + "manufacturer": "_TZ3000_fa9mlvja", + "model": "TS0041", + "friendly_manufacturer": "_TZ3000_fa9mlvja", + "friendly_model": "TS0041", + "name": "_TZ3000_fa9mlvja TS0041", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 188, + "rssi": -53, + "last_seen": "2026-09-30T22:40:17.369537+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "5": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + }, + "6": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_fa9mlvja", + "model": "TS0041", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0001", + "0x0006", + "0xe000", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0006", + "0x0001" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0006", + "0x0001" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0006", + "0x0001" + ], + "output_clusters": [] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0006", + "0x0001" + ], + "output_clusters": [] + }, + "6": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0006", + "0x0001" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 188, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -53, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-2-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-3-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 3, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-4-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 4, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-5-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 5, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-6-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 6, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-3-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": false + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-4-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 4, + "available": true, + "group_id": null, + "is_on": false + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-5-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 5, + "available": true, + "group_id": null, + "is_on": false + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-6-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 6, + "available": true, + "group_id": null, + "is_on": false + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:da:28:ec:01-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:da:28:ec:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-hhiodade-ts0011-0x00000050.json b/tests/data/devices/tz3000-hhiodade-ts0011-0x00000050.json new file mode 100644 index 000000000..b4d431752 --- /dev/null +++ b/tests/data/devices/tz3000-hhiodade-ts0011-0x00000050.json @@ -0,0 +1,344 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:78:b4:85:0d", + "nwk": "0xC020", + "manufacturer": "_TZ3000_hhiodade", + "model": "TS0011", + "friendly_manufacturer": "_TZ3000_hhiodade", + "friendly_model": "TS0011", + "name": "_TZ3000_hhiodade TS0011", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts001x:TuyaSingleNoNeutralSwitch_2", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 105, + "rssi": null, + "last_seen": "2026-05-19T10:53:19.396413+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_hhiodade" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0011" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_hhiodade", + "model": "TS0011", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:78:b4:85:0d-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:78:b4:85:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:78:b4:85:0d-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:78:b4:85:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:78:b4:85:0d-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:78:b4:85:0d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 105, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:78:b4:85:0d-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:78:b4:85:0d", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:78:b4:85:0d-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:78:b4:85:0d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-icoxotza-ts0726-0x00000048.json b/tests/data/devices/tz3000-icoxotza-ts0726-0x00000048.json new file mode 100644 index 000000000..a4a4055cb --- /dev/null +++ b/tests/data/devices/tz3000-icoxotza-ts0726-0x00000048.json @@ -0,0 +1,455 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9b:25:7e:ac", + "nwk": "0x3AC8", + "manufacturer": "_TZ3000_icoxotza", + "model": "TS0726", + "friendly_manufacturer": "_TZ3000_icoxotza", + "friendly_model": "TS0726", + "name": "_TZ3000_icoxotza TS0726", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 56, + "rssi": -86, + "last_seen": "2026-10-05T00:20:13.380727+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SCENE_SELECTOR", + "id": 4 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 72 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_icoxotza" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0726" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "SCENE_SELECTOR", + "id": 4 + }, + "in_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_icoxotza", + "model": "TS0726", + "node_desc": { + "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": "0x0004", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xe000", + "0xe001" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0004", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xe000", + "0xe001" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 56, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -86, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-2-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9b:25:7e:ac-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9b:25:7e:ac", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-pf7swkqp-ts0003-0x0000004a.json b/tests/data/devices/tz3000-pf7swkqp-ts0003-0x0000004a.json new file mode 100644 index 000000000..9830f031b --- /dev/null +++ b/tests/data/devices/tz3000-pf7swkqp-ts0003-0x0000004a.json @@ -0,0 +1,1137 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:29:7e:fb:14", + "nwk": "0x0BEC", + "manufacturer": "_TZ3000_pf7swkqp", + "model": "TS0003", + "friendly_manufacturer": "_TZ3000_pf7swkqp", + "friendly_model": "TS0003", + "name": "_TZ3000_pf7swkqp TS0003", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts000x:Switch_3G_Metering", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 103, + "rssi": null, + "last_seen": "2026-05-19T23:21:04.266424+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_pf7swkqp" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0003" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 100 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "value": 1 + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": "tuya_manufacturer_specific_57344", + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": "tuya_external_switch_type", + "attributes": [ + { + "id": "0xd030", + "name": "external_switch_type", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_pf7swkqp", + "model": "TS0003", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xe000", + "0xe001", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-3", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 3, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-6-power_on_state", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "TuyaPowerOnStateSelectEntity", + "translation_key": "power_on_state", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "LastState", + "enum": "TuyaPowerOnState", + "options": [ + "Off", + "On", + "LastState" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 103, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:29:7e:fb:14-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:29:7e:fb:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-wn65ixz9-ts0001.json b/tests/data/devices/tz3000-wn65ixz9-ts0001.json new file mode 100644 index 000000000..070eb727b --- /dev/null +++ b/tests/data/devices/tz3000-wn65ixz9-ts0001.json @@ -0,0 +1,203 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ab:82:5f:a1", + "nwk": "0x351F", + "manufacturer": "_TZ3000_wn65ixz9", + "model": "TS0001", + "friendly_manufacturer": "_TZ3000_wn65ixz9", + "friendly_model": "TS0001", + "name": "_TZ3000_wn65ixz9 TS0001", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.tuya_repeater:(_TZ3000_wn65ixz9 / TS0001)", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": 204, + "rssi": -49, + "last_seen": "2026-05-20T02:12:56.772173+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 0, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 0, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "RANGE_EXTENDER", + "id": 8 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_wn65ixz9" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0001" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xfc11", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_wn65ixz9", + "model": "TS0001", + "node_desc": { + "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": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 0, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 0, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0006", + "0x0003", + "0x0004", + "0x0005", + "0xe001", + "0x0b04", + "0x0702", + "0xfc11" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ab:82:5f:a1-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ab:82:5f:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ab:82:5f:a1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ab:82:5f:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 204, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ab:82:5f:a1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ab:82:5f:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -49, + "suggested_display_precision": null, + "unit": "dBm" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3000-ysiog9xi-ts0001.json b/tests/data/devices/tz3000-ysiog9xi-ts0001.json new file mode 100644 index 000000000..94727e672 --- /dev/null +++ b/tests/data/devices/tz3000-ysiog9xi-ts0001.json @@ -0,0 +1,759 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:50:32:5e:77", + "nwk": "0x0954", + "manufacturer": "_TZ3000_ysiog9xi", + "model": "TS0001", + "friendly_manufacturer": "_TZ3000_ysiog9xi", + "friendly_model": "TS0001", + "name": "_TZ3000_ysiog9xi TS0001", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": 164, + "rssi": -70, + "last_seen": "2026-09-06T21:59:54.441948+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 0, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 0, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_ysiog9xi" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0001" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "unsupported": true + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "unsupported": true + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "unsupported": true + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0103", + "name": "dc_current", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0203", + "name": "dc_current_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0202", + "name": "dc_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0106", + "name": "dc_power", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0205", + "name": "dc_power_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0204", + "name": "dc_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0100", + "name": "dc_voltage", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0201", + "name": "dc_voltage_divisor", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0200", + "name": "dc_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0304", + "name": "total_active_power", + "zcl_type": "int32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZ3000_ysiog9xi", + "model": "TS0001", + "node_desc": { + "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": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 0, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 0, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0006", + "0x0003", + "0x0004", + "0x0005", + "0xe001", + "0x0b04", + "0x0702" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 164, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -70, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": null, + "device_type": null, + "status": null, + "zcl_unit_of_measurement": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:50:32:5e:77-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:50:32:5e:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": null, + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3210-hs01bacp-ts030f-0x00000055.json b/tests/data/devices/tz3210-hs01bacp-ts030f-0x00000055.json new file mode 100644 index 000000000..0ddaf475c --- /dev/null +++ b/tests/data/devices/tz3210-hs01bacp-ts030f-0x00000055.json @@ -0,0 +1,304 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:57:db:cf:6b", + "nwk": "0x7D7A", + "manufacturer": "_TZ3210_hs01bacp", + "model": "TS030F", + "friendly_manufacturer": "_TZ3210_hs01bacp", + "friendly_model": "TS030F", + "name": "_TZ3210_hs01bacp TS030F", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 58, + "rssi": null, + "last_seen": "2026-09-23T10:24:20.899291+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3210_hs01bacp" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS030F" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 67 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 85 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3210_hs01bacp", + "model": "TS030F", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0102", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:57:db:cf:6b-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:57:db:cf:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 33, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:57:db:cf:6b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:57:db:cf:6b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 58, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:57:db:cf:6b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:57:db:cf:6b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:57:db:cf:6b-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:57:db:cf:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:57:db:cf:6b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:57:db:cf:6b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000055", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3210-mldzab8w-ts130f-0x00000041.json b/tests/data/devices/tz3210-mldzab8w-ts130f-0x00000041.json new file mode 100644 index 000000000..965934787 --- /dev/null +++ b/tests/data/devices/tz3210-mldzab8w-ts130f-0x00000041.json @@ -0,0 +1,330 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bc:67:50:99", + "nwk": "0x6DD5", + "manufacturer": "_TZ3210_mldzab8w", + "model": "TS130F", + "friendly_manufacturer": "_TZ3210_mldzab8w", + "friendly_model": "TS130F", + "name": "_TZ3210_mldzab8w TS130F", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 148, + "rssi": -74, + "last_seen": "2026-10-02T19:34:27.513536+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3210_mldzab8w" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS130F" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4002", + "name": "off_wait_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 55 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3210_mldzab8w", + "model": "TS130F", + "node_desc": { + "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": "0x0202", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0x0006", + "0x0102", + "0xe001", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:67:50:99-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:67:50:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 45, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:67:50:99-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:67:50:99", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 148, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:67:50:99-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:67:50:99", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:67:50:99-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:67:50:99", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3210-pagajpog-ts110e-0x00000044.json b/tests/data/devices/tz3210-pagajpog-ts110e-0x00000044.json new file mode 100644 index 000000000..e8e31f457 --- /dev/null +++ b/tests/data/devices/tz3210-pagajpog-ts110e-0x00000044.json @@ -0,0 +1,527 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b5:31:5f:a5", + "nwk": "0x7D62", + "manufacturer": "_TZ3210_pagajpog", + "model": "TS110E", + "friendly_manufacturer": "_TZ3210_pagajpog", + "friendly_model": "TS110E", + "name": "_TZ3210_pagajpog TS110E", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 196, + "rssi": -51, + "last_seen": "2026-06-09T17:43:38.308148+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3210_pagajpog" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS110E" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 68 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3210_pagajpog", + "model": "TS110E", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0005", + "0x0004", + "0x0006", + "0x0008", + "0xe001", + "0x1000", + "0x0003", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0005", + "0x0004", + "0x0006", + "0x0008", + "0xe001" + ], + "output_clusters": [] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 196, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -51, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b5:31:5f:a5-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b5:31:5f:a5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000044", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3218-hdc8bbha-ts000f-0x00000080.json b/tests/data/devices/tz3218-hdc8bbha-ts000f-0x00000080.json new file mode 100644 index 000000000..c4af818e4 --- /dev/null +++ b/tests/data/devices/tz3218-hdc8bbha-ts000f-0x00000080.json @@ -0,0 +1,342 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8b:e6:a7:36", + "nwk": "0xB494", + "manufacturer": "_TZ3218_hdc8bbha", + "model": "TS000F", + "friendly_manufacturer": "_TZ3218_hdc8bbha", + "friendly_model": "TS000F", + "name": "_TZ3218_hdc8bbha TS000F", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 132, + "rssi": -78, + "last_seen": "2026-08-11T12:13:47.606669+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 128 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3218_hdc8bbha" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS000F" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 128 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3218_hdc8bbha", + "model": "TS000F", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xe000", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:e6:a7:36-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:e6:a7:36", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:e6:a7:36-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:e6:a7:36", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:e6:a7:36-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:e6:a7:36", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 132, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:e6:a7:36-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:e6:a7:36", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -78, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8b:e6:a7:36-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8b:e6:a7:36", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000080", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tz3290-qazgdsae-ts1201-0x00000043.json b/tests/data/devices/tz3290-qazgdsae-ts1201-0x00000043.json new file mode 100644 index 000000000..99ccc1a4e --- /dev/null +++ b/tests/data/devices/tz3290-qazgdsae-ts1201-0x00000043.json @@ -0,0 +1,358 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6d:7b:f5:02", + "nwk": "0xB33D", + "manufacturer": "_TZ3290_qazgdsae", + "model": "TS1201", + "friendly_manufacturer": "_TZ3290_qazgdsae", + "friendly_model": "TS1201", + "name": "_TZ3290_qazgdsae TS1201", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-08-26T07:17:50.336106+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "undefined_0xf000", + "id": 61440 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3290_qazgdsae" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS1201" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 138 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 14 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe004", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 67 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZ3290_qazgdsae", + "model": "TS1201", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0xf000", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0x0003", + "0x0001", + "0xed00", + "0xe004", + "0x0006" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 69.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 1.4 + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-6", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6d:7b:f5:02-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6d:7b:f5:02", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000043", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tzb210-rkgngb5o-ts0501b-0x00000041.json b/tests/data/devices/tzb210-rkgngb5o-ts0501b-0x00000041.json new file mode 100644 index 000000000..78b323377 --- /dev/null +++ b/tests/data/devices/tzb210-rkgngb5o-ts0501b-0x00000041.json @@ -0,0 +1,406 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:49:97:ff:45", + "nwk": "0x6929", + "manufacturer": "_TZB210_rkgngb5o", + "model": "TS0501B", + "friendly_manufacturer": "_TZB210_rkgngb5o", + "friendly_model": "TS0501B", + "name": "_TZB210_rkgngb5o TS0501B", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0501bs:DimmableLedController", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 100, + "rssi": -86, + "last_seen": "2025-12-28T19:30:05.501683+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "DIMMABLE_LIGHT", + "id": 257 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0009", + "name": "generic_device_type", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZB210_rkgngb5o" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0501B" + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0x000e", + "name": "product_label", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x000b", + "name": "product_url", + "zcl_type": "string", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 3 + }, + { + "id": "0x0014", + "name": "default_move_rate", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0013", + "name": "off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0011", + "name": "on_level", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0010", + "name": "on_off_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "on_transition_time", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x4000", + "name": "start_up_current_level", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZB210_rkgngb5o", + "model": "TS0501B", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0101", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0x1000", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:49:97:ff:45-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:49:97:ff:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:49:97:ff:45-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:49:97:ff:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 3, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 40, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:49:97:ff:45-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:49:97:ff:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:49:97:ff:45-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:49:97:ff:45", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -86, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:49:97:ff:45-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:49:97:ff:45", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-3ejwxpmu-ts0601.json b/tests/data/devices/tze200-3ejwxpmu-ts0601.json new file mode 100644 index 000000000..a1af15773 --- /dev/null +++ b/tests/data/devices/tze200-3ejwxpmu-ts0601.json @@ -0,0 +1,322 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:81:e5:cd:38", + "nwk": "0x0503", + "manufacturer": "_TZE200_3ejwxpmu", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_3ejwxpmu", + "friendly_model": "TS0601", + "name": "_TZE200_3ejwxpmu TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_3ejwxpmu / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "2026-10-05T20:09:45.783088+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_3ejwxpmu" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [] + }, + { + "cluster_id": "0x040d", + "endpoint_attribute": "carbon_dioxide_concentration", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_3ejwxpmu", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "%" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-1037", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "CarbonDioxideConcentration", + "translation_key": null, + "translation_placeholders": null, + "device_class": "carbon_dioxide", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "ppm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:81:e5:cd:38-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:81:e5:cd:38", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-68nvbio9-ts0601-0x00000048.json b/tests/data/devices/tze200-68nvbio9-ts0601-0x00000048.json new file mode 100644 index 000000000..c49c81439 --- /dev/null +++ b/tests/data/devices/tze200-68nvbio9-ts0601-0x00000048.json @@ -0,0 +1,286 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:2e:21:db:80", + "nwk": "0x9242", + "manufacturer": "_TZE200_68nvbio9", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_68nvbio9", + "friendly_model": "TS0601", + "name": "_TZE200_68nvbio9 TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_cover:TuyaMoesCover0601", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 32, + "rssi": -92, + "last_seen": "2026-07-13T20:30:57.010774+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 72 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_68nvbio9" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_68nvbio9", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2e:21:db:80-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2e:21:db:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2e:21:db:80-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2e:21:db:80", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 32, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2e:21:db:80-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2e:21:db:80", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -92, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:2e:21:db:80-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:2e:21:db:80", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-7tdtqgwv-ts0601-0x00000053.json b/tests/data/devices/tze200-7tdtqgwv-ts0601-0x00000053.json new file mode 100644 index 000000000..eb87f6717 --- /dev/null +++ b/tests/data/devices/tze200-7tdtqgwv-ts0601-0x00000053.json @@ -0,0 +1,288 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:62:65:55:20", + "nwk": "0x8444", + "manufacturer": "_TZE200_7tdtqgwv", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_7tdtqgwv", + "friendly_model": "TS0601", + "name": "_TZE200_7tdtqgwv TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_switch:TuyaSingleSwitchTO", + "exposes_features": [ + "tuya.plug_manufacturer_attributes" + ], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 208, + "rssi": -59, + "last_seen": "2025-10-01T19:47:45.774893+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_7tdtqgwv" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [ + { + "id": "0x0000", + "name": "count", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 83 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_7tdtqgwv", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:65:55:20-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:65:55:20", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 0, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:65:55:20-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:65:55:20", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 208, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:65:55:20-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:65:55:20", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -59, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:65:55:20-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:65:55:20", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000053", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-a1ovdobn-ts0601-0x00000040.json b/tests/data/devices/tze200-a1ovdobn-ts0601-0x00000040.json new file mode 100644 index 000000000..47d2a1145 --- /dev/null +++ b/tests/data/devices/tze200-a1ovdobn-ts0601-0x00000040.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:23:13:b0:77", + "nwk": "0xEB9C", + "manufacturer": "_TZE200_a1ovdobn", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_a1ovdobn", + "friendly_model": "TS0601", + "name": "_TZE200_a1ovdobn TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 68, + "rssi": -83, + "last_seen": "2026-06-10T07:10:07.791657+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 64 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_a1ovdobn" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 64 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_a1ovdobn", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:23:13:b0:77-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:23:13:b0:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 68, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:23:13:b0:77-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:23:13:b0:77", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -83, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:23:13:b0:77-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:23:13:b0:77", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000040", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-agumlajc-ts0601-0x00000041.json b/tests/data/devices/tze200-agumlajc-ts0601-0x00000041.json new file mode 100644 index 000000000..748586dd3 --- /dev/null +++ b/tests/data/devices/tze200-agumlajc-ts0601-0x00000041.json @@ -0,0 +1,222 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:fb:2b:64:9f", + "nwk": "0x4A53", + "manufacturer": "_TZE200_agumlajc", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_agumlajc", + "friendly_model": "TS0601", + "name": "_TZE200_agumlajc TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 112, + "rssi": -72, + "last_seen": "2026-10-05T00:31:19.025190+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 65 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_agumlajc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_agumlajc", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fb:2b:64:9f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fb:2b:64:9f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 112, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fb:2b:64:9f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fb:2b:64:9f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -72, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fb:2b:64:9f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fb:2b:64:9f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-cf1sl3tj-ts0601-0x00000048.json b/tests/data/devices/tze200-cf1sl3tj-ts0601-0x00000048.json new file mode 100644 index 000000000..c064a5339 --- /dev/null +++ b/tests/data/devices/tze200-cf1sl3tj-ts0601-0x00000048.json @@ -0,0 +1,286 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4f:01:72:7c", + "nwk": "0xA376", + "manufacturer": "_TZE200_cf1sl3tj", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_cf1sl3tj", + "friendly_model": "TS0601", + "name": "_TZE200_cf1sl3tj TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_cover:TuyaMoesCover0601", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 176, + "rssi": -56, + "last_seen": "2026-07-13T20:30:57.408584+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 72 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_cf1sl3tj" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_cf1sl3tj", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:01:72:7c-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:01:72:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 100, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": false, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:01:72:7c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:01:72:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 176, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:01:72:7c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:01:72:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -56, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4f:01:72:7c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4f:01:72:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-d3z1ukqw-ts0601-0x00000043.json b/tests/data/devices/tze200-d3z1ukqw-ts0601-0x00000043.json new file mode 100644 index 000000000..f3c6da7e4 --- /dev/null +++ b/tests/data/devices/tze200-d3z1ukqw-ts0601-0x00000043.json @@ -0,0 +1,651 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:61:68:63:0f", + "nwk": "0x2F8A", + "manufacturer": "_TZE200_d3z1ukqw", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_d3z1ukqw", + "friendly_model": "TS0601", + "name": "_TZE200_d3z1ukqw TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_bvu2wnxz / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 116, + "rssi": null, + "last_seen": "2026-02-05T01:48:11.463451+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 67 + }, + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0006", + "name": "date_code", + "zcl_type": "string", + "value": "" + }, + { + "id": "0x0003", + "name": "hw_version", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_d3z1ukqw" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x000b", + "name": "product_url", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + } + ] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 2200 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 67 + }, + { + "id": "0x0004", + "name": "downloaded_file_version", + "zcl_type": "uint32", + "value": 4294967295 + }, + { + "id": "0x0005", + "name": "downloaded_zigbee_stack_version", + "zcl_type": "uint16", + "value": 65535 + }, + { + "id": "0x000b", + "name": "upgrade_activation_policy", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_d3z1ukqw", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": "Error or battery low", + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-error_or_battery_low", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "error_or_battery_low", + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "error_or_battery_low" + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-513", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": null, + "outdoor_temperature": null, + "target_temperature": 22.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": null, + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 2200, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": "Local temperature calibration", + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 6, + "native_min_value": -6, + "native_step": 1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 116, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": "Child lock", + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-child_lock", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "child_lock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "child_lock", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Frost protection", + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-frost_protection", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "frost_protection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "frost_protection", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Scale protection", + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-scale_protection", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "scale_protection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "scale_protection", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:61:68:63:0f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:61:68:63:0f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000043", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-f1pvdgoh-ts0601-0x00003102.json b/tests/data/devices/tze200-f1pvdgoh-ts0601-0x00003102.json new file mode 100644 index 000000000..1de8bcd71 --- /dev/null +++ b/tests/data/devices/tze200-f1pvdgoh-ts0601-0x00003102.json @@ -0,0 +1,348 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "nwk": "0x09DC", + "manufacturer": "_TZE200_f1pvdgoh", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_f1pvdgoh", + "friendly_model": "TS0601", + "name": "_TZE200_f1pvdgoh TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 232, + "rssi": -42, + "last_seen": "2026-08-06T15:01:00.047766+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_f1pvdgoh" + }, + { + "id": "0x000c", + "name": "manufacturer_version_details", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 12546 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_f1pvdgoh", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 404, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 404, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0020", + "0x0004", + "0x0500", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:fa:d5:b9-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:fa:d5:b9-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:fa:d5:b9-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -42, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:fa:d5:b9-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 2, + "battery_voltage": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:6f:fa:d5:b9-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:6f:fa:d5:b9", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00003102", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-fzo2pocs-ts0601-0x00000048.json b/tests/data/devices/tze200-fzo2pocs-ts0601-0x00000048.json new file mode 100644 index 000000000..21217514b --- /dev/null +++ b/tests/data/devices/tze200-fzo2pocs-ts0601-0x00000048.json @@ -0,0 +1,281 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9a:04:89:52", + "nwk": "0x01E1", + "manufacturer": "_TZE200_fzo2pocs", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_fzo2pocs", + "friendly_model": "TS0601", + "name": "_TZE200_fzo2pocs TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_cover:TuyaZemismartSmartCover0601_3", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 66, + "rssi": null, + "last_seen": "2026-09-19T20:18:20.677811+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 72 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_fzo2pocs" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_fzo2pocs", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:04:89:52-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:04:89:52", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": 0, + "current_tilt_position": null, + "is_opening": false, + "is_closing": false, + "is_closed": true, + "supported_features": 15 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:04:89:52-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:04:89:52", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 66, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:04:89:52-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:04:89:52", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9a:04:89:52-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9a:04:89:52", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-gbagoilo-ts0601-0x00000046.json b/tests/data/devices/tze200-gbagoilo-ts0601-0x00000046.json new file mode 100644 index 000000000..280173edd --- /dev/null +++ b/tests/data/devices/tze200-gbagoilo-ts0601-0x00000046.json @@ -0,0 +1,302 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a9:b5:13:a6", + "nwk": "0xB5F9", + "manufacturer": "_TZE200_gbagoilo", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_gbagoilo", + "friendly_model": "TS0601", + "name": "_TZE200_gbagoilo TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_switch:TuyaSingleSwitchGP", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 255, + "rssi": -68, + "last_seen": "2026-09-11T06:16:23.154960+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_gbagoilo" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_gbagoilo", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:b5:13:a6-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a9:b5:13:a6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 0, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:b5:13:a6-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a9:b5:13:a6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:b5:13:a6-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a9:b5:13:a6", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:b5:13:a6-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a9:b5:13:a6", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-ivdc0kwl-ts0601-0x00000043.json b/tests/data/devices/tze200-ivdc0kwl-ts0601-0x00000043.json new file mode 100644 index 000000000..c7abd0121 --- /dev/null +++ b/tests/data/devices/tze200-ivdc0kwl-ts0601-0x00000043.json @@ -0,0 +1,240 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3a:32:8c:b4", + "nwk": "0xFA59", + "manufacturer": "_TZE200_ivdc0kwl", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_ivdc0kwl", + "friendly_model": "TS0601", + "name": "_TZE200_ivdc0kwl TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 72, + "rssi": null, + "last_seen": "2026-09-24T09:57:15.459331+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 67 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_ivdc0kwl" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 67 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_ivdc0kwl", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:32:8c:b4-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:32:8c:b4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 72, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:32:8c:b4-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:32:8c:b4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:32:8c:b4-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3a:32:8c:b4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000043", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-kafooqvr-ts0601-0x00000048.json b/tests/data/devices/tze200-kafooqvr-ts0601-0x00000048.json new file mode 100644 index 000000000..2fcfe564f --- /dev/null +++ b/tests/data/devices/tze200-kafooqvr-ts0601-0x00000048.json @@ -0,0 +1,222 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c2:a9:d1:25", + "nwk": "0x2B1D", + "manufacturer": "_TZE200_kafooqvr", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_kafooqvr", + "friendly_model": "TS0601", + "name": "_TZE200_kafooqvr TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 232, + "rssi": -53, + "last_seen": "2026-02-28T17:59:38.866530+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 72 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_kafooqvr" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 72 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_kafooqvr", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c2:a9:d1:25-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c2:a9:d1:25", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c2:a9:d1:25-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c2:a9:d1:25", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -53, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c2:a9:d1:25-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c2:a9:d1:25", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000048", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-libht6ua-ts0601-0x00000041.json b/tests/data/devices/tze200-libht6ua-ts0601-0x00000041.json new file mode 100644 index 000000000..51bcaed54 --- /dev/null +++ b/tests/data/devices/tze200-libht6ua-ts0601-0x00000041.json @@ -0,0 +1,240 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:25:a7:64:05", + "nwk": "0x4E27", + "manufacturer": "_TZE200_libht6ua", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_libht6ua", + "friendly_model": "TS0601", + "name": "_TZE200_libht6ua TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 152, + "rssi": -62, + "last_seen": "2026-05-13T19:57:30.602547+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 65 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_libht6ua" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_libht6ua", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:a7:64:05-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:25:a7:64:05", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 152, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:a7:64:05-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:25:a7:64:05", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:a7:64:05-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:25:a7:64:05", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-lrznf59v-ts0601-0x00000055.json b/tests/data/devices/tze200-lrznf59v-ts0601-0x00000055.json new file mode 100644 index 000000000..a94357cb6 --- /dev/null +++ b/tests/data/devices/tze200-lrznf59v-ts0601-0x00000055.json @@ -0,0 +1,612 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:5a:f3:0e:01", + "nwk": "0x4E98", + "manufacturer": "_TZE200_lrznf59v", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_lrznf59v", + "friendly_model": "TS0601", + "name": "_TZE200_lrznf59v TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_trv:SiterwellGS361_Type2", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 76, + "rssi": null, + "last_seen": "2026-02-17T15:40:32.753241+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 85 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_lrznf59v" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0006", + "name": "abs_max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0005", + "name": "abs_min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2320 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0018", + "name": "max_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "min_cool_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0025", + "name": "programing_oper_mode", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x001e", + "name": "running_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0029", + "name": "running_state", + "zcl_type": "map16", + "value": 1 + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x001c", + "name": "system_mode", + "zcl_type": "enum8", + "value": 4 + }, + { + "id": "0x0013", + "name": "unoccupied_cooling_setpoint", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0x0215", + "name": "battery", + "zcl_type": "uint32", + "value": 100 + }, + { + "id": "0x0107", + "name": "child_lock", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x0404", + "name": "mode", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0202", + "name": "target_temperature", + "zcl_type": "uint32", + "value": 300 + }, + { + "id": "0x0203", + "name": "temperature", + "zcl_type": "uint32", + "value": 232 + }, + { + "id": "0x0114", + "name": "valve_detect", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0112", + "name": "window_detection", + "zcl_type": "uint8", + "value": 1 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 85 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_lrznf59v", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 23.2, + "outdoor_temperature": null, + "target_temperature": 30.0, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": "heating", + "hvac_mode": "heat", + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 7.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[4]/heat", + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": 3000, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-516-keypad_lockout", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "KeypadLockout", + "translation_key": "keypad_lockout", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 76, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 2, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "heating", + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-513-setpoint_change_source_timestamp", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SetpointChangeSourceTimestamp", + "translation_key": "setpoint_change_source_timestamp", + "translation_placeholders": null, + "device_class": "timestamp", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5a:f3:0e:01-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5a:f3:0e:01", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000055", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-n9clpsht-ts0601.json b/tests/data/devices/tze200-n9clpsht-ts0601.json new file mode 100644 index 000000000..547858ce8 --- /dev/null +++ b/tests/data/devices/tze200-n9clpsht-ts0601.json @@ -0,0 +1,222 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9e:2b:77:1f", + "nwk": "0xE3DA", + "manufacturer": "_TZE200_n9clpsht", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_n9clpsht", + "friendly_model": "TS0601", + "name": "_TZE200_n9clpsht TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Battery or Unknown", + "lqi": 184, + "rssi": -65, + "last_seen": "2026-03-29T01:03:44.039993+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_n9clpsht" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_n9clpsht", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:2b:77:1f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:2b:77:1f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 184, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:2b:77:1f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:2b:77:1f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -65, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9e:2b:77:1f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9e:2b:77:1f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-nkjintbl-ts0601-0x00000053.json b/tests/data/devices/tze200-nkjintbl-ts0601-0x00000053.json new file mode 100644 index 000000000..7036c0bd5 --- /dev/null +++ b/tests/data/devices/tze200-nkjintbl-ts0601-0x00000053.json @@ -0,0 +1,340 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:01:d2:df:68", + "nwk": "0xFD04", + "manufacturer": "_TZE200_nkjintbl", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_nkjintbl", + "friendly_model": "TS0601", + "name": "_TZE200_nkjintbl TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_switch:TuyaDoubleSwitchTO", + "exposes_features": [ + "tuya.plug_manufacturer_attributes" + ], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 204, + "rssi": -60, + "last_seen": "2025-10-01T19:52:34.726710+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_nkjintbl" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 83 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZE200_nkjintbl", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:d2:df:68-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:d2:df:68", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 0, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:d2:df:68-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:d2:df:68", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 0, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:d2:df:68-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:d2:df:68", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 204, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:d2:df:68-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:d2:df:68", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -60, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:01:d2:df:68-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:01:d2:df:68", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000053", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-ow09xlxm-ts0601-0x00000043.json b/tests/data/devices/tze200-ow09xlxm-ts0601-0x00000043.json new file mode 100644 index 000000000..2d04e93be --- /dev/null +++ b/tests/data/devices/tze200-ow09xlxm-ts0601-0x00000043.json @@ -0,0 +1,482 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:98:16:ac:d8", + "nwk": "0x6A3E", + "manufacturer": "_TZE200_ow09xlxm", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_ow09xlxm", + "friendly_model": "TS0601", + "name": "_TZE200_ow09xlxm TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_bvu2wnxz / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 90, + "rssi": null, + "last_seen": "2026-09-19T20:53:20.760035+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_ow09xlxm" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [ + { + "id": "0x0004", + "name": "abs_max_heat_setpoint_limit", + "zcl_type": "int16", + "value": 3000 + }, + { + "id": "0x0003", + "name": "abs_min_heat_setpoint_limit", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x0010", + "name": "local_temperature_calibration", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0016", + "name": "max_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0015", + "name": "min_heat_setpoint_limit", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0030", + "name": "setpoint_change_source", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0032", + "name": "setpoint_change_source_timestamp", + "zcl_type": "UTC", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 67 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_ow09xlxm", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": "Error or battery low", + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-error_or_battery_low", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "error_or_battery_low", + "translation_placeholders": null, + "device_class": "problem", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "error_or_battery_low" + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-513", + "migrate_unique_ids": [], + "platform": "climate", + "class_name": "Thermostat", + "translation_key": "thermostat", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": null, + "outdoor_temperature": null, + "target_temperature": null, + "target_temperature_high": null, + "target_temperature_low": null, + "hvac_action": null, + "hvac_mode": null, + "preset_mode": "none", + "fan_mode": "auto", + "max_temp": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": null, + "occupancy": null, + "occupied_cooling_setpoint": null, + "occupied_heating_setpoint": null, + "pi_heating_demand": null, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": "Local temperature calibration", + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-local_temperature_calibration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "local_temperature_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 6, + "native_min_value": -6, + "native_step": 1, + "native_unit_of_measurement": "\u00b0C" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 90, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-513-hvac_action", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ThermostatHVACAction", + "translation_key": "hvac_action", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + } + ], + "switch": [ + { + "fallback_name": "Child lock", + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-child_lock", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "child_lock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "child_lock", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Frost protection", + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-frost_protection", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "frost_protection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "frost_protection", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Scale protection", + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-scale_protection", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "scale_protection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "scale_protection", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:98:16:ac:d8-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:98:16:ac:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000043", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-stvgmdjz-ts0601-0x00000041.json b/tests/data/devices/tze200-stvgmdjz-ts0601-0x00000041.json new file mode 100644 index 000000000..ca2aae5d2 --- /dev/null +++ b/tests/data/devices/tze200-stvgmdjz-ts0601-0x00000041.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e3:06:a4:52", + "nwk": "0xD600", + "manufacturer": "_TZE200_stvgmdjz", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_stvgmdjz", + "friendly_model": "TS0601", + "name": "_TZE200_stvgmdjz TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 102, + "rssi": null, + "last_seen": "2026-05-19T06:20:43.572457+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 65 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_stvgmdjz" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 65 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_stvgmdjz", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e3:06:a4:52-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e3:06:a4:52", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 102, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e3:06:a4:52-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e3:06:a4:52", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e3:06:a4:52-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e3:06:a4:52", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000041", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-vrcfo4i0-ts0601.json b/tests/data/devices/tze200-vrcfo4i0-ts0601.json new file mode 100644 index 000000000..318e2032b --- /dev/null +++ b/tests/data/devices/tze200-vrcfo4i0-ts0601.json @@ -0,0 +1,293 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:46:7c:84:f7", + "nwk": "0x8E19", + "manufacturer": "_TZE200_vrcfo4i0", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_vrcfo4i0", + "friendly_model": "TS0601", + "name": "_TZE200_vrcfo4i0 TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 232, + "rssi": -42, + "last_seen": "2026-05-05T21:27:06.584719+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_vrcfo4i0" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 30 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "_TZE200_vrcfo4i0", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0500", + "0xef00", + "0x0001" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:7c:84:f7-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:7c:84:f7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:7c:84:f7-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:7c:84:f7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:7c:84:f7-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:7c:84:f7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 232, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:7c:84:f7-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:46:7c:84:f7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -42, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:46:7c:84:f7-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:46:7c:84:f7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 3.0 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-w0ap83qu-zg-204zx.json b/tests/data/devices/tze200-w0ap83qu-zg-204zx.json new file mode 100644 index 000000000..050b1dbdf --- /dev/null +++ b/tests/data/devices/tze200-w0ap83qu-zg-204zx.json @@ -0,0 +1,528 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:58:f3:2c:14", + "nwk": "0x9F19", + "manufacturer": "_TZE200_w0ap83qu", + "model": "ZG-204ZX", + "friendly_manufacturer": "_TZE200_w0ap83qu", + "friendly_model": "ZG-204ZX", + "name": "_TZE200_w0ap83qu ZG-204ZX", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Battery or Unknown", + "lqi": 69, + "rssi": null, + "last_seen": "2026-09-11T10:38:15.754086+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_w0ap83qu" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "ZG-204ZX" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 180 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 29 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 34613 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2520 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 5320 + } + ] + }, + { + "cluster_id": "0x0406", + "endpoint_attribute": "occupancy", + "attributes": [ + { + "id": "0x0000", + "name": "occupancy", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0010", + "name": "pir_o_to_u_delay", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0011", + "name": "pir_u_to_o_delay", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": [ + 50, + 79, + 50, + 2, + 0, + 141, + 21, + 0 + ] + }, + { + "id": "0x0000", + "name": "zone_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 13 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_w0ap83qu", + "model": "ZG-204ZX", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4742, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0500", + "0x0406", + "0xef00", + "0x0402", + "0x0405", + "0x0001", + "0x0400" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1030", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Occupancy", + "translation_key": null, + "translation_placeholders": null, + "device_class": "occupancy", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "motion", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1030-pir_o_to_u_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIROccupiedToUnoccupiedDelayConfigurationEntity", + "translation_key": "pir_o_to_u_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1030-pir_u_to_o_delay", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "PIRUnoccupiedToOccupiedDelayConfigurationEntity", + "translation_key": "pir_u_to_o_delay", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "mode": "auto", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1.0, + "native_unit_of_measurement": "s" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 69, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 90.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 2.9 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1024", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Illuminance", + "translation_key": null, + "translation_placeholders": null, + "device_class": "illuminance", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 2892, + "suggested_display_precision": null, + "unit": "lx" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 25.2, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:58:f3:2c:14-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:58:f3:2c:14", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 53.2, + "suggested_display_precision": null, + "unit": "%" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze200-yrugsphv-ts0601-0x00000046.json b/tests/data/devices/tze200-yrugsphv-ts0601-0x00000046.json new file mode 100644 index 000000000..9258022d1 --- /dev/null +++ b/tests/data/devices/tze200-yrugsphv-ts0601-0x00000046.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8a:78:5e:1f", + "nwk": "0xB0E5", + "manufacturer": "_TZE200_yrugsphv", + "model": "TS0601", + "friendly_manufacturer": "_TZE200_yrugsphv", + "friendly_model": "TS0601", + "name": "_TZE200_yrugsphv TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "2026-07-06T15:33:06.088095+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE200_yrugsphv" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 70 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE200_yrugsphv", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8a:78:5e:1f-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8a:78:5e:1f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8a:78:5e:1f-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8a:78:5e:1f", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8a:78:5e:1f-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8a:78:5e:1f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000046", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-5toc8efa-ts0601-0x0000004a.json b/tests/data/devices/tze204-5toc8efa-ts0601-0x0000004a.json new file mode 100644 index 000000000..599fed460 --- /dev/null +++ b/tests/data/devices/tze204-5toc8efa-ts0601-0x0000004a.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:88:70:df:86", + "nwk": "0x2A3C", + "manufacturer": "_TZE204_5toc8efa", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_5toc8efa", + "friendly_model": "TS0601", + "name": "_TZE204_5toc8efa TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 122, + "rssi": null, + "last_seen": "2026-06-09T18:16:37.716098+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_5toc8efa" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_5toc8efa", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:70:df:86-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:70:df:86", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 122, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:70:df:86-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:70:df:86", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:88:70:df:86-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:88:70:df:86", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-8fffc3kb-ts0601-0x0000004a.json b/tests/data/devices/tze204-8fffc3kb-ts0601-0x0000004a.json new file mode 100644 index 000000000..6693b6a70 --- /dev/null +++ b/tests/data/devices/tze204-8fffc3kb-ts0601-0x0000004a.json @@ -0,0 +1,263 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:80:3e:3c:d8", + "nwk": "0xDA7F", + "manufacturer": "_TZE204_8fffc3kb", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_8fffc3kb", + "friendly_model": "TS0601", + "name": "_TZE204_8fffc3kb TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 145, + "rssi": null, + "last_seen": "2026-04-03T22:28:01.328121+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_8fffc3kb" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_8fffc3kb", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:80:3e:3c:d8-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:80:3e:3c:d8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 145, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:80:3e:3c:d8-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:80:3e:3c:d8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:80:3e:3c:d8-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:80:3e:3c:d8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-ca3i8m8p-ts0601-0x00000045.json b/tests/data/devices/tze204-ca3i8m8p-ts0601-0x00000045.json new file mode 100644 index 000000000..d2c3022e9 --- /dev/null +++ b/tests/data/devices/tze204-ca3i8m8p-ts0601-0x00000045.json @@ -0,0 +1,258 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:19:aa:01:30", + "nwk": "0xFDB2", + "manufacturer": "_TZE204_ca3i8m8p", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_ca3i8m8p", + "friendly_model": "TS0601", + "name": "_TZE204_ca3i8m8p TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 92, + "rssi": -88, + "last_seen": "2026-05-04T19:20:27.285410+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 69 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_ca3i8m8p" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 69 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_ca3i8m8p", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a", + "0x0003", + "0x0006" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:19:aa:01:30-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:19:aa:01:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:19:aa:01:30-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:19:aa:01:30", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 92, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:19:aa:01:30-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:19:aa:01:30", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -88, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:19:aa:01:30-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:19:aa:01:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000045", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-glk6viwg-ts0601-0x00000045.json b/tests/data/devices/tze204-glk6viwg-ts0601-0x00000045.json new file mode 100644 index 000000000..e163e2048 --- /dev/null +++ b/tests/data/devices/tze204-glk6viwg-ts0601-0x00000045.json @@ -0,0 +1,258 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:20:e5:4c:f7", + "nwk": "0x612F", + "manufacturer": "_TZE204_glk6viwg", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_glk6viwg", + "friendly_model": "TS0601", + "name": "_TZE204_glk6viwg TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 96, + "rssi": -87, + "last_seen": "2026-05-04T19:20:38.507502+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 69 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_glk6viwg" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 69 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_glk6viwg", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a", + "0x0003", + "0x0006" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:20:e5:4c:f7-1-6", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "Opening", + "translation_key": null, + "translation_placeholders": null, + "device_class": "opening", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:20:e5:4c:f7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:20:e5:4c:f7-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:20:e5:4c:f7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 96, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:20:e5:4c:f7-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:20:e5:4c:f7", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -87, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:20:e5:4c:f7-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:20:e5:4c:f7", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000045", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-iuk8kupi-ts0601-0x0000004a.json b/tests/data/devices/tze204-iuk8kupi-ts0601-0x0000004a.json new file mode 100644 index 000000000..e3b7bb9fd --- /dev/null +++ b/tests/data/devices/tze204-iuk8kupi-ts0601-0x0000004a.json @@ -0,0 +1,263 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ed:25:3e:df", + "nwk": "0x7987", + "manufacturer": "_TZE204_iuk8kupi", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_iuk8kupi", + "friendly_model": "TS0601", + "name": "_TZE204_iuk8kupi TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 123, + "rssi": null, + "last_seen": "2026-02-05T05:31:15.211332+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_iuk8kupi" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_iuk8kupi", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ed:25:3e:df-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ed:25:3e:df", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 123, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ed:25:3e:df-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ed:25:3e:df", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ed:25:3e:df-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ed:25:3e:df", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-kwi6bbk4-ts0601-0x0000004a.json b/tests/data/devices/tze204-kwi6bbk4-ts0601-0x0000004a.json new file mode 100644 index 000000000..4d71f1bef --- /dev/null +++ b/tests/data/devices/tze204-kwi6bbk4-ts0601-0x0000004a.json @@ -0,0 +1,411 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:38:35:bd:8a", + "nwk": "0x26B4", + "manufacturer": "_TZE204_kwi6bbk4", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_kwi6bbk4", + "friendly_model": "TS0601", + "name": "_TZE204_kwi6bbk4 TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_upagmta9 / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-02-24T11:09:32.595496+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_kwi6bbk4" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 990 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 6900 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0xef09", + "name": "display_unit", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0xef00", + "name": "mcu_version", + "zcl_type": "uint48", + "value": "1.0.0" + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_kwi6bbk4", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "select": [ + { + "fallback_name": "Display unit", + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-display_unit", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "display_unit", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Celsius", + "enum": "TuyaTempUnitConvert", + "options": [ + "Celsius", + "Fahrenheit" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 9.9, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-1029", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Humidity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "humidity", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 69.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:38:35:bd:8a-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:38:35:bd:8a", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-mhxn2jso-ts0601-0x0000004a.json b/tests/data/devices/tze204-mhxn2jso-ts0601-0x0000004a.json new file mode 100644 index 000000000..fe0481fb7 --- /dev/null +++ b/tests/data/devices/tze204-mhxn2jso-ts0601-0x0000004a.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:75:7d:b4:de", + "nwk": "0xAA39", + "manufacturer": "_TZE204_mhxn2jso", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_mhxn2jso", + "friendly_model": "TS0601", + "name": "_TZE204_mhxn2jso TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 116, + "rssi": -82, + "last_seen": "2026-04-30T01:07:25.305224+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_mhxn2jso" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_mhxn2jso", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:7d:b4:de-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:7d:b4:de", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 116, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:7d:b4:de-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:7d:b4:de", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -82, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:7d:b4:de-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:75:7d:b4:de", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-qbhze54q-ts0601-0x0000004a.json b/tests/data/devices/tze204-qbhze54q-ts0601-0x0000004a.json new file mode 100644 index 000000000..6094b6799 --- /dev/null +++ b/tests/data/devices/tze204-qbhze54q-ts0601-0x0000004a.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4d:03:89:aa", + "nwk": "0x9962", + "manufacturer": "_TZE204_qbhze54q", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_qbhze54q", + "friendly_model": "TS0601", + "name": "_TZE204_qbhze54q TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 88, + "rssi": -78, + "last_seen": "2026-06-13T03:04:13.599866+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_qbhze54q" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_qbhze54q", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:03:89:aa-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:03:89:aa", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 88, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:03:89:aa-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:03:89:aa", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -78, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4d:03:89:aa-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4d:03:89:aa", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-xtrnjaoz-ts0601-0x0000004a.json b/tests/data/devices/tze204-xtrnjaoz-ts0601-0x0000004a.json new file mode 100644 index 000000000..e98c78da1 --- /dev/null +++ b/tests/data/devices/tze204-xtrnjaoz-ts0601-0x0000004a.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3c:f5:99:17", + "nwk": "0x6F4E", + "manufacturer": "_TZE204_xtrnjaoz", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_xtrnjaoz", + "friendly_model": "TS0601", + "name": "_TZE204_xtrnjaoz TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 156, + "rssi": -61, + "last_seen": "2026-07-06T17:09:26.499900+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_xtrnjaoz" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_xtrnjaoz", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3c:f5:99:17-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3c:f5:99:17", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 156, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3c:f5:99:17-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3c:f5:99:17", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -61, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3c:f5:99:17-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:3c:f5:99:17", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze204-znvwzxkq-ts0601.json b/tests/data/devices/tze204-znvwzxkq-ts0601.json new file mode 100644 index 000000000..9400396fd --- /dev/null +++ b/tests/data/devices/tze204-znvwzxkq-ts0601.json @@ -0,0 +1,222 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:72:44:da:16", + "nwk": "0x1234", + "manufacturer": "_TZE204_znvwzxkq", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_znvwzxkq", + "friendly_model": "TS0601", + "name": "_TZE204_znvwzxkq TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 172, + "rssi": -68, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 70 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE204_znvwzxkq" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "unsupported": true + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_znvwzxkq", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:44:da:16-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:72:44:da:16", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 172, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:44:da:16-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:72:44:da:16", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:44:da:16-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:72:44:da:16", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": null, + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-0ints6wl-ts0601-0x00000050.json b/tests/data/devices/tze284-0ints6wl-ts0601-0x00000050.json new file mode 100644 index 000000000..5bd0512d1 --- /dev/null +++ b/tests/data/devices/tze284-0ints6wl-ts0601-0x00000050.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:14:7a:7e:03", + "nwk": "0xBCB2", + "manufacturer": "_TZE284_0ints6wl", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_0ints6wl", + "friendly_model": "TS0601", + "name": "_TZE284_0ints6wl TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 100, + "rssi": -75, + "last_seen": "2026-07-13T20:31:13.126059+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_0ints6wl" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_0ints6wl", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:7a:7e:03-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:7a:7e:03", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 100, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:7a:7e:03-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:7a:7e:03", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -75, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:7a:7e:03-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:7a:7e:03", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-1di7ujzp-ts0601-0x00000050.json b/tests/data/devices/tze284-1di7ujzp-ts0601-0x00000050.json new file mode 100644 index 000000000..ef3b3e67e --- /dev/null +++ b/tests/data/devices/tze284-1di7ujzp-ts0601-0x00000050.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:62:75:55:7c", + "nwk": "0x053D", + "manufacturer": "_TZE284_1di7ujzp", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_1di7ujzp", + "friendly_model": "TS0601", + "name": "_TZE284_1di7ujzp TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 144, + "rssi": -64, + "last_seen": "2026-03-22T14:39:19.396353+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_1di7ujzp" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_1di7ujzp", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:75:55:7c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:75:55:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 144, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:75:55:7c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:75:55:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -64, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:62:75:55:7c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:62:75:55:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-1youk3hj-ts0601-0x0000004e.json b/tests/data/devices/tze284-1youk3hj-ts0601-0x0000004e.json new file mode 100644 index 000000000..3a7633039 --- /dev/null +++ b/tests/data/devices/tze284-1youk3hj-ts0601-0x0000004e.json @@ -0,0 +1,251 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d4:4d:05:35", + "nwk": "0x5F46", + "manufacturer": "_TZE284_1youk3hj", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_1youk3hj", + "friendly_model": "TS0601", + "name": "_TZE284_1youk3hj TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 132, + "rssi": -78, + "last_seen": "2026-03-03T22:54:34.618056+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_1youk3hj" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_1youk3hj", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:4d:05:35-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:4d:05:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 132, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:4d:05:35-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:4d:05:35", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -78, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:4d:05:35-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:4d:05:35", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-2fnssffc-ts0601-0x0000004e.json b/tests/data/devices/tze284-2fnssffc-ts0601-0x0000004e.json new file mode 100644 index 000000000..0381b13ba --- /dev/null +++ b/tests/data/devices/tze284-2fnssffc-ts0601-0x0000004e.json @@ -0,0 +1,269 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:32:ca:a1:54", + "nwk": "0x66A5", + "manufacturer": "_TZE284_2fnssffc", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_2fnssffc", + "friendly_model": "TS0601", + "name": "_TZE284_2fnssffc TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 172, + "rssi": -68, + "last_seen": "2026-09-27T16:49:57.413964+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_2fnssffc" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_2fnssffc", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:ca:a1:54-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:32:ca:a1:54", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 172, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:ca:a1:54-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:32:ca:a1:54", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:ca:a1:54-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:32:ca:a1:54", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-5m4nchbm-ts0601-0x0000004a.json b/tests/data/devices/tze284-5m4nchbm-ts0601-0x0000004a.json new file mode 100644 index 000000000..ba3b0bb2e --- /dev/null +++ b/tests/data/devices/tze284-5m4nchbm-ts0601-0x0000004a.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:8c:37:e7:23", + "nwk": "0x552D", + "manufacturer": "_TZE284_5m4nchbm", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_5m4nchbm", + "friendly_model": "TS0601", + "name": "_TZE284_5m4nchbm TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 116, + "rssi": -71, + "last_seen": "2026-03-18T21:13:24.016976+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_5m4nchbm" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_5m4nchbm", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:37:e7:23-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:37:e7:23", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 116, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:37:e7:23-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:37:e7:23", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -71, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:8c:37:e7:23-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:8c:37:e7:23", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-aoah6bv8-ts0601-0x00000050.json b/tests/data/devices/tze284-aoah6bv8-ts0601-0x00000050.json new file mode 100644 index 000000000..57f090068 --- /dev/null +++ b/tests/data/devices/tze284-aoah6bv8-ts0601-0x00000050.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:83:14:32:eb", + "nwk": "0x1234", + "manufacturer": "_TZE284_aoah6bv8", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_aoah6bv8", + "friendly_model": "TS0601", + "name": "_TZE284_aoah6bv8 TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_aoah6bv8" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_aoah6bv8", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:83:14:32:eb-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:83:14:32:eb", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:83:14:32:eb-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:83:14:32:eb", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:83:14:32:eb-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:83:14:32:eb", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-chbyv06x-ts0601-0x0000004e.json b/tests/data/devices/tze284-chbyv06x-ts0601-0x0000004e.json new file mode 100644 index 000000000..b9829f554 --- /dev/null +++ b/tests/data/devices/tze284-chbyv06x-ts0601-0x0000004e.json @@ -0,0 +1,520 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a7:d0:58:f5", + "nwk": "0x2A1A", + "manufacturer": "_TZE284_chbyv06x", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_chbyv06x", + "friendly_model": "TS0601", + "name": "_TZE284_chbyv06x TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_yojqa8xn / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 168, + "rssi": -58, + "last_seen": "2026-08-18T15:59:04.352983+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_chbyv06x" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 549 + } + ] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0xef07", + "name": "alarm_duration", + "zcl_type": "uint16", + "value": 180 + }, + { + "id": "0xef06", + "name": "alarm_ringtone", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0xef02", + "name": "lower_explosive_limit", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0xef00", + "name": "mcu_version", + "zcl_type": "uint48", + "value": "1.0.2" + }, + { + "id": "0xef0a", + "name": "preheat_active", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0xef09", + "name": "self_test", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0xef08", + "name": "self_test_switch", + "zcl_type": "bool", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_chbyv06x", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": "ias_zone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": "Preheat active", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-preheat_active", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "preheat_active", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "preheat_active" + }, + { + "fallback_name": "Silence alarm", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-silence_alarm", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "BinarySensor", + "translation_key": "silence_alarm", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "silence_alarm" + } + ], + "number": [ + { + "fallback_name": "Alarm duration", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-alarm_duration", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "alarm_duration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 180, + "mode": "auto", + "native_max_value": 180, + "native_min_value": 1, + "native_step": 1, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": "Alarm ringtone", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-alarm_ringtone", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "alarm_ringtone", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Ringtone 01", + "enum": "TuyaSirenRingtone", + "options": [ + "Ringtone 01", + "Ringtone 02", + "Ringtone 03", + "Ringtone 04", + "Ringtone 05" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 168, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -58, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": "% Lower explosive limit", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-lower_explosive_limit", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "lower_explosive_limit", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "%LEL" + }, + { + "fallback_name": "Self test result", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-self_test", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "self_test", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Success", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Checking", + "Success", + "Failure", + "Others" + ] + } + ], + "switch": [ + { + "fallback_name": "Self test", + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-self_test_switch", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "self_test_switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "self_test_switch", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a7:d0:58:f5-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:a7:d0:58:f5", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-fzo2pocs-ts0601-0x00000044.json b/tests/data/devices/tze284-fzo2pocs-ts0601-0x00000044.json new file mode 100644 index 000000000..94269723c --- /dev/null +++ b/tests/data/devices/tze284-fzo2pocs-ts0601-0x00000044.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d4:9c:af:cd", + "nwk": "0x31A3", + "manufacturer": "_TZE284_fzo2pocs", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_fzo2pocs", + "friendly_model": "TS0601", + "name": "_TZE284_fzo2pocs TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 255, + "rssi": -55, + "last_seen": "2026-05-26T22:01:16.651503+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 68 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_fzo2pocs" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 68 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_fzo2pocs", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:9c:af:cd-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:9c:af:cd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:9c:af:cd-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:9c:af:cd", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -55, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d4:9c:af:cd-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d4:9c:af:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000044", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-gnpflcoq-ts0601-0x00000050.json b/tests/data/devices/tze284-gnpflcoq-ts0601-0x00000050.json new file mode 100644 index 000000000..f0b98d8fb --- /dev/null +++ b/tests/data/devices/tze284-gnpflcoq-ts0601-0x00000050.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e7:83:9b:c4", + "nwk": "0x6872", + "manufacturer": "_TZE284_gnpflcoq", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_gnpflcoq", + "friendly_model": "TS0601", + "name": "_TZE284_gnpflcoq TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 140, + "rssi": -65, + "last_seen": "2026-06-01T19:53:11.805911+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_gnpflcoq" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_gnpflcoq", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:83:9b:c4-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:83:9b:c4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 140, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:83:9b:c4-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:83:9b:c4", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -65, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e7:83:9b:c4-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:e7:83:9b:c4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-gt5al3bl-ts0601-0x0000004e.json b/tests/data/devices/tze284-gt5al3bl-ts0601-0x0000004e.json new file mode 100644 index 000000000..facde2797 --- /dev/null +++ b/tests/data/devices/tze284-gt5al3bl-ts0601-0x0000004e.json @@ -0,0 +1,251 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d9:e8:02:46", + "nwk": "0x9E52", + "manufacturer": "_TZE284_gt5al3bl", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_gt5al3bl", + "friendly_model": "TS0601", + "name": "_TZE284_gt5al3bl TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 108, + "rssi": null, + "last_seen": "2026-06-17T22:24:09.636339+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_gt5al3bl" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_gt5al3bl", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d9:e8:02:46-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d9:e8:02:46", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 108, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d9:e8:02:46-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d9:e8:02:46", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d9:e8:02:46-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d9:e8:02:46", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-hdyjyqjm-ts0601-0x0000004d.json b/tests/data/devices/tze284-hdyjyqjm-ts0601-0x0000004d.json new file mode 100644 index 000000000..9e48b47a7 --- /dev/null +++ b/tests/data/devices/tze284-hdyjyqjm-ts0601-0x0000004d.json @@ -0,0 +1,246 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:60:ee:45:76", + "nwk": "0xD476", + "manufacturer": "_TZE284_hdyjyqjm", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_hdyjyqjm", + "friendly_model": "TS0601", + "name": "_TZE284_hdyjyqjm TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 77 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_hdyjyqjm" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x0007", + "name": "power_source", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 77 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_hdyjyqjm", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:60:ee:45:76-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:60:ee:45:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:60:ee:45:76-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:60:ee:45:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:60:ee:45:76-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:60:ee:45:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004d", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-m1cvyneb-ts0601-0x0000004e.json b/tests/data/devices/tze284-m1cvyneb-ts0601-0x0000004e.json new file mode 100644 index 000000000..d598b11b4 --- /dev/null +++ b/tests/data/devices/tze284-m1cvyneb-ts0601-0x0000004e.json @@ -0,0 +1,311 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:9f:aa:b2:6e", + "nwk": "0x5E5B", + "manufacturer": "_TZE284_m1cvyneb", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_m1cvyneb", + "friendly_model": "TS0601", + "name": "_TZE284_m1cvyneb TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts0601_dimmer:TuyaSingleSwitchDimmerGPWithED00", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 148, + "rssi": -74, + "last_seen": "2026-04-20T20:43:33.545552+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [ + { + "id": "0x0000", + "name": "current_level", + "zcl_type": "uint8", + "value": 254 + } + ] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0xef00", + "name": "mcu_version", + "zcl_type": "uint48", + "value": "1.0.0" + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_m1cvyneb", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:aa:b2:6e-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:aa:b2:6e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": 254, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 32, + "color_mode": "brightness", + "supported_color_modes": [ + "brightness", + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:aa:b2:6e-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:aa:b2:6e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 148, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:aa:b2:6e-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:aa:b2:6e", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:9f:aa:b2:6e-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:9f:aa:b2:6e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-pglpvdar-ts0601-0x0000004a.json b/tests/data/devices/tze284-pglpvdar-ts0601-0x0000004a.json new file mode 100644 index 000000000..b020e5973 --- /dev/null +++ b/tests/data/devices/tze284-pglpvdar-ts0601-0x0000004a.json @@ -0,0 +1,265 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:c6:5a:50:a1", + "nwk": "0x7E96", + "manufacturer": "_TZE284_pglpvdar", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_pglpvdar", + "friendly_model": "TS0601", + "name": "_TZE284_pglpvdar TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 172, + "rssi": -57, + "last_seen": "2026-03-03T19:42:24.231898+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "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": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 74 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_pglpvdar" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + }, + { + "id": "0x000a", + "name": "product_code", + "zcl_type": "octstr", + "unsupported": true + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "stack_version", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "unsupported": true + }, + { + "id": "0x0000", + "name": "zcl_version", + "zcl_type": "uint8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0x0007", + "name": "local_time", + "zcl_type": "uint32", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 74 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_pglpvdar", + "model": "TS0601", + "node_desc": { + "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": "0x0051", + "input_clusters": [ + "0x0000", + "0x0004", + "0x0005", + "0xef00", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c6:5a:50:a1-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c6:5a:50:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 172, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c6:5a:50:a1-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c6:5a:50:a1", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -57, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:c6:5a:50:a1-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:c6:5a:50:a1", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004a", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-rccxox8p-ts0601-0x0000004d.json b/tests/data/devices/tze284-rccxox8p-ts0601-0x0000004d.json new file mode 100644 index 000000000..b0e068d41 --- /dev/null +++ b/tests/data/devices/tze284-rccxox8p-ts0601-0x0000004d.json @@ -0,0 +1,277 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:be:14:63:46", + "nwk": "0x5BA7", + "manufacturer": "_TZE284_rccxox8p", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_rccxox8p", + "friendly_model": "TS0601", + "name": "_TZE284_rccxox8p TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_aycxwiau / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -32, + "last_seen": "2026-09-22T18:06:11.614756+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 77 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_rccxox8p" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "value": 0 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0xef00", + "name": "mcu_version", + "zcl_type": "uint48", + "value": "1.0.0" + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 77 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_rccxox8p", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:14:63:46-1-1280", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "IASZone", + "translation_key": null, + "translation_placeholders": null, + "device_class": "smoke", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:14:63:46", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:14:63:46-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:14:63:46", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:14:63:46-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:14:63:46", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -32, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:be:14:63:46-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:be:14:63:46", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004d", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-rzdkn5rx-ts0601-0x0000004e.json b/tests/data/devices/tze284-rzdkn5rx-ts0601-0x0000004e.json new file mode 100644 index 000000000..3180753e3 --- /dev/null +++ b/tests/data/devices/tze284-rzdkn5rx-ts0601-0x0000004e.json @@ -0,0 +1,251 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:fe:78:a0:8b", + "nwk": "0x1234", + "manufacturer": "_TZE284_rzdkn5rx", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_rzdkn5rx", + "friendly_model": "TS0601", + "name": "_TZE284_rzdkn5rx TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 188, + "rssi": -64, + "last_seen": "1970-01-01T00:00:00+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 78 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_rzdkn5rx" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 78 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_rzdkn5rx", + "model": "TS0601", + "node_desc": { + "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": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fe:78:a0:8b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fe:78:a0:8b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 188, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fe:78:a0:8b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fe:78:a0:8b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -64, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:fe:78:a0:8b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:fe:78:a0:8b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000004e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze284-sdvbnmj5-ts0601-0x00000050.json b/tests/data/devices/tze284-sdvbnmj5-ts0601-0x00000050.json new file mode 100644 index 000000000..ed4855c3c --- /dev/null +++ b/tests/data/devices/tze284-sdvbnmj5-ts0601-0x00000050.json @@ -0,0 +1,228 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d8:66:b4:1b", + "nwk": "0x150A", + "manufacturer": "_TZE284_sdvbnmj5", + "model": "TS0601", + "friendly_manufacturer": "_TZE284_sdvbnmj5", + "friendly_model": "TS0601", + "name": "_TZE284_sdvbnmj5 TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 177, + "rssi": null, + "last_seen": "2026-06-04T17:25:12.569540+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 80 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE284_sdvbnmj5" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 80 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE284_sdvbnmj5", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 66, + "maximum_incoming_transfer_size": 66, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 66, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0004", + "0x0005", + "0xef00", + "0x0000", + "0xed00" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:66:b4:1b-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:66:b4:1b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 177, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:66:b4:1b-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:66:b4:1b", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d8:66:b4:1b-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d8:66:b4:1b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000050", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze2841000000-3mzb0sdz-ts0601-0x0000006b.json b/tests/data/devices/tze2841000000-3mzb0sdz-ts0601-0x0000006b.json index 16fad8ac0..afd0a1e62 100644 --- a/tests/data/devices/tze2841000000-3mzb0sdz-ts0601-0x0000006b.json +++ b/tests/data/devices/tze2841000000-3mzb0sdz-ts0601-0x0000006b.json @@ -73,13 +73,19 @@ "id": "0x0033", "name": "battery_quantity", "zcl_type": "uint8", - "unsupported": true + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 }, { "id": "0x0031", "name": "battery_size", "zcl_type": "enum8", - "unsupported": true + "value": 3 }, { "id": "0x0020", @@ -281,8 +287,8 @@ "native_value": 100.0, "suggested_display_precision": 0, "unit": "%", - "battery_size": null, - "battery_quantity": null, + "battery_size": "AA", + "battery_quantity": 2, "battery_voltage": 0.0 } ], diff --git a/tests/data/devices/tze2841000000-3yp57tby-ts0601-0x0000006b.json b/tests/data/devices/tze2841000000-3yp57tby-ts0601-0x0000006b.json new file mode 100644 index 000000000..01c65be26 --- /dev/null +++ b/tests/data/devices/tze2841000000-3yp57tby-ts0601-0x0000006b.json @@ -0,0 +1,328 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:b1:b9:58:e8", + "nwk": "0x4607", + "manufacturer": "_TZE2841000000_3yp57tby", + "model": "TS0601", + "friendly_manufacturer": "_TZE2841000000_3yp57tby", + "friendly_model": "TS0601", + "name": "_TZE2841000000_3yp57tby TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": null, + "last_seen": "2026-10-08T13:26:19.025046+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE2841000000_3yp57tby" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 200 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 107 + } + ], + "last_query_cmd": { + "manufacturer_code": 4417, + "image_type": 54179, + "current_file_version": 107, + "hardware_version": null + } + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE2841000000_3yp57tby", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xe000", + "0xed00", + "0x0001", + "0x0004", + "0x0005", + "0x0003", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b1:b9:58:e8-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b1:b9:58:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b1:b9:58:e8-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b1:b9:58:e8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b1:b9:58:e8-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b1:b9:58:e8", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b1:b9:58:e8-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:b1:b9:58:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": 0.0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:b1:b9:58:e8-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:b1:b9:58:e8", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000006b", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze2841000000-8se38w3c-ts0601-0x0000006b.json b/tests/data/devices/tze2841000000-8se38w3c-ts0601-0x0000006b.json new file mode 100644 index 000000000..47994ef23 --- /dev/null +++ b/tests/data/devices/tze2841000000-8se38w3c-ts0601-0x0000006b.json @@ -0,0 +1,322 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ff:23:74:7c", + "nwk": "0x155E", + "manufacturer": "_TZE2841000000_8se38w3c", + "model": "TS0601", + "friendly_manufacturer": "_TZE2841000000_8se38w3c", + "friendly_model": "TS0601", + "name": "_TZE2841000000_8se38w3c TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 180, + "rssi": -55, + "last_seen": "2026-09-23T09:29:26.500164+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE2841000000_8se38w3c" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 100 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 4 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 107 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE2841000000_8se38w3c", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xe000", + "0xed00", + "0x0001", + "0x0004", + "0x0005", + "0x0003", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ff:23:74:7c-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ff:23:74:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ff:23:74:7c-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ff:23:74:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 180, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ff:23:74:7c-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ff:23:74:7c", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -55, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ff:23:74:7c-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ff:23:74:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AAA", + "battery_quantity": 2, + "battery_voltage": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ff:23:74:7c-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ff:23:74:7c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000006b", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze2841000000-nhgdf6qr-ts0601-0x00000069.json b/tests/data/devices/tze2841000000-nhgdf6qr-ts0601-0x00000069.json new file mode 100644 index 000000000..f16f1cd90 --- /dev/null +++ b/tests/data/devices/tze2841000000-nhgdf6qr-ts0601-0x00000069.json @@ -0,0 +1,372 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:bc:41:0f:27", + "nwk": "0x1226", + "manufacturer": "_TZE2841000000_nhgdf6qr", + "model": "TS0601", + "friendly_manufacturer": "_TZE2841000000_nhgdf6qr", + "friendly_model": "TS0601", + "name": "_TZE2841000000_nhgdf6qr TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE284_aao3yzhs / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 92, + "rssi": -88, + "last_seen": "2026-07-02T17:06:46.422519+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE2841000000_nhgdf6qr" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [] + }, + { + "cluster_id": "0x0408", + "endpoint_attribute": "soil_moisture", + "attributes": [] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 105 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE2841000000_nhgdf6qr", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xe000", + "0xed00", + "0x0001", + "0x0004", + "0x0005", + "0x0003", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 92, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -88, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 2, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-1032", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SoilMoisture", + "translation_key": "soil_moisture", + "translation_placeholders": null, + "device_class": "moisture", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:bc:41:0f:27-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:bc:41:0f:27", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000069", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/tze2841000000-tgrzpqf4-ts0601-0x00000069.json b/tests/data/devices/tze2841000000-tgrzpqf4-ts0601-0x00000069.json new file mode 100644 index 000000000..e206d697c --- /dev/null +++ b/tests/data/devices/tze2841000000-tgrzpqf4-ts0601-0x00000069.json @@ -0,0 +1,392 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:07:a8:fd:c3", + "nwk": "0x0E2D", + "manufacturer": "_TZE2841000000_tgrzpqf4", + "model": "TS0601", + "friendly_manufacturer": "_TZE2841000000_tgrzpqf4", + "friendly_model": "TS0601", + "name": "_TZE2841000000_tgrzpqf4 TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE284_aao3yzhs / TS0601)", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Battery or Unknown", + "lqi": 72, + "rssi": -82, + "last_seen": "2026-07-02T18:24:27.787889+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "SMART_PLUG", + "id": 81 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE2841000000_tgrzpqf4" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0601" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 188 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 2 + }, + { + "id": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 15 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2570 + } + ] + }, + { + "cluster_id": "0x0408", + "endpoint_attribute": "soil_moisture", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 10000 + } + ] + }, + { + "cluster_id": "0xe000", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xed00", + "endpoint_attribute": null, + "attributes": [] + }, + { + "cluster_id": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 105 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE2841000000_tgrzpqf4", + "model": "TS0601", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4417, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 80, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 80, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0051", + "input_clusters": [ + "0x0000", + "0xe000", + "0xed00", + "0x0001", + "0x0004", + "0x0005", + "0x0003", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 72, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -82, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 94.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 2, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 25.7, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-1032", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SoilMoisture", + "translation_key": "soil_moisture", + "translation_placeholders": null, + "device_class": "moisture", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": null, + "unit": "%" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:07:a8:fd:c3-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:07:a8:fd:c3", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000069", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ubisys-j1-5502.json b/tests/data/devices/ubisys-j1-5502.json new file mode 100644 index 000000000..4782e2d0d --- /dev/null +++ b/tests/data/devices/ubisys-j1-5502.json @@ -0,0 +1,898 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "nwk": "0x31A9", + "manufacturer": "ubisys", + "model": "J1 (5502)", + "friendly_manufacturer": "ubisys", + "friendly_model": "J1 (5502)", + "name": "ubisys J1 (5502)", + "quirk_applied": true, + "quirk_class": "zhaquirks.ubisys.cover_j1:(ubisys / J1 (5502))", + "exposes_features": [ + "se_poll_summation" + ], + "manufacturer_code": 4660, + "power_source": "Mains", + "lqi": null, + "rssi": null, + "last_seen": "2026-03-04T18:21:39.038488+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "WINDOW_COVERING_DEVICE", + "id": 514 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "ubisys" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "J1 (5502)" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [ + { + "id": "0x0007", + "name": "config_status", + "zcl_type": "map8", + "value": 3 + }, + { + "id": "0x0008", + "name": "current_position_lift_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0009", + "name": "current_position_tilt_percentage", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "installed_closed_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0013", + "name": "installed_closed_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0010", + "name": "installed_open_limit_lift", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0012", + "name": "installed_open_limit_tilt", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0017", + "name": "window_covering_mode", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0000", + "name": "window_covering_type", + "zcl_type": "enum8", + "value": 5 + } + ] + }, + { + "cluster_id": "0xfbfe", + "endpoint_attribute": "ubisys_j1_calibration", + "attributes": [ + { + "id": "0x0004", + "name": "calibration_state", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "enter_calibration_mode", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0003", + "name": "exit_calibration_mode", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0000", + "name": "prepare_calibration", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0001", + "name": "run_calibration", + "zcl_type": "bool", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfbff", + "endpoint_attribute": "ubisys_input_config", + "attributes": [ + { + "id": "0x0001", + "name": "detached", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0000", + "name": "input_mode", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "ubisys", + "model": "J1 (5502)", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 140, + "manufacturer_code": 4660, + "maximum_buffer_size": 108, + "maximum_incoming_transfer_size": 1613, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 1613, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0202", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0102" + ], + "output_clusters": [ + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": "Enter calibration mode", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-enter_calibration_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "enter_calibration_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "enter_calibration_mode", + "attribute_value": true + }, + { + "fallback_name": "Exit calibration mode", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-exit_calibration_mode", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "exit_calibration_mode", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "exit_calibration_mode", + "attribute_value": true + }, + { + "fallback_name": "Prepare manual calibration", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-prepare_calibration", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "prepare_manual_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "prepare_calibration", + "attribute_value": true + }, + { + "fallback_name": "Run auto-calibration", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-run_calibration", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "WriteAttributeButton", + "translation_key": "run_auto_calibration", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "run_calibration", + "attribute_value": true + } + ], + "cover": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-258", + "migrate_unique_ids": [], + "platform": "cover", + "class_name": "Cover", + "translation_key": "cover", + "translation_placeholders": null, + "device_class": "awning", + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_position": null, + "current_tilt_position": null, + "is_opening": null, + "is_closing": null, + "is_closed": null, + "supported_features": 15 + } + ], + "number": [ + { + "fallback_name": "Additional steps", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-additional_steps", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "additional_steps", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 100, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "%" + }, + { + "fallback_name": "Inactive power threshold", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-inactive_power_threshold", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "inactive_power_threshold", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 65.535, + "native_min_value": 0, + "native_step": 0.001, + "native_unit_of_measurement": "W" + }, + { + "fallback_name": "Closed limit lift", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-installed_closed_limit_lift_config", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "closed_limit_lift", + "translation_placeholders": null, + "device_class": "distance", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "cm" + }, + { + "fallback_name": "Closed limit tilt", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-installed_closed_limit_tilt_config", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "closed_limit_tilt", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 6553.5, + "native_min_value": 0, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0" + }, + { + "fallback_name": "Open limit lift", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-installed_open_limit_lift_config", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "open_limit_lift", + "translation_placeholders": null, + "device_class": "distance", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 65535, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": "cm" + }, + { + "fallback_name": "Open limit tilt", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-installed_open_limit_tilt_config", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "open_limit_tilt", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 6553.5, + "native_min_value": 0, + "native_step": 0.1, + "native_unit_of_measurement": "\u00b0" + }, + { + "fallback_name": "Tilt turn time (open to close)", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-lift_to_tilt_transition_steps", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "tilt_turn_time_open_to_close", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 1310.7, + "native_min_value": 0, + "native_step": 0.02, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Tilt turn time (close to open)", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-lift_to_tilt_transition_steps_2", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "tilt_turn_time_close_to_open", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 1310.7, + "native_min_value": 0, + "native_step": 0.02, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Startup time", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-startup_steps", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "startup_time", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 1310.7, + "native_min_value": 0, + "native_step": 0.02, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Travel time (open to close)", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-total_steps", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "travel_time_open_to_close", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 1310.7, + "native_min_value": 0, + "native_step": 0.02, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Travel time (close to open)", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-total_steps_2", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "travel_time_close_to_open", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 1310.7, + "native_min_value": 0, + "native_step": 0.02, + "native_unit_of_measurement": "s" + }, + { + "fallback_name": "Turnaround guard time", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-turnaround_guard_time", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "turnaround_guard_time", + "translation_placeholders": null, + "device_class": "duration", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "box", + "native_max_value": 12.7, + "native_min_value": 0.5, + "native_step": 0.05, + "native_unit_of_measurement": "s" + } + ], + "select": [ + { + "fallback_name": "Window covering type", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-window_covering_type_config", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": null, + "enum": "WindowCoveringType", + "options": [ + "Rollershade", + "Rollershade two motors", + "Rollershade exterior", + "Rollershade exterior two motors", + "Drapery", + "Awning", + "Shutter", + "Tilt blind tilt only", + "Tilt blind tilt and lift", + "Projector screen" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-258-window_covering_type", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "WindowCoveringTypeSensor", + "translation_key": "window_covering_type", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Awning", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Rollershade", + "Rollershade_two_motors", + "Rollershade_exterior", + "Rollershade_exterior_two_motors", + "Drapery", + "Awning", + "Shutter", + "Tilt_blind_tilt_only", + "Tilt_blind_tilt_and_lift", + "Projector_screen" + ] + }, + { + "fallback_name": "Auto-calibration state", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-calibration_state", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "EnumSensor", + "translation_key": "auto_calibration_state", + "translation_placeholders": null, + "device_class": "enum", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Idle", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Idle", + "Moving_to_top", + "Writing_defaults", + "Entering_calibration", + "Moving_down", + "Detecting_upper_limit", + "Counting_open_to_close", + "Counting_close_to_open", + "Exiting_calibration", + "Complete", + "Failed" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-258-inverted", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "WindowCoveringInversionSwitch", + "translation_key": "inverted", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "config_status", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Detached mode", + "unique_id": "ab:cd:ef:12:d1:f5:5f:ec-1-detached", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detached", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d1:f5:5f:ec", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "detached", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/ubisys-s1-r-5601-0x0250044d.json b/tests/data/devices/ubisys-s1-r-5601-0x0250044d.json new file mode 100644 index 000000000..03bd3be3d --- /dev/null +++ b/tests/data/devices/ubisys-s1-r-5601-0x0250044d.json @@ -0,0 +1,1243 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:1d:25:b8:db", + "nwk": "0xA9C5", + "manufacturer": "ubisys", + "model": "S1-R (5601)", + "friendly_manufacturer": "ubisys", + "friendly_model": "S1-R (5601)", + "name": "ubisys S1-R (5601)", + "quirk_applied": true, + "quirk_class": "zhaquirks.ubisys.switch_s1r:(ubisys / S1-R (5601))", + "exposes_features": [ + "se_poll_summation" + ], + "manufacturer_code": 4338, + "power_source": "Mains", + "lqi": 204, + "rssi": -60, + "last_seen": "2025-05-09T15:19:52.844262+00:00", + "available": true, + "device_type": "Router", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "Router", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 142, + "manufacturer_code": 4338, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "ubisys" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "S1-R (5601)" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0001", + "name": "current_summ_received", + "zcl_type": "uint48", + "value": 0 + }, + { + "id": "0x0100", + "name": "current_tier1_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0102", + "name": "current_tier2_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0104", + "name": "current_tier3_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0106", + "name": "current_tier4_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0108", + "name": "current_tier5_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x010a", + "name": "current_tier6_summ_delivered", + "zcl_type": "uint48", + "unsupported": true + }, + { + "id": "0x0304", + "name": "demand_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0302", + "name": "divisor", + "zcl_type": "uint24", + "value": 10000 + }, + { + "id": "0x0400", + "name": "instantaneous_demand", + "zcl_type": "int24", + "value": 0 + }, + { + "id": "0x0306", + "name": "metering_device_type", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "value": 1 + }, + { + "id": "0x0200", + "name": "status", + "zcl_type": "map8", + "value": 0 + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0300", + "name": "unit_of_measure", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b04", + "endpoint_attribute": "electrical_measurement", + "attributes": [ + { + "id": "0x0603", + "name": "ac_current_divisor", + "zcl_type": "uint16", + "value": 1000 + }, + { + "id": "0x0602", + "name": "ac_current_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0300", + "name": "ac_frequency", + "zcl_type": "uint16", + "value": 600 + }, + { + "id": "0x0401", + "name": "ac_frequency_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0302", + "name": "ac_frequency_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0400", + "name": "ac_frequency_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0605", + "name": "ac_power_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0604", + "name": "ac_power_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0601", + "name": "ac_voltage_divisor", + "zcl_type": "uint16", + "value": 10 + }, + { + "id": "0x0600", + "name": "ac_voltage_multiplier", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x050b", + "name": "active_power", + "zcl_type": "int16", + "value": 0 + }, + { + "id": "0x050d", + "name": "active_power_max", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090d", + "name": "active_power_max_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0d", + "name": "active_power_max_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x090b", + "name": "active_power_ph_b", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x0a0b", + "name": "active_power_ph_c", + "zcl_type": "int16", + "unsupported": true + }, + { + "id": "0x050f", + "name": "apparent_power", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x0000", + "name": "measurement_type", + "zcl_type": "map32", + "value": 15 + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0510", + "name": "power_factor", + "zcl_type": "int8", + "value": 0 + }, + { + "id": "0x0910", + "name": "power_factor_ph_b", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0a10", + "name": "power_factor_ph_c", + "zcl_type": "int8", + "unsupported": true + }, + { + "id": "0x0402", + "name": "power_multiplier", + "zcl_type": "uint32", + "unsupported": true + }, + { + "id": "0x0508", + "name": "rms_current", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0x050a", + "name": "rms_current_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x090a", + "name": "rms_current_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a0a", + "name": "rms_current_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0908", + "name": "rms_current_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a08", + "name": "rms_current_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0505", + "name": "rms_voltage", + "zcl_type": "uint16", + "value": 1218 + }, + { + "id": "0x0507", + "name": "rms_voltage_max", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0907", + "name": "rms_voltage_max_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a07", + "name": "rms_voltage_max_ph_c", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0905", + "name": "rms_voltage_ph_b", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0a05", + "name": "rms_voltage_ph_c", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xfbff", + "endpoint_attribute": "ubisys_input_config", + "attributes": [ + { + "id": "0x0001", + "name": "detached_1", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0003", + "name": "detached_2", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x0000", + "name": "input_mode_1", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "input_mode_2", + "zcl_type": "enum8", + "value": 0 + } + ] + } + ], + "out_clusters": [] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "DIMMER_SWITCH", + "id": 260 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0300", + "endpoint_attribute": "light_color", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "232": { + "profile_id": 260, + "device_type": { + "name": "undefined_0x0507", + "id": 1287 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x003d", + "endpoint_attribute": "zigbee_direct_configuration", + "attributes": [] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "ubisys_cluster", + "attributes": [] + }, + { + "cluster_id": "0xfc57", + "endpoint_attribute": "works_with_all_hubs", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 38798413 + } + ] + } + ] + }, + "242": { + "profile_id": 41440, + "device_type": { + "name": "PROXY_BASIC", + "id": 97 + }, + "in_clusters": [], + "out_clusters": [ + { + "cluster_id": "0x0021", + "endpoint_attribute": "green_power", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "ubisys", + "model": "S1-R (5601)", + "node_desc": { + "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": 4338, + "maximum_buffer_size": 127, + "maximum_incoming_transfer_size": 242, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 242, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0xfc02" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0104", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0300", + "0xfc02" + ] + }, + "232": { + "profile_id": "0x0104", + "device_type": "0x0507", + "input_clusters": [ + "0x0000", + "0x003d", + "0xfc00", + "0xfc57" + ], + "output_clusters": [ + "0x0003", + "0x0019" + ] + }, + "242": { + "profile_id": "0xa1e0", + "device_type": "0x0061", + "input_clusters": [], + "output_clusters": [ + "0x0021" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": "Input mode 1", + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-input_mode_1", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "input_mode_id", + "translation_placeholders": { + "input_id": "1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Toggle", + "enum": "InputMode", + "options": [ + "Toggle", + "Toggle switch", + "On off switch" + ] + }, + { + "fallback_name": "Input mode 2", + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-input_mode_2", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "ZCLEnumSelectEntity", + "translation_key": "input_mode_id", + "translation_placeholders": { + "input_id": "2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Toggle", + "enum": "InputMode", + "options": [ + "Toggle", + "Toggle switch", + "On off switch" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 204, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -60, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-1794", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergyMetering", + "translation_key": "instantaneous_demand", + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "device_type": null, + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-1794-summation_delivered", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummation", + "translation_key": "summation_delivered", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": null, + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-1794-summation_received", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "SmartEnergySummationReceived", + "translation_key": "summation_received", + "translation_placeholders": null, + "device_class": "energy", + "state_class": "total_increasing", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "device_type", + "status", + "zcl_unit_of_measurement" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 3, + "unit": "kWh", + "device_type": null, + "status": "NO_ALARMS", + "zcl_unit_of_measurement": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementActivePower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "active_power_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "W", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "active_power_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820-ac_frequency", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementFrequency", + "translation_key": "ac_frequency", + "translation_placeholders": null, + "device_class": "frequency", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "ac_frequency_max", + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 60.0, + "suggested_display_precision": 1, + "unit": "Hz", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "ac_frequency_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820-apparent_power", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementApparentPower", + "translation_key": null, + "translation_placeholders": null, + "device_class": "apparent_power", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 1, + "unit": "VA", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820-power_factor", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementPowerFactor", + "translation_key": null, + "translation_placeholders": null, + "device_class": "power_factor", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": 1, + "unit": "%", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820-rms_current", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSCurrent", + "translation_key": null, + "translation_placeholders": null, + "device_class": "current", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_current_max" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": 2, + "unit": "A", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_current_max" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-2820-rms_voltage", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "ElectricalMeasurementRMSVoltage", + "translation_key": null, + "translation_placeholders": null, + "device_class": "voltage", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "measurement_type", + "rms_voltage_max" + ], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 121.8, + "suggested_display_precision": 1, + "unit": "V", + "measurement_type": "ACTIVE_MEASUREMENT, REACTIVE_MEASUREMENT, APPARENT_MEASUREMENT, PHASE_A_MEASUREMENT", + "max_value": null, + "max_attribute_name": "rms_voltage_max" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "Switch", + "translation_key": "switch", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": "Detached mode 1", + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-detached_1", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detached_id", + "translation_placeholders": { + "input_id": "1" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "detached_1", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": "Detached mode 2", + "unique_id": "ab:cd:ef:12:1d:25:b8:db-1-detached_2", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "detached_id", + "translation_placeholders": { + "input_id": "2" + }, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "detached_2", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:1d:25:b8:db-232-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:1d:25:b8:db", + "endpoint_id": 232, + "available": true, + "group_id": null, + "installed_version": "0x0250044d", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/yale-yrd220-240-tsdb-0x007a0850.json b/tests/data/devices/yale-yrd220-240-tsdb-0x007a0850.json new file mode 100644 index 000000000..3db7f5999 --- /dev/null +++ b/tests/data/devices/yale-yrd220-240-tsdb-0x007a0850.json @@ -0,0 +1,387 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ca:f7:82:76", + "nwk": "0x37ED", + "manufacturer": "Yale", + "model": "YRD220/240 TSDB", + "friendly_manufacturer": "Yale", + "friendly_model": "YRD220/240 TSDB", + "name": "Yale YRD220/240 TSDB", + "quirk_applied": true, + "quirk_class": "zhaquirks.yale.realliving:YRD220240TSDB", + "exposes_features": [], + "manufacturer_code": 43690, + "power_source": "Battery or Unknown", + "lqi": 255, + "rssi": -68, + "last_seen": "2026-09-11T06:11:11.505842+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 43690, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 0, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "DOOR_LOCK", + "id": 10 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Yale" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "YRD220/240 TSDB" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 126 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [ + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x000a", + "endpoint_attribute": "time", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "cluster_id": "0x0101", + "endpoint_attribute": "door_lock", + "attributes": [ + { + "id": "0x0023", + "name": "auto_relock_time", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x002a", + "name": "enable_inside_status_led", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0028", + "name": "enable_local_programming", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0029", + "name": "enable_one_touch_locking", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x002b", + "name": "enable_privacy_mode_button", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0021", + "name": "language", + "zcl_type": "string", + "value": "en" + }, + { + "id": "0x0000", + "name": "lock_state", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0025", + "name": "operating_mode", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0033", + "name": "require_pin_for_rf_operation", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0046", + "name": "rf_programming_event_mask", + "zcl_type": "map16", + "value": 65535 + }, + { + "id": "0x0024", + "name": "sound_volume", + "zcl_type": "uint8", + "value": 0 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 7997520 + } + ] + }, + { + "cluster_id": "0x0101", + "endpoint_attribute": "door_lock", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Yale", + "model": "YRD220/240 TSDB", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 43690, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 255, + "server_mask": 0, + "maximum_outgoing_transfer_size": 255, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x000a", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0009", + "0x000a", + "0x0101", + "0x0020" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "lock": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:f7:82:76-1-257", + "migrate_unique_ids": [], + "platform": "lock", + "class_name": "DoorLock", + "translation_key": "door_lock", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:f7:82:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_locked": true + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:f7:82:76-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:f7:82:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:f7:82:76-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:f7:82:76", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:f7:82:76-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:ca:f7:82:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 63.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ca:f7:82:76-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:ca:f7:82:76", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x007a0850", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/yandex-yndx-00531-0x00000013.json b/tests/data/devices/yandex-yndx-00531-0x00000013.json new file mode 100644 index 000000000..b9a4a8666 --- /dev/null +++ b/tests/data/devices/yandex-yndx-00531-0x00000013.json @@ -0,0 +1,319 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d0:54:00:fa", + "nwk": "0xB4C3", + "manufacturer": "Yandex", + "model": "YNDX-00531", + "friendly_manufacturer": "Yandex", + "friendly_model": "YNDX-00531", + "name": "Yandex YNDX-00531", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4911, + "power_source": "Battery or Unknown", + "lqi": 84, + "rssi": null, + "last_seen": "2026-03-21T16:23:50.662028+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4911, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 916, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 916, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Yandex" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "YNDX-00531" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 19 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Yandex", + "model": "YNDX-00531", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4911, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 916, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 916, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0xfc03" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "On", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 84, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d0:54:00:fa-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:d0:54:00:fa", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000013", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/yandex-yndx-00532-0x0000000e.json b/tests/data/devices/yandex-yndx-00532-0x0000000e.json new file mode 100644 index 000000000..f9400f5c5 --- /dev/null +++ b/tests/data/devices/yandex-yndx-00532-0x0000000e.json @@ -0,0 +1,462 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:73:3c:35:12", + "nwk": "0x9C74", + "manufacturer": "Yandex", + "model": "YNDX-00532", + "friendly_manufacturer": "Yandex", + "friendly_model": "YNDX-00532", + "name": "Yandex YNDX-00532", + "quirk_applied": false, + "quirk_class": "zigpy.device.ZigbeeDevice", + "exposes_features": [], + "manufacturer_code": 4911, + "power_source": "Battery or Unknown", + "lqi": 81, + "rssi": null, + "last_seen": "2026-03-21T16:25:08.337800+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4911, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 916, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 916, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Yandex" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "YNDX-00532" + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "value": 2 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "value": 0 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 14 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_LIGHT", + "id": 256 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [ + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0xfffe", + "name": "reporting_status", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "value": 255 + } + ] + }, + { + "cluster_id": "0xfc03", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + } + }, + "original_signature": { + "manufacturer": "Yandex", + "model": "YNDX-00532", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4911, + "maximum_buffer_size": 74, + "maximum_incoming_transfer_size": 916, + "server_mask": 10752, + "maximum_outgoing_transfer_size": 916, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0xfc03" + ], + "output_clusters": [ + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0006", + "0xfc03" + ], + "output_clusters": [] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "on": false, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-2", + "migrate_unique_ids": [], + "platform": "light", + "class_name": "Light", + "translation_key": "light", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 2, + "available": true, + "group_id": null, + "on": true, + "brightness": null, + "xy_color": null, + "color_temp": null, + "effect_list": [ + "off" + ], + "effect": "off", + "supported_features": 8, + "color_mode": "onoff", + "supported_color_modes": [ + "onoff" + ], + "off_with_transition": false, + "off_brightness": null, + "min_mireds": 153, + "max_mireds": 500 + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-2-6-StartUpOnOff", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "StartupOnOffSelectEntity", + "translation_key": "start_up_on_off", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "PreviousValue", + "enum": "StartUpOnOff", + "options": [ + "Off", + "On", + "Toggle", + "PreviousValue" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 81, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:73:3c:35:12-1-25-firmware_update", + "migrate_unique_ids": [], + "platform": "update", + "class_name": "FirmwareUpdateEntity", + "translation_key": null, + "translation_placeholders": null, + "device_class": "firmware", + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:73:3c:35:12", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000000e", + "in_progress": false, + "update_percentage": null, + "latest_version": null, + "release_summary": null, + "release_notes": null, + "release_url": null, + "supported_features": 23 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/yokis-tlc1-up.json b/tests/data/devices/yokis-tlc1-up.json new file mode 100644 index 000000000..f62648f96 --- /dev/null +++ b/tests/data/devices/yokis-tlc1-up.json @@ -0,0 +1,418 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:14:19:e2:47", + "nwk": "0x287B", + "manufacturer": "YOKIS", + "model": "TLC1-UP", + "friendly_manufacturer": "YOKIS", + "friendly_model": "TLC1-UP", + "name": "YOKIS TLC1-UP", + "quirk_applied": true, + "quirk_class": "zhaquirks.yokis.remote:(YOKIS / TLC1-UP)", + "exposes_features": [], + "manufacturer_code": 4909, + "power_source": "Battery or Unknown", + "lqi": 228, + "rssi": -43, + "last_seen": "2026-04-10T04:42:36.927533+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4909, + "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": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "YOKIS" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TLC1-UP" + } + ] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc09", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc06", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc07", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc08", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc0a", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "9": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 2218 + }, + { + "id": "0x0003", + "name": "tolerance", + "zcl_type": "uint16", + "value": 50 + } + ] + }, + { + "cluster_id": "0xfc0b", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "YOKIS", + "model": "TLC1-UP", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4909, + "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": "0x0006", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x1000", + "0xfc09", + "0xfc01", + "0xfc02" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008", + "0x0102", + "0x1000", + "0xfc02", + "0xfc06", + "0xfc07", + "0xfc08", + "0xfc0a" + ] + }, + "9": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402", + "0xfc0b" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:19:e2:47-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:19:e2:47", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:19:e2:47-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:19:e2:47", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 228, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:19:e2:47-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:19:e2:47", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -43, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:19:e2:47-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:14:19:e2:47", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:19:e2:47-9-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:14:19:e2:47", + "endpoint_id": 9, + "available": true, + "group_id": null, + "native_value": 22.18, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/yokis-tlm2-up.json b/tests/data/devices/yokis-tlm2-up.json new file mode 100644 index 000000000..7aa36f775 --- /dev/null +++ b/tests/data/devices/yokis-tlm2-up.json @@ -0,0 +1,581 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:4b:4a:59:41", + "nwk": "0xD928", + "manufacturer": "YOKIS", + "model": "TLM2-UP", + "friendly_manufacturer": "YOKIS", + "friendly_model": "TLM2-UP", + "name": "YOKIS TLM2-UP", + "quirk_applied": true, + "quirk_class": "zhaquirks.yokis.remote:(YOKIS / TLC2-UP)", + "exposes_features": [], + "manufacturer_code": 4909, + "power_source": "Battery or Unknown", + "lqi": 236, + "rssi": -41, + "last_seen": "2026-04-08T14:36:19.461187+00:00", + "available": true, + "device_type": "EndDevice", + "active_coordinator": false, + "node_descriptor": { + "logical_type": "EndDevice", + "complex_descriptor_available": false, + "user_descriptor_available": false, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4909, + "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": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x003e", + "name": "battery_alarm_state", + "zcl_type": "map32", + "value": 0 + }, + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc09", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc06", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc07", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc08", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc0a", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc01", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc09", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0006", + "endpoint_attribute": "on_off", + "attributes": [] + }, + { + "cluster_id": "0x0008", + "endpoint_attribute": "level", + "attributes": [] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc02", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc06", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc07", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc08", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + }, + { + "cluster_id": "0xfc0a", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ] + }, + "9": { + "profile_id": 260, + "device_type": { + "name": "REMOTE_CONTROL", + "id": 6 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 3131 + }, + { + "id": "0x0003", + "name": "tolerance", + "zcl_type": "uint16", + "value": 50 + } + ] + }, + { + "cluster_id": "0xfc0b", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "YOKIS", + "model": "TLM2-UP", + "node_desc": { + "logical_type": 2, + "complex_descriptor_available": 0, + "user_descriptor_available": 0, + "reserved": 0, + "aps_flags": 0, + "frequency_band": 8, + "mac_capability_flags": 128, + "manufacturer_code": 4909, + "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": "0x0006", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x1000", + "0xfc09", + "0xfc01", + "0xfc02" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008", + "0x0102", + "0x1000", + "0xfc02", + "0xfc06", + "0xfc07", + "0xfc08", + "0xfc0a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x1000", + "0xfc09", + "0xfc01", + "0xfc02" + ], + "output_clusters": [ + "0x0003", + "0x0006", + "0x0008", + "0x0102", + "0x1000", + "0xfc02", + "0xfc06", + "0xfc07", + "0xfc08", + "0xfc0a" + ] + }, + "9": { + "profile_id": "0x0104", + "device_type": "0x0006", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0402", + "0xfc0b" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-1-3", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "IdentifyButton", + "translation_key": null, + "translation_placeholders": null, + "device_class": "identify", + "state_class": null, + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-1-0-lqi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "LQISensor", + "translation_key": "lqi", + "translation_placeholders": null, + "device_class": null, + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": 236, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-1-0-rssi", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "RSSISensor", + "translation_key": "rssi", + "translation_placeholders": null, + "device_class": "signal_strength", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": false, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": null, + "available": true, + "group_id": null, + "native_value": -41, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-1-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-2-1", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Battery", + "translation_key": null, + "translation_placeholders": null, + "device_class": "battery", + "state_class": "measurement", + "entity_category": "diagnostic", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [ + "battery_quantity", + "battery_size", + "battery_voltage" + ], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": 2, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": null, + "battery_quantity": null, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:4b:4a:59:41-9-1026", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Temperature", + "translation_key": null, + "translation_placeholders": null, + "device_class": "temperature", + "state_class": "measurement", + "entity_category": null, + "entity_registry_enabled_default": true, + "enabled": true, + "primary": true, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:4b:4a:59:41", + "endpoint_id": 9, + "available": true, + "group_id": null, + "native_value": 31.31, + "suggested_display_precision": null, + "unit": "\u00b0C" + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/test_discover.py b/tests/test_discover.py index cedbcdff9..359ed9ae3 100644 --- a/tests/test_discover.py +++ b/tests/test_discover.py @@ -67,8 +67,8 @@ def _get_identify_cluster(zigpy_device): for endpoint in list(zigpy_device.endpoints.values())[1:]: - if hasattr(endpoint, "identify"): - return endpoint.identify + if zigpy.zcl.clusters.general.Identify.cluster_id in endpoint.in_clusters: + return endpoint.in_clusters[zigpy.zcl.clusters.general.Identify.cluster_id] @pytest.mark.parametrize("override_platform", [Platform.SWITCH, Platform.LIGHT]) diff --git a/tools/import_diagnostics.py b/tools/import_diagnostics.py index b0e51e71c..2afaf24cc 100644 --- a/tools/import_diagnostics.py +++ b/tools/import_diagnostics.py @@ -319,9 +319,13 @@ def zigpy_device_from_diagnostics( zha_data = data["data"] - if "version" not in zha_data: + if "signature" in zha_data: return zigpy_device_from_legacy_diagnostics(app, data, patch_cluster) + # Diagnostics pasted inline into issues are sometimes trimmed + if "version" not in zha_data: + return None + if not has_original_signature(zha_data): return None @@ -346,18 +350,28 @@ def has_original_signature(zha_data: dict) -> bool: def sanitize_device_data(zha_data: dict) -> dict: """Replace redacted and identifying fields in modern diagnostics JSON.""" - # Some diagnostics are hand-redacted (e.g. nwk "0xREDACTED"), fake a NWK instead - if "REDACTED" in zha_data["nwk"]: + # Some diagnostics are hand-redacted (e.g. nwk "0xREDACTED") or lack the NWK, + # fake a NWK instead + if "nwk" not in zha_data or "REDACTED" in zha_data["nwk"]: zha_data["nwk"] = "0x1234" # Home Assistant diagnostics contain redacted IEEE info, fake an IEEE instead - if "REDACTED" in zha_data["ieee"]: + if "ieee" not in zha_data or "REDACTED" in zha_data["ieee"]: zha_data["ieee"] = str( ieee_from_manufacturer_model( manufacturer=zha_data["manufacturer"], model=zha_data["model"] ) ) + # Some diagnostics also redact or lack the last seen time + if "last_seen" not in zha_data or "REDACTED" in zha_data["last_seen"]: + zha_data["last_seen"] = "1970-01-01T00:00:00+00:00" + + # Trimmed or redacted diagnostics can lack the link quality, it is optional anyway + for key in ("lqi", "rssi"): + if key not in zha_data or "REDACTED" in str(zha_data[key]): + zha_data[key] = None + # Neighbors contain EUI64 addresses and EPIDs zha_data["neighbors"] = [] zha_data["routes"] = []