diff --git a/tests/data/devices/aqara-lumi-switch-acn047-0x00000023.json b/tests/data/devices/aqara-lumi-switch-acn047-0x00000023.json new file mode 100644 index 000000000..2c6b6d66a --- /dev/null +++ b/tests/data/devices/aqara-lumi-switch-acn047-0x00000023.json @@ -0,0 +1,1175 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:3a:b1:1a:5d", + "nwk": "0x6963", + "manufacturer": "Aqara", + "model": "lumi.switch.acn047", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.switch.acn047", + "name": "Aqara lumi.switch.acn047", + "quirk_applied": true, + "quirk_class": "zhaquirks.xiaomi.aqara.switch_acn047:AqaraT2Relay", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Mains", + "lqi": 255, + "rssi": -44, + "last_seen": "2026-07-12T19:37:38.235263+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": 35 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.switch.acn047" + } + ] + }, + { + "cluster_id": "0x0002", + "endpoint_attribute": "device_temperature", + "attributes": [ + { + "id": "0x0000", + "name": "current_temperature", + "zcl_type": "int16", + "value": 3800 + } + ] + }, + { + "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": "0x0702", + "endpoint_attribute": "smartenergy_metering", + "attributes": [ + { + "id": "0x0000", + "name": "current_summ_delivered", + "zcl_type": "uint48", + "value": 11 + }, + { + "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": 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", + "unsupported": true + }, + { + "id": "0x0303", + "name": "summation_formatting", + "zcl_type": "map8", + "value": 35 + }, + { + "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", + "unsupported": true + }, + { + "id": "0x0403", + "name": "power_divisor", + "zcl_type": "uint32", + "value": 1 + }, + { + "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", + "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": 244 + }, + { + "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": "0x0200", + "name": "decoupled_mode", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x02d0", + "name": "interlock", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x00eb", + "name": "pulse_length", + "zcl_type": "uint16", + "value": 200 + }, + { + "id": "0x0517", + "name": "startup_on_off", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0289", + "name": "switch_mode", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x000a", + "name": "switch_type", + "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": 35 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "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", + "unsupported": true + } + ] + }, + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "opple_cluster", + "attributes": [ + { + "id": "0x0200", + "name": "decoupled_mode", + "zcl_type": "uint8", + "value": 1 + }, + { + "id": "0x0517", + "name": "startup_on_off", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0289", + "name": "switch_mode", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x000a", + "name": "switch_type", + "zcl_type": "uint8", + "unsupported": true + } + ] + } + ], + "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.acn047", + "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": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0005", + "0x0004", + "0x0003", + "0x0012", + "0x0006", + "0xfcc0" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0b04", + "0x0702", + "0x0005", + "0x0004", + "0x0003", + "0x0012", + "0x0000", + "0x0006", + "0xfcc0" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-1-64704-decoupled_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "AqaraT2RelayDecoupledMode", + "translation_key": "decoupled_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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "ControlRelay", + "enum": "DecoupledMode", + "options": [ + "Decoupled", + "ControlRelay" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-1-64704-startup_on_off", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "AqaraT2RelayStartupOnOff", + "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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Previous", + "enum": "StartupOnOff", + "options": [ + "On", + "Previous", + "Off", + "Toggle" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-1-64704-switch_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "AqaraT2RelaySwitchMode", + "translation_key": "switch_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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Power", + "enum": "SwitchMode", + "options": [ + "Power", + "Pulse", + "Dry" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-1-64704-switch_type", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "AqaraT2RelaySwitchType", + "translation_key": "switch_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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Toggle", + "enum": "SwitchType", + "options": [ + "Toggle", + "Momentary", + "NoSwitch" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-2-64704-decoupled_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "AqaraT2RelayDecoupledMode", + "translation_key": "decoupled_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:3a:b1:1a:5d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "current_option": "ControlRelay", + "enum": "DecoupledMode", + "options": [ + "Decoupled", + "ControlRelay" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -44, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1.1e-05, + "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:3a:b1:1a:5d-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:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 38.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:3a:b1:1a:5d", + "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:3a:b1:1a:5d-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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 244.0, + "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:3a:b1:1a:5d-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:3a:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:3a:b1:1a:5d", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:3a:b1:1a:5d-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:b1:1a:5d", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000023", + "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-agl006-0x0000171b.json b/tests/data/devices/aqara-lumi-switch-agl006-0x0000171b.json new file mode 100644 index 000000000..4d4552dd1 --- /dev/null +++ b/tests/data/devices/aqara-lumi-switch-agl006-0x0000171b.json @@ -0,0 +1,1026 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:15:40:82:5b", + "nwk": "0xAD70", + "manufacturer": "Aqara", + "model": "lumi.switch.agl006", + "friendly_manufacturer": "Aqara", + "friendly_model": "lumi.switch.agl006", + "name": "Aqara lumi.switch.agl006", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Battery or Unknown", + "lqi": 220, + "rssi": -45, + "last_seen": "2026-07-22T02:36:21.624302+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": 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": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Aqara" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "lumi.switch.agl006" + } + ] + }, + { + "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": "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": 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": 5915 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "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": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "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": "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": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_SWITCH", + "id": 0 + }, + "in_clusters": [ + { + "cluster_id": "0x0012", + "endpoint_attribute": "multistate_input", + "attributes": [ + { + "id": "0x0055", + "name": "present_value", + "zcl_type": "uint16", + "value": 1 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [] + }, + "5": { + "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": [] + } + }, + "original_signature": { + "manufacturer": "Aqara", + "model": "lumi.switch.agl006", + "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": 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": [] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0xfcc0" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012", + "0xfcc0" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012", + "0x0006", + "0xfcc0" + ], + "output_clusters": [] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0012", + "0x0006", + "0xfcc0" + ], + "output_clusters": [] + }, + "1": { + "profile_id": "0x0104", + "device_type": "0x0000", + "input_clusters": [ + "0x0b04", + "0x0702", + "0x0012", + "0x0006", + "0x0003", + "0x0000", + "0xfcc0" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82: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:15:40:82:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82: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:15:40:82:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 220, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82: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:15:40:82:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -45, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82:5b-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:15:40:82:5b", + "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:15:40:82:5b-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:15:40:82:5b", + "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" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82:5b-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:15:40:82:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82:5b-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:15:40:82:5b", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 0 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82:5b-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:15:40:82:5b", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 0 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:15:40:82:5b-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:15:40:82:5b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0000171b", + "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/danfoss-etrv0103-0x00000020.json b/tests/data/devices/danfoss-etrv0103-0x00000020.json new file mode 100644 index 000000000..d188a57f6 --- /dev/null +++ b/tests/data/devices/danfoss-etrv0103-0x00000020.json @@ -0,0 +1,1276 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "nwk": "0x9600", + "manufacturer": "Danfoss", + "model": "eTRV0103", + "friendly_manufacturer": "Danfoss", + "friendly_model": "eTRV0103", + "name": "Danfoss eTRV0103", + "quirk_applied": true, + "quirk_class": "zhaquirks.danfoss.thermostat:DanfossThermostat", + "exposes_features": [ + "danfoss.ally_thermostat" + ], + "manufacturer_code": 4678, + "power_source": "Battery or Unknown", + "lqi": 136, + "rssi": -77, + "last_seen": "2026-07-13T23:44:23.292602+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": 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": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [ + { + "id": "0x0021", + "name": "battery_percentage_remaining", + "zcl_type": "uint8", + "value": 130 + }, + { + "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": "0x000a", + "endpoint_attribute": "time", + "attributes": [ + { + "id": "0x0000", + "name": "time", + "zcl_type": "UTC", + "value": 837298569.17544 + }, + { + "id": "0x0001", + "name": "time_status", + "zcl_type": "map8", + "value": 2 + }, + { + "id": "0x0002", + "name": "time_zone", + "zcl_type": "int32", + "value": -3600 + } + ] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "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": 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": "0x404e", + "name": "adaptation_run_settings", + "zcl_type": "map8", + "value": 1 + }, + { + "id": "0x404d", + "name": "adaptation_run_status", + "zcl_type": "map8", + "value": 2 + }, + { + "id": "0x001b", + "name": "ctrl_sequence_of_oper", + "zcl_type": "enum8", + "value": 2 + }, + { + "id": "0x4003", + "name": "external_open_window_detected", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4030", + "name": "heat_available", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x4031", + "name": "heat_required", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4032", + "name": "load_balancing_enable", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x404a", + "name": "load_estimate", + "zcl_type": "int16", + "value": -8000 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2877 + }, + { + "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": "0x4012", + "name": "mounting_mode_active", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4013", + "name": "mounting_mode_control", + "zcl_type": "bool", + "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": 1700 + }, + { + "id": "0x4000", + "name": "open_window_detection", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "id": "0x0008", + "name": "pi_heating_demand", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x404f", + "name": "preheat_status", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4050", + "name": "preheat_time", + "zcl_type": "uint32", + "value": 0 + }, + { + "id": "0x4016", + "name": "radiator_covered", + "zcl_type": "bool", + "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", + "value": 2 + }, + { + "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 + }, + { + "id": "0x4051", + "name": "window_open_feature", + "zcl_type": "bool", + "value": 1 + } + ] + }, + { + "cluster_id": "0x0204", + "endpoint_attribute": "thermostat_ui", + "attributes": [ + { + "id": "0x0001", + "name": "keypad_lockout", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x4000", + "name": "viewing_direction", + "zcl_type": "enum8", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0b05", + "endpoint_attribute": "diagnostic", + "attributes": [ + { + "id": "0x4010", + "name": "motor_step_counter", + "zcl_type": "uint32", + "value": 586410 + }, + { + "id": "0x4000", + "name": "sw_error_code", + "zcl_type": "map16", + "value": 0 + } + ] + } + ], + "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": 32 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "Danfoss", + "model": "eTRV0103", + "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": 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", + "0x0001", + "0x0003", + "0x000a", + "0x0020", + "0x0201", + "0x0204", + "0x0b05" + ], + "output_clusters": [ + "0x0000", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-heat_required", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "DanfossHeatRequired", + "translation_key": "heat_required", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "heat_required" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-mounting_mode_active", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "DanfossMountingModeActive", + "translation_key": "mounting_mode_active", + "translation_placeholders": null, + "device_class": "opening", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "mounting_mode_active" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-preheat_status", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "DanfossPreheatStatus", + "translation_key": "preheat_status", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "preheat_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f: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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 28.77, + "outdoor_temperature": null, + "target_temperature": 17.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": 1700, + "pi_heating_demand": 0, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": null + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-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:5c:a0:3f:1c", + "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:5c:a0:3f:1c-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:5c:a0:3f:1c", + "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:5c:a0:3f:1c-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:5c:a0:3f:1c", + "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:5c:a0:3f:1c-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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Unlock", + "enum": "KeypadLockoutEnum", + "options": [ + "Unlock", + "Lock1", + "Lock2", + "Lock3", + "Lock4" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-516-viewing_direction", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "DanfossViewingDirection", + "translation_key": "viewing_direction", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "Default", + "enum": "DanfossViewingDirectionEnum", + "options": [ + "Default", + "Inverted" + ] + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f: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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 136, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f: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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -77, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f: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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 65.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:5c:a0:3f:1c-1-2821-motor_step_counter", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossMotorStepCounter", + "translation_key": "motor_stepcount", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 586410, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-2821-sw_error_code", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossSoftwareErrorCode", + "translation_key": "software_error", + "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": [ + "Critical_low_battery", + "Encoder_jammed", + "Invalid_clock_information", + "Invalid_internal_communication", + "Low_battery", + "Motor_error", + "Non_volatile_memory_error", + "Radio_communication_error", + "Side_pcb_sensor_error", + "Top_pcb_sensor_error", + "Unknown_hw_error" + ], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "nothing", + "suggested_display_precision": null, + "unit": null, + "bit_states": { + "Top_pcb_sensor_error": false, + "Side_pcb_sensor_error": false, + "Non_volatile_memory_error": false, + "Unknown_hw_error": false, + "Motor_error": false, + "Invalid_internal_communication": false, + "Invalid_clock_information": false, + "Radio_communication_error": false, + "Encoder_jammed": false, + "Low_battery": false, + "Critical_low_battery": false + } + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-adaptation_run_status", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossAdaptationRunStatus", + "translation_key": "adaptation_run_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": [ + "In_progress", + "Valve_characteristic_found", + "Valve_characteristic_lost" + ], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "something", + "suggested_display_precision": null, + "unit": null, + "bit_states": { + "In_progress": false, + "Valve_characteristic_found": true, + "Valve_characteristic_lost": false + } + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-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:5c:a0:3f:1c", + "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:5c:a0:3f:1c-1-513-load_estimate", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossLoadEstimate", + "translation_key": "load_estimate", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -8000, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-open_window_detection", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossOpenWindowDetection", + "translation_key": "open_window_detected", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "Closed", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Quarantine", + "Closed", + "Maybe", + "Open", + "External" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-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:5c:a0:3f:1c", + "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:5c:a0:3f:1c-1-513-preheat_time", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "DanfossPreheatTime", + "translation_key": "preheat_time", + "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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "External", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Manual", + "Schedule", + "External" + ] + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-adaptation_run_settings", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossAdaptationRunSettings", + "translation_key": "adaptation_run_enabled", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "adaptation_run_settings", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-external_open_window_detected", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossExternalOpenWindowDetected", + "translation_key": "external_window_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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "external_open_window_detected", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-heat_available", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossHeatAvailable", + "translation_key": "heat_available", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "heat_available", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-load_balancing_enable", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossLoadBalancingEnable", + "translation_key": "use_load_balancing", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "load_balancing_enable", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-mounting_mode_control", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossMountingModeControl", + "translation_key": "mounting_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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "mounting_mode_control", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-radiator_covered", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossRadiatorCovered", + "translation_key": "prioritize_external_temperature_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:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "radiator_covered", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f:1c-1-513-window_open_feature", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "DanfossWindowOpenFeature", + "translation_key": "use_internal_window_detection", + "translation_placeholders": null, + "device_class": null, + "state_class": null, + "entity_category": "config", + "entity_registry_enabled_default": true, + "enabled": true, + "primary": false, + "extra_state_attribute_names": [], + "device_ieee": "ab:cd:ef:12:5c:a0:3f:1c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": true, + "inverted": false, + "attribute_name": "window_open_feature", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:5c:a0:3f: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:5c:a0:3f:1c", + "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/eurotronic-spzb0001-0x0162e9d2.json b/tests/data/devices/eurotronic-spzb0001-0x0162e9d2.json new file mode 100644 index 000000000..a91058307 --- /dev/null +++ b/tests/data/devices/eurotronic-spzb0001-0x0162e9d2.json @@ -0,0 +1,677 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:32:62:3d:21", + "nwk": "0x4D3C", + "manufacturer": "Eurotronic", + "model": "SPZB0001", + "friendly_manufacturer": "Eurotronic", + "friendly_model": "SPZB0001", + "name": "Eurotronic SPZB0001", + "quirk_applied": true, + "quirk_class": "zhaquirks.eurotronic.spzb0001:SPZB0001", + "exposes_features": [], + "manufacturer_code": 4151, + "power_source": "Battery or Unknown", + "lqi": null, + "rssi": null, + "last_seen": "2026-05-11T15:30:22.127022+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": 4151, + "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": "THERMOSTAT", + "id": 769 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "Eurotronic" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "SPZB0001" + } + ] + }, + { + "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": 0 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "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": "0x0019", + "endpoint_attribute": "ota", + "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": "0x4003", + "name": "current_temperature_setpoint", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x4002", + "name": "errors", + "zcl_type": "uint8", + "value": 0 + }, + { + "id": "0x4008", + "name": "host_flags", + "zcl_type": "uint24", + "value": 17 + }, + { + "id": "0x0000", + "name": "local_temperature", + "zcl_type": "int16", + "value": 2000 + }, + { + "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": 500 + }, + { + "id": "0x0002", + "name": "occupancy", + "zcl_type": "map8", + "unsupported": true + }, + { + "id": "0x0011", + "name": "occupied_cooling_setpoint", + "zcl_type": "int16", + "value": 2600 + }, + { + "id": "0x0012", + "name": "occupied_heating_setpoint", + "zcl_type": "int16", + "value": 500 + }, + { + "id": "0x0007", + "name": "pi_cooling_demand", + "zcl_type": "uint8", + "unsupported": true + }, + { + "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": "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", + "unsupported": true + }, + { + "id": "0x0014", + "name": "unoccupied_heating_setpoint", + "zcl_type": "int16", + "value": 1600 + } + ] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "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": 23259602 + } + ] + }, + { + "cluster_id": "0x0201", + "endpoint_attribute": "thermostat", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Eurotronic", + "model": "SPZB0001", + "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": 4151, + "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": "0x0301", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0201", + "0x0019", + "0x000a" + ], + "output_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0004", + "0x0201", + "0x0019", + "0x000a" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:32:62:3d:21", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "climate": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:32:62:3d:21", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_temperature": 20.0, + "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": 30.0, + "min_temp": 5.0, + "supported_features": 385, + "fan_modes": null, + "preset_modes": [], + "hvac_modes": [ + "off", + "heat" + ], + "sys_mode": "[0]/off", + "occupancy": null, + "occupied_cooling_setpoint": 2600, + "occupied_heating_setpoint": 500, + "pi_heating_demand": 0, + "pi_cooling_demand": null, + "unoccupied_cooling_setpoint": null, + "unoccupied_heating_setpoint": 1600 + } + ], + "number": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:32:62:3d:21", + "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:32:62:3d:21-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:32:62:3d:21", + "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:32:62:3d:21-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:32:62:3d:21", + "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" + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:62:3d:21", + "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:32:62:3d:21-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:62:3d:21", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:32:62:3d:21", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 100.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 0, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:32:62:3d:21-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:32:62:3d:21", + "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:32:62:3d:21-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:32:62:3d:21", + "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:32:62:3d:21-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:62:3d:21", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x0162e9d2", + "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-kepzb-110-0x00020006.json b/tests/data/devices/frient-a-s-kepzb-110-0x00020006.json new file mode 100644 index 000000000..e641eeb2f --- /dev/null +++ b/tests/data/devices/frient-a-s-kepzb-110-0x00020006.json @@ -0,0 +1,441 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:44:6d:00:26", + "nwk": "0x07FD", + "manufacturer": "frient A/S", + "model": "KEPZB-110", + "friendly_manufacturer": "frient A/S", + "friendly_model": "KEPZB-110", + "name": "frient A/S KEPZB-110", + "quirk_applied": true, + "quirk_class": "zhaquirks.develco.intelligent_keypad:(frient A/S / KEPZB-110)", + "exposes_features": [], + "manufacturer_code": 4117, + "power_source": "Battery or Unknown", + "lqi": 80, + "rssi": null, + "last_seen": "2026-07-03T15:37:17.401328+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": [] + }, + "44": { + "profile_id": 260, + "device_type": { + "name": "IAS_ANCILLARY_CONTROL", + "id": 1025 + }, + "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": "KEPZB-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": 100 + }, + { + "id": "0x0033", + "name": "battery_quantity", + "zcl_type": "uint8", + "value": 4 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 3 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 51 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "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": 16 + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 541 + } + ] + }, + { + "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": "0x0501", + "endpoint_attribute": "ias_ace", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "frient A/S", + "model": "KEPZB-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": 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": [] + }, + "44": { + "profile_id": "0x0104", + "device_type": "0x0401", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020", + "0x0500", + "0x0b05" + ], + "output_clusters": [ + "0x0003", + "0x000a", + "0x0019", + "0x0501" + ] + } + } + }, + "zha_lib_entities": { + "alarm_control_panel": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-1281", + "migrate_unique_ids": [], + "platform": "alarm_control_panel", + "class_name": "AlarmControlPanel", + "translation_key": "alarm_control_panel", + "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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "alarm_state": "disarmed", + "code_arm_required": false, + "code_format": "number", + "supported_features": 15 + } + ], + "binary_sensor": [ + { + "fallback_name": "Tamper", + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "native_value": 80, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "available": true, + "group_id": null, + "native_value": 50.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "AA", + "battery_quantity": 4, + "battery_voltage": 5.1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:44:6d:00:26-44-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:44:6d:00:26", + "endpoint_id": 44, + "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/ikea-of-sweden-tradfri-shortcut-button-0x23015631.json b/tests/data/devices/ikea-of-sweden-tradfri-shortcut-button-0x23015631.json new file mode 100644 index 000000000..f7ee213d8 --- /dev/null +++ b/tests/data/devices/ikea-of-sweden-tradfri-shortcut-button-0x23015631.json @@ -0,0 +1,366 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:7d:a7:c6:3b", + "nwk": "0x5E48", + "manufacturer": "IKEA of Sweden", + "model": "TRADFRI SHORTCUT Button", + "friendly_manufacturer": "IKEA of Sweden", + "friendly_model": "TRADFRI SHORTCUT Button", + "name": "IKEA of Sweden TRADFRI SHORTCUT Button", + "quirk_applied": true, + "quirk_class": "zhaquirks.ikea.shortcutbtn:IkeaTradfriShortcutBtn", + "exposes_features": [], + "manufacturer_code": 4476, + "power_source": "Battery or Unknown", + "lqi": 207, + "rssi": -68, + "last_seen": "2026-07-09T06:28:19.024604+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": 4476, + "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": "IKEA of Sweden" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TRADFRI SHORTCUT Button" + }, + { + "id": "0x4000", + "name": "sw_build_id", + "zcl_type": "string", + "value": "2.3.015" + } + ] + }, + { + "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": "0x0034", + "name": "battery_rated_voltage", + "zcl_type": "uint8", + "value": 30 + }, + { + "id": "0x0031", + "name": "battery_size", + "zcl_type": "enum8", + "value": 10 + }, + { + "id": "0x0020", + "name": "battery_voltage", + "zcl_type": "uint8", + "value": 29 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x0009", + "endpoint_attribute": "alarms", + "attributes": [] + }, + { + "cluster_id": "0x0020", + "endpoint_attribute": "poll_control", + "attributes": [ + { + "id": "0x0003", + "name": "fast_poll_timeout", + "zcl_type": "uint16", + "value": 120 + } + ] + }, + { + "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": "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": 587290161 + } + ] + }, + { + "cluster_id": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "IKEA of Sweden", + "model": "TRADFRI SHORTCUT Button", + "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": 4476, + "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", + "0x0009", + "0x0020", + "0x1000" + ], + "output_clusters": [ + "0x0003", + "0x0004", + "0x0006", + "0x0008", + "0x0019", + "0x0102", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:a7:c6:3b-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:a7:c6:3b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:a7:c6:3b-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:a7:c6:3b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 207, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:a7:c6:3b-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:a7:c6:3b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -68, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:a7:c6:3b-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:7d:a7:c6:3b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 87.0, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "CR2032", + "battery_quantity": 1, + "battery_voltage": 2.9 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:7d:a7:c6:3b-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:a7:c6:3b", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x23015631", + "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-sensor-smoke-acn03-0x00000013.json b/tests/data/devices/lumi-lumi-sensor-smoke-acn03-0x00000013.json new file mode 100644 index 000000000..c2a199f70 --- /dev/null +++ b/tests/data/devices/lumi-lumi-sensor-smoke-acn03-0x00000013.json @@ -0,0 +1,407 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:41:b2:02:30", + "nwk": "0xD924", + "manufacturer": "LUMI", + "model": "lumi.sensor_smoke.acn03", + "friendly_manufacturer": "LUMI", + "friendly_model": "lumi.sensor_smoke.acn03", + "name": "LUMI lumi.sensor_smoke.acn03", + "quirk_applied": true, + "quirk_class": "zhaquirks.xiaomi.aqara.smoke:LumiSensorSmokeAcn03", + "exposes_features": [], + "manufacturer_code": 4447, + "power_source": "Battery or Unknown", + "lqi": 189, + "rssi": null, + "last_seen": "2026-07-25T12:44:53.474497+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": "IAS_ZONE", + "id": 1026 + }, + "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.sensor_smoke.acn03" + } + ] + }, + { + "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", + "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": "0x0500", + "endpoint_attribute": "ias_zone", + "attributes": [ + { + "id": "0x0010", + "name": "cie_addr", + "zcl_type": "EUI64", + "value": "00:12:4b:00:2a:2e:8e:b0" + }, + { + "id": "0x0002", + "name": "zone_status", + "zcl_type": "map16", + "unsupported": true + }, + { + "id": "0x0001", + "name": "zone_type", + "zcl_type": "enum16", + "value": 40 + } + ] + }, + { + "cluster_id": "0xfcc0", + "endpoint_attribute": "opple_cluster", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 19 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "LUMI", + "model": "lumi.sensor_smoke.acn03", + "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": "0x0402", + "input_clusters": [ + "0x0000", + "0x0500", + "0x0003", + "0x0001" + ], + "output_clusters": [ + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "zone_status" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-1-64704-linkage_alarm_state", + "migrate_unique_ids": [], + "platform": "binary_sensor", + "class_name": "AqaraLinkageAlarmState", + "translation_key": "linkage_alarm_state", + "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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "linkage_alarm_state" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-1-64704-self_test", + "migrate_unique_ids": [], + "platform": "button", + "class_name": "AqaraSelfTestButton", + "translation_key": "self_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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "attribute_name": "self_test", + "attribute_value": 1 + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02: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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 189, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02: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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 0, + "unit": "%", + "battery_size": "Unknown", + "battery_quantity": 1, + "battery_voltage": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02:30-1-64704-smoke_density_dbm", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "AqaraSmokeDensityDbm", + "translation_key": "smoke_density", + "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:41:b2:02:30", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": 3, + "unit": "dB/m" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:41:b2:02: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:41:b2:02:30", + "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/shelly-blu-motion-zb.json b/tests/data/devices/shelly-blu-motion-zb.json new file mode 100644 index 000000000..326efa7b0 --- /dev/null +++ b/tests/data/devices/shelly-blu-motion-zb.json @@ -0,0 +1,319 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:75:38:18:5f", + "nwk": "0x8D1F", + "manufacturer": "Shelly", + "model": "BLU Motion ZB", + "friendly_manufacturer": "Shelly", + "friendly_model": "BLU Motion ZB", + "name": "Shelly BLU Motion ZB", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 5264, + "power_source": "Battery or Unknown", + "lqi": 208, + "rssi": -48, + "last_seen": "2026-07-08T10:05:22.638946+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": "IAS_ZONE", + "id": 1026 + }, + "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 Motion ZB" + } + ] + }, + { + "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": "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": "0xfc21", + "endpoint_attribute": "manufacturer_specific", + "attributes": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Shelly", + "model": "BLU Motion ZB", + "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": "0x0402", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0500", + "0xfc21" + ], + "output_clusters": [ + "0x0003" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:38:18:5f-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:75:38:18:5f", + "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:75:38:18: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:75:38:18:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:38:18: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:75:38:18:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 208, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:38:18: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:75:38:18:5f", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -48, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:75:38:18: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:75:38:18: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": 3.3 + } + ] + }, + "neighbors": [], + "routes": [] +} \ No newline at end of file diff --git a/tests/data/devices/signify-netherlands-b-v-rwl022-0x02005501.json b/tests/data/devices/signify-netherlands-b-v-rwl022-0x02005501.json new file mode 100644 index 000000000..96eec60c9 --- /dev/null +++ b/tests/data/devices/signify-netherlands-b-v-rwl022-0x02005501.json @@ -0,0 +1,353 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e5:92:c2:0e", + "nwk": "0x93B2", + "manufacturer": "Signify Netherlands B.V.", + "model": "RWL022", + "friendly_manufacturer": "Signify Netherlands B.V.", + "friendly_model": "RWL022", + "name": "Signify Netherlands B.V. RWL022", + "quirk_applied": true, + "quirk_class": "zhaquirks.philips.rwl022:PhilipsRWL022", + "exposes_features": [], + "manufacturer_code": 4107, + "power_source": "Battery or Unknown", + "lqi": 28, + "rssi": -93, + "last_seen": "2026-07-24T10:08:41.559587+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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": 260, + "device_type": { + "name": "NON_COLOR_SCENE_CONTROLLER", + "id": 2096 + }, + "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": "RWL022" + }, + { + "id": "0x0031", + "name": "philips", + "zcl_type": "map16", + "value": 11 + } + ] + }, + { + "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": 31 + } + ] + }, + { + "cluster_id": "0x0003", + "endpoint_attribute": "identify", + "attributes": [] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + }, + { + "cluster_id": "0xfc00", + "endpoint_attribute": "philips_remote_cluster", + "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": [] + }, + { + "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": 33576193 + } + ] + }, + { + "cluster_id": "0x1000", + "endpoint_attribute": "lightlink", + "attributes": [] + } + ] + } + }, + "original_signature": { + "manufacturer": "Signify Netherlands B.V.", + "model": "RWL022", + "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": 4107, + "maximum_buffer_size": 82, + "maximum_incoming_transfer_size": 128, + "server_mask": 11264, + "maximum_outgoing_transfer_size": 128, + "descriptor_capability_field": 0 + }, + "endpoints": { + "1": { + "profile_id": "0x0104", + "device_type": "0x0830", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0xfc00", + "0x1000" + ], + "output_clusters": [ + "0x0019", + "0x0000", + "0x0003", + "0x0004", + "0x0006", + "0x0008", + "0x0005", + "0x1000" + ] + } + } + }, + "zha_lib_entities": { + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e5:92:c2:0e-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:e5:92:c2:0e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e5:92:c2:0e-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:e5:92:c2:0e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 28, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e5:92:c2:0e-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:e5:92:c2:0e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -93, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e5:92:c2:0e-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:e5:92:c2:0e", + "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.1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e5:92:c2:0e-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:e5:92:c2:0e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x02005501", + "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/somfy-ysia-variation-5c-0xffffffff.json b/tests/data/devices/somfy-ysia-variation-5c-0xffffffff.json new file mode 100644 index 000000000..1d34a63b5 --- /dev/null +++ b/tests/data/devices/somfy-ysia-variation-5c-0xffffffff.json @@ -0,0 +1,708 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:ec:84:26:cd", + "nwk": "0xCF2D", + "manufacturer": "SOMFY", + "model": "Ysia Variation 5C", + "friendly_manufacturer": "SOMFY", + "friendly_model": "Ysia Variation 5C", + "name": "SOMFY Ysia Variation 5C", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4640, + "power_source": "Battery or Unknown", + "lqi": 252, + "rssi": -37, + "last_seen": "2026-07-20T12:47:07.571183+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": 4640, + "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": [] + }, + { + "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": "0x0102", + "endpoint_attribute": "window_covering", + "attributes": [] + } + ] + }, + "2": { + "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": "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": [] + } + ] + }, + "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": "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": [] + } + ] + }, + "4": { + "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": "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": [] + } + ] + }, + "5": { + "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": "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": [] + } + ] + }, + "232": { + "profile_id": 260, + "device_type": { + "name": "CONFIGURATION_TOOL", + "id": 5 + }, + "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": 94 + }, + { + "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": [] + } + ], + "out_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [] + }, + { + "cluster_id": "0x0001", + "endpoint_attribute": "power", + "attributes": [] + }, + { + "cluster_id": "0x0019", + "endpoint_attribute": "ota", + "attributes": [ + { + "id": "0x0002", + "name": "current_file_version", + "zcl_type": "uint32", + "value": 4294967295 + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "SOMFY", + "model": "Ysia Variation 5C", + "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": 4640, + "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" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "5": { + "profile_id": "0x0104", + "device_type": "0x0203", + "input_clusters": [ + "0x0000", + "0x0003" + ], + "output_clusters": [ + "0x0003", + "0x0005", + "0x0006", + "0x0008", + "0x0102" + ] + }, + "232": { + "profile_id": "0x0104", + "device_type": "0x0005", + "input_clusters": [ + "0x0000", + "0x0001", + "0x0003", + "0x0020" + ], + "output_clusters": [ + "0x0000", + "0x0001", + "0x0019" + ] + } + } + }, + "zha_lib_entities": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-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:ec:84:26:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-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:ec:84:26:cd", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-3-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:ec:84:26:cd", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-4-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:ec:84:26:cd", + "endpoint_id": 4, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-5-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:ec:84:26:cd", + "endpoint_id": 5, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "on_off" + } + ], + "button": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26: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:ec:84:26:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26: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:ec:84:26:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 252, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26: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:ec:84:26:cd", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -37, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:ec:84:26:cd-232-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:ec:84:26:cd", + "endpoint_id": 232, + "available": true, + "group_id": null, + "native_value": 47.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:ec:84:26:cd-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:ec:84:26:cd", + "endpoint_id": 232, + "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/sonoff-mini-zb1gsp-0x00001102.json b/tests/data/devices/sonoff-mini-zb1gsp-0x00001102.json new file mode 100644 index 000000000..20eb63031 --- /dev/null +++ b/tests/data/devices/sonoff-mini-zb1gsp-0x00001102.json @@ -0,0 +1,883 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:43:a7:31:91", + "nwk": "0x34CF", + "manufacturer": "SONOFF", + "model": "MINI-ZB1GSP", + "friendly_manufacturer": "SONOFF", + "friendly_model": "MINI-ZB1GSP", + "name": "SONOFF MINI-ZB1GSP", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4742, + "power_source": "Mains", + "lqi": 72, + "rssi": -82, + "last_seen": "2026-07-27T10:00:30.409415+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": 1 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "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": 0 + }, + { + "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": 0 + }, + { + "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": 1 + }, + { + "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": -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": 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": 65535 + }, + { + "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": 65535 + }, + { + "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": "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": 4354 + } + ] + } + ] + }, + "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": "On", + "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": 1, + "available": true, + "group_id": null, + "native_value": 72, + "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": 1, + "available": true, + "group_id": null, + "native_value": -82, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "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": "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:43:a7:31:91", + "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: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": -1.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: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": "", + "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": "", + "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": 1 + } + ], + "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": "0x00001102", + "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-lqb7lcq9-ts011f-0x00000050.json b/tests/data/devices/tz3000-lqb7lcq9-ts011f-0x00000050.json new file mode 100644 index 000000000..66a4d0be8 --- /dev/null +++ b/tests/data/devices/tz3000-lqb7lcq9-ts011f-0x00000050.json @@ -0,0 +1,1114 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:65:2f:c0:ed", + "nwk": "0x9F29", + "manufacturer": "_TZ3000_lqb7lcq9", + "model": "TS011F", + "friendly_manufacturer": "_TZ3000_lqb7lcq9", + "friendly_model": "TS011F", + "name": "_TZ3000_lqb7lcq9 TS011F", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 76, + "rssi": null, + "last_seen": "2026-07-02T19:09:53.139829+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_PLUG_IN_UNIT", + "id": 266 + }, + "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_lqb7lcq9" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS011F" + }, + { + "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": 1 + }, + { + "id": "0x4001", + "name": "on_time", + "zcl_type": "uint16", + "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", + "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", + "value": 0 + }, + { + "id": "0x0301", + "name": "multiplier", + "zcl_type": "uint24", + "unsupported": true + }, + { + "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", + "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": "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": 80 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "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": "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 + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "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": "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 + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "out_clusters": [] + }, + "4": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "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": "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 + } + ] + }, + { + "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_lqb7lcq9", + "model": "TS011F", + "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": "0x010a", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xe000", + "0xe001", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "0xe001" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "0xe001" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "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:65:2f:c0: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:65:2f:c0:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0: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:65:2f:c0:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 76, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0: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:65:2f:c0:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0:ed-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:65:2f:c0:ed", + "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:65:2f:c0:ed-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:65:2f:c0:ed", + "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:65:2f:c0:ed-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:65:2f:c0:ed", + "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:65:2f:c0:ed-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:65:2f:c0:ed", + "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" + } + ], + "switch": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0:ed-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:65:2f:c0:ed", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0:ed-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:65:2f:c0:ed", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0:ed-3", + "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:65:2f:c0:ed", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0:ed-4", + "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:65:2f:c0:ed", + "endpoint_id": 4, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:65:2f:c0: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:65:2f:c0:ed", + "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-zxrfobzw-ts0002-0x00000053.json b/tests/data/devices/tz3000-zxrfobzw-ts0002-0x00000053.json new file mode 100644 index 000000000..533809693 --- /dev/null +++ b/tests/data/devices/tz3000-zxrfobzw-ts0002-0x00000053.json @@ -0,0 +1,576 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:d1:39:90:cc", + "nwk": "0x0B58", + "manufacturer": "_TZ3000_zxrfobzw", + "model": "TS0002", + "friendly_manufacturer": "_TZ3000_zxrfobzw", + "friendly_model": "TS0002", + "name": "_TZ3000_zxrfobzw TS0002", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts000x:Switch_2G_GPP", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 104, + "rssi": -74, + "last_seen": "2026-07-26T12:49:54.177395+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": 83 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3000_zxrfobzw" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS0002" + }, + { + "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": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "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": "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": 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": 83 + } + ] + } + ] + }, + "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": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "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", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": "tuya_external_switch_type", + "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_zxrfobzw", + "model": "TS0002", + "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", + "0xe000", + "0xe001", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "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:d1:39:90: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:d1:39:90:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:39:90:cc-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:d1:39:90:cc", + "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:d1:39:90:cc-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:d1:39:90:cc", + "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:d1:39:90:cc-1-6-backlight_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "TuyaBacklightModeSelectEntity", + "translation_key": "backlight_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:39:90:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "LightWhenOn", + "enum": "TuyaBacklightMode", + "options": [ + "Off", + "LightWhenOn", + "LightWhenOff" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:39:90:cc-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:d1:39:90:cc", + "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:d1:39:90: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:d1:39:90:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 104, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:39:90: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:d1:39:90:cc", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -74, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:d1:39:90: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:d1:39:90:cc", + "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/tz3210-6cmeijtd-ts011f-0x00000052.json b/tests/data/devices/tz3210-6cmeijtd-ts011f-0x00000052.json new file mode 100644 index 000000000..2698da29c --- /dev/null +++ b/tests/data/devices/tz3210-6cmeijtd-ts011f-0x00000052.json @@ -0,0 +1,1130 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:25:ac:49:ca", + "nwk": "0xE4DE", + "manufacturer": "_TZ3210_6cmeijtd", + "model": "TS011F", + "friendly_manufacturer": "_TZ3210_6cmeijtd", + "friendly_model": "TS011F", + "name": "_TZ3210_6cmeijtd TS011F", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.ts011f_plug:Plug_4AC_2USB_Metering", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 48, + "rssi": -88, + "last_seen": "2026-07-18T06:19:13.982637+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_PLUG_IN_UNIT", + "id": 266 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0001", + "name": "app_version", + "zcl_type": "uint8", + "value": 82 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3210_6cmeijtd" + }, + { + "id": "0x0005", + "name": "model", + "zcl_type": "string", + "value": "TS011F" + }, + { + "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": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "value": 1 + }, + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "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": 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", + "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": 13 + }, + { + "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": 227 + }, + { + "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": [] + } + ], + "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": 82 + } + ] + } + ] + }, + "2": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "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": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": "tuya_external_switch_type", + "attributes": [] + } + ], + "out_clusters": [] + }, + "3": { + "profile_id": 260, + "device_type": { + "name": "ON_OFF_PLUG_IN_UNIT", + "id": 266 + }, + "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": "0x8001", + "name": "backlight_mode", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x8000", + "name": "child_lock", + "zcl_type": "bool", + "unsupported": true + }, + { + "id": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 1 + }, + { + "id": "0x8002", + "name": "power_on_state", + "zcl_type": "enum8", + "unsupported": true + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": "tuya_external_switch_type", + "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_6cmeijtd", + "model": "TS011F", + "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": "0x010a", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0x0702", + "0x0b04", + "0xe000", + "0xe001", + "0x0000" + ], + "output_clusters": [ + "0x0019", + "0x000a" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "0xe001" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x010a", + "input_clusters": [ + "0x0004", + "0x0005", + "0x0006", + "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:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "select": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-1-6-backlight_mode", + "migrate_unique_ids": [], + "platform": "select", + "class_name": "TuyaBacklightModeSelectEntity", + "translation_key": "backlight_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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "current_option": "LightWhenOn", + "enum": "TuyaBacklightMode", + "options": [ + "Off", + "LightWhenOn", + "LightWhenOff" + ] + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-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:25:ac:49:ca", + "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:25:ac:49:ca-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:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 48, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-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:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -88, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.02, + "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:25:ac:49:ca-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:25:ac:49:ca", + "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:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.013, + "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:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 227.0, + "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:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-1-child_lock", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "TuyaChildLockSwitch", + "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:25:ac:49:ca", + "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": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-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:25:ac:49:ca", + "endpoint_id": 2, + "available": true, + "group_id": null, + "is_on": 1 + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-3", + "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:25:ac:49:ca", + "endpoint_id": 3, + "available": true, + "group_id": null, + "is_on": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:25:ac:49:ca-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:ac:49:ca", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000052", + "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-ya5d6wth-ts000f-0x00000066.json b/tests/data/devices/tz3218-ya5d6wth-ts000f-0x00000066.json new file mode 100644 index 000000000..4f07b7162 --- /dev/null +++ b/tests/data/devices/tz3218-ya5d6wth-ts000f-0x00000066.json @@ -0,0 +1,639 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:e0:ea:fe:6c", + "nwk": "0x9638", + "manufacturer": "_TZ3218_ya5d6wth", + "model": "TS000F", + "friendly_manufacturer": "_TZ3218_ya5d6wth", + "friendly_model": "TS000F", + "name": "_TZ3218_ya5d6wth TS000F", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 255, + "rssi": -37, + "last_seen": "2026-07-03T15:12:47.254352+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": 102 + }, + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZ3218_ya5d6wth" + }, + { + "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": "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": 102 + } + ] + } + ] + }, + "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": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "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": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "unsupported": true + } + ] + }, + { + "cluster_id": "0xe001", + "endpoint_attribute": null, + "attributes": [] + } + ], + "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": "0x0000", + "name": "on_off", + "zcl_type": "bool", + "value": 0 + }, + { + "id": "0x4003", + "name": "start_up_on_off", + "zcl_type": "enum8", + "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": "_TZ3218_ya5d6wth", + "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", + "0xe001", + "0xe000", + "0xef00" + ], + "output_clusters": [ + "0x000a", + "0x0019" + ] + }, + "2": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xe001" + ], + "output_clusters": [] + }, + "3": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "0xe001" + ], + "output_clusters": [] + }, + "4": { + "profile_id": "0x0104", + "device_type": "0x0100", + "input_clusters": [ + "0x0003", + "0x0004", + "0x0005", + "0x0006", + "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:e0:ea:fe:6c-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:ea:fe:6c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "light": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:ea:fe:6c-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:e0:ea:fe:6c", + "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:e0:ea:fe:6c-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:e0:ea:fe:6c", + "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:e0:ea:fe:6c-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:e0:ea:fe:6c", + "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:e0:ea:fe:6c-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:e0:ea:fe:6c", + "endpoint_id": 4, + "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:e0:ea:fe:6c-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:ea:fe:6c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:ea:fe:6c-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:ea:fe:6c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -37, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:e0:ea:fe:6c-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:ea:fe:6c", + "endpoint_id": 1, + "available": true, + "group_id": null, + "installed_version": "0x00000066", + "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-bvfld3xc-ts0601-0x0000004a.json b/tests/data/devices/tze204-bvfld3xc-ts0601-0x0000004a.json new file mode 100644 index 000000000..78004111a --- /dev/null +++ b/tests/data/devices/tze204-bvfld3xc-ts0601-0x0000004a.json @@ -0,0 +1,245 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:a9:ed:51:c4", + "nwk": "0x3EDD", + "manufacturer": "_TZE204_bvfld3xc", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_bvfld3xc", + "friendly_model": "TS0601", + "name": "_TZE204_bvfld3xc TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 228, + "rssi": -43, + "last_seen": "2026-07-27T00:37:29.195032+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_bvfld3xc" + }, + { + "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_bvfld3xc", + "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:a9:ed:51: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:a9:ed:51:c4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 228, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:ed:51: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:a9:ed:51:c4", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -43, + "suggested_display_precision": null, + "unit": "dBm" + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:a9:ed:51: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:a9:ed:51:c4", + "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-ztc6ggyl-ts0601.json b/tests/data/devices/tze204-ztc6ggyl-ts0601.json new file mode 100644 index 000000000..0e9e43547 --- /dev/null +++ b/tests/data/devices/tze204-ztc6ggyl-ts0601.json @@ -0,0 +1,519 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:14:5f:ce:2e", + "nwk": "0xA70C", + "manufacturer": "_TZE204_ztc6ggyl", + "model": "TS0601", + "friendly_manufacturer": "_TZE204_ztc6ggyl", + "friendly_model": "TS0601", + "name": "_TZE204_ztc6ggyl TS0601", + "quirk_applied": true, + "quirk_class": "zhaquirks.tuya.builder:(_TZE200_ar0slwnd / TS0601)", + "exposes_features": [], + "manufacturer_code": 4098, + "power_source": "Mains", + "lqi": 196, + "rssi": -62, + "last_seen": "2026-07-11T01:56:50.767524+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 + } + ] + }, + { + "cluster_id": "0x0004", + "endpoint_attribute": "groups", + "attributes": [] + }, + { + "cluster_id": "0x0005", + "endpoint_attribute": "scenes", + "attributes": [] + }, + { + "cluster_id": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0xfffd", + "name": "cluster_revision", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0004", + "name": "light_sensor_type", + "zcl_type": "enum8", + "value": 0 + }, + { + "id": "0x0002", + "name": "max_measured_value", + "zcl_type": "uint16", + "unsupported": true + }, + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 1.0 + }, + { + "id": "0x0001", + "name": "min_measured_value", + "zcl_type": "uint16", + "unsupported": true + } + ] + }, + { + "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": "0xef00", + "endpoint_attribute": "tuya_manufacturer", + "attributes": [ + { + "id": "0xef00", + "name": "mcu_version", + "zcl_type": "uint48", + "value": "1.0.2" + }, + { + "id": "0xef06", + "name": "self_test", + "zcl_type": "enum8", + "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", + "unsupported": true + } + ] + } + ] + } + }, + "original_signature": { + "manufacturer": "_TZE204_ztc6ggyl", + "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": { + "binary_sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "attribute_name": "occupancy" + } + ], + "number": [ + { + "fallback_name": "Maximum range", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-detection_distance_max", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "detection_distance_max", + "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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 9.0, + "native_min_value": 0.75, + "native_step": 0.75, + "native_unit_of_measurement": "m" + }, + { + "fallback_name": "Minimum range", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-detection_distance_min", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "detection_distance_min", + "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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 8.25, + "native_min_value": 0, + "native_step": 0.75, + "native_unit_of_measurement": "m" + }, + { + "fallback_name": "Motion sensitivity", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-move_sensitivity", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "move_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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 10, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": null + }, + { + "fallback_name": "Presence sensitivity", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-presence_sensitivity", + "migrate_unique_ids": [], + "platform": "number", + "class_name": "NumberConfigurationEntity", + "translation_key": "presence_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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "mode": "auto", + "native_max_value": 10, + "native_min_value": 0, + "native_step": 1, + "native_unit_of_measurement": null + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 196, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -62, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 1, + "suggested_display_precision": null, + "unit": "lx" + }, + { + "fallback_name": "Target distance", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-distance", + "migrate_unique_ids": [], + "platform": "sensor", + "class_name": "Sensor", + "translation_key": "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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": null, + "suggested_display_precision": null, + "unit": "m" + }, + { + "fallback_name": "Self test result", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": "CheckSuccess", + "suggested_display_precision": null, + "unit": null, + "options": [ + "Checking", + "CheckSuccess", + "CheckFailure", + "Others", + "CommFault", + "RadarFault" + ] + } + ], + "switch": [ + { + "fallback_name": "LED indicator", + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-1-find_switch", + "migrate_unique_ids": [], + "platform": "switch", + "class_name": "ConfigurableAttributeSwitch", + "translation_key": "led_indicator", + "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:14:5f:ce:2e", + "endpoint_id": 1, + "available": true, + "group_id": null, + "is_on": false, + "inverted": false, + "attribute_name": "find_switch", + "invert_attribute_name": null, + "force_inverted": false, + "off_value": 0, + "on_value": 1 + } + ], + "update": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:14:5f:ce:2e-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:5f:ce:2e", + "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/tze20c-tjz9ad5g-ts0601-0x00000046.json b/tests/data/devices/tze20c-tjz9ad5g-ts0601-0x00000046.json new file mode 100644 index 000000000..d21bb4e8d --- /dev/null +++ b/tests/data/devices/tze20c-tjz9ad5g-ts0601-0x00000046.json @@ -0,0 +1,469 @@ +{ + "version": 3, + "ieee": "ab:cd:ef:12:72:a0:5f:51", + "nwk": "0xB3F7", + "manufacturer": "_TZE20C_tjz9ad5g", + "model": "TS0601", + "friendly_manufacturer": "_TZE20C_tjz9ad5g", + "friendly_model": "TS0601", + "name": "_TZE20C_tjz9ad5g TS0601", + "quirk_applied": false, + "quirk_class": "zigpy.device.Device", + "exposes_features": [], + "manufacturer_code": 4417, + "power_source": "Mains", + "lqi": 255, + "rssi": -67, + "last_seen": "2026-07-09T05:44:12.728373+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": 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": "IAS_ZONE", + "id": 1026 + }, + "in_clusters": [ + { + "cluster_id": "0x0000", + "endpoint_attribute": "basic", + "attributes": [ + { + "id": "0x0004", + "name": "manufacturer", + "zcl_type": "string", + "value": "_TZE20C_tjz9ad5g" + }, + { + "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": "0x0400", + "endpoint_attribute": "illuminance", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "uint16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0402", + "endpoint_attribute": "temperature", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "zcl_type": "int16", + "value": 0 + } + ] + }, + { + "cluster_id": "0x0405", + "endpoint_attribute": "humidity", + "attributes": [ + { + "id": "0x0000", + "name": "measured_value", + "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": 32771 + } + ] + }, + { + "cluster_id": "0xe002", + "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": 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": "_TZE20C_tjz9ad5g", + "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": 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": "0x0402", + "input_clusters": [ + "0x0000", + "0x0003", + "0x0001", + "0x0500", + "0x0402", + "0x0405", + "0x0400", + "0xe002", + "0xef00" + ], + "output_clusters": [ + "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:72:a0:5f:51-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:72:a0:5f:51", + "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:72:a0:5f:51-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:72:a0:5f:51", + "endpoint_id": 1, + "available": true, + "group_id": null, + "command": "identify", + "args": [ + 5 + ], + "kwargs": {} + } + ], + "sensor": [ + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:a0:5f:51-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:a0:5f:51", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 255, + "suggested_display_precision": null, + "unit": null + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:a0:5f:51-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:a0:5f:51", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": -67, + "suggested_display_precision": null, + "unit": "dBm" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:a0:5f:51-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:72:a0:5f:51", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0, + "suggested_display_precision": null, + "unit": "lx" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:a0:5f:51-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:72:a0:5f:51", + "endpoint_id": 1, + "available": true, + "group_id": null, + "native_value": 0.0, + "suggested_display_precision": null, + "unit": "\u00b0C" + }, + { + "fallback_name": null, + "unique_id": "ab:cd:ef:12:72:a0:5f:51-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:72:a0:5f:51", + "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:72:a0:5f:51-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:a0:5f:51", + "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