Add info based sensors to Smlight integration (#125482)

* Move entity category to class

* improve type hints

* Regenerate sensor snapshots to remove some invalid entries

* Add info sensors that display various device settings/modes

* Add strings for info sensors

* Update sensor snapshot with new sensors

* Use StateType

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Use icon translations

* statetype

* drop ip sensor

* Lookup enum values before translating

* entities use options

* update options strings

strings

* lookup values from options

* update sensor snapshot

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
TimL 2024-09-13 21:36:54 +10:00 committed by GitHub
parent 5d9c986f87
commit 6aa07243cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 278 additions and 635 deletions

View file

@ -0,0 +1,15 @@
{
"entity": {
"sensor": {
"device_mode": {
"default": "mdi:connection"
},
"firmware_channel": {
"default": "mdi:update"
},
"zigbee_type": {
"default": "mdi:zigbee"
}
}
}
}

View file

@ -7,7 +7,7 @@ from dataclasses import dataclass
from datetime import datetime, timedelta
from itertools import chain
from pysmlight import Sensors
from pysmlight import Info, Sensors
from homeassistant.components.sensor import (
SensorDeviceClass,
@ -18,6 +18,7 @@ from homeassistant.components.sensor import (
from homeassistant.const import EntityCategory, UnitOfInformation, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.util.dt import utcnow
from . import SmConfigEntry
@ -30,11 +31,42 @@ from .entity import SmEntity
class SmSensorEntityDescription(SensorEntityDescription):
"""Class describing SMLIGHT sensor entities."""
entity_category = EntityCategory.DIAGNOSTIC
value_fn: Callable[[Sensors], float | None]
SENSORS = [
@dataclass(frozen=True, kw_only=True)
class SmInfoEntityDescription(SensorEntityDescription):
"""Class describing SMLIGHT information entities."""
value_fn: Callable[[Info], StateType]
INFO: list[SmInfoEntityDescription] = [
SmInfoEntityDescription(
key="device_mode",
translation_key="device_mode",
device_class=SensorDeviceClass.ENUM,
options=["eth", "wifi", "usb"],
value_fn=lambda x: x.coord_mode,
),
SmInfoEntityDescription(
key="firmware_channel",
translation_key="firmware_channel",
device_class=SensorDeviceClass.ENUM,
options=["dev", "release"],
value_fn=lambda x: x.fw_channel,
),
SmInfoEntityDescription(
key="zigbee_type",
translation_key="zigbee_type",
device_class=SensorDeviceClass.ENUM,
options=["coordinator", "router", "thread"],
value_fn=lambda x: x.zb_type,
),
]
SENSORS: list[SmSensorEntityDescription] = [
SmSensorEntityDescription(
key="core_temperature",
translation_key="core_temperature",
@ -71,7 +103,7 @@ SENSORS = [
),
]
UPTIME = [
UPTIME: list[SmSensorEntityDescription] = [
SmSensorEntityDescription(
key="core_uptime",
translation_key="core_uptime",
@ -99,6 +131,7 @@ async def async_setup_entry(
async_add_entities(
chain(
(SmInfoSensorEntity(coordinator, description) for description in INFO),
(SmSensorEntity(coordinator, description) for description in SENSORS),
(SmUptimeSensorEntity(coordinator, description) for description in UPTIME),
)
@ -109,6 +142,7 @@ class SmSensorEntity(SmEntity, SensorEntity):
"""Representation of a slzb sensor."""
entity_description: SmSensorEntityDescription
_attr_entity_category = EntityCategory.DIAGNOSTIC
def __init__(
self,
@ -122,11 +156,40 @@ class SmSensorEntity(SmEntity, SensorEntity):
self._attr_unique_id = f"{coordinator.unique_id}_{description.key}"
@property
def native_value(self) -> datetime | float | None:
def native_value(self) -> datetime | str | float | None:
"""Return the sensor value."""
return self.entity_description.value_fn(self.coordinator.data.sensors)
class SmInfoSensorEntity(SmEntity, SensorEntity):
"""Representation of a slzb info sensor."""
entity_description: SmInfoEntityDescription
_attr_entity_category = EntityCategory.DIAGNOSTIC
def __init__(
self,
coordinator: SmDataUpdateCoordinator,
description: SmInfoEntityDescription,
) -> None:
"""Initiate slzb sensor."""
super().__init__(coordinator)
self.entity_description = description
self._attr_unique_id = f"{coordinator.unique_id}_{description.key}"
@property
def native_value(self) -> StateType:
"""Return the sensor value."""
value = self.entity_description.value_fn(self.coordinator.data.info)
options = self.entity_description.options
if isinstance(value, int) and options is not None:
value = options[value] if 0 <= value < len(options) else None
return value
class SmUptimeSensorEntity(SmSensorEntity):
"""Representation of a slzb uptime sensor."""

View file

@ -68,6 +68,29 @@
},
"socket_uptime": {
"name": "Zigbee uptime"
},
"device_mode": {
"name": "Connection mode",
"state": {
"eth": "Ethernet",
"wifi": "Wi-Fi",
"usb": "USB"
}
},
"firmware_channel": {
"name": "Firmware channel",
"state": {
"dev": "Development",
"release": "Stable"
}
},
"zigbee_type": {
"name": "Zigbee type",
"state": {
"coordinator": "Coordinator",
"router": "Router",
"thread": "Thread"
}
}
},
"button": {

View file

@ -1,4 +1,62 @@
# serializer version: 1
# name: test_sensors[sensor.mock_title_connection_mode-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'eth',
'wifi',
'usb',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_title_connection_mode',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Connection mode',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'device_mode',
'unique_id': 'aa:bb:cc:dd:ee:ff_device_mode',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[sensor.mock_title_connection_mode-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Mock Title Connection mode',
'options': list([
'eth',
'wifi',
'usb',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.mock_title_connection_mode',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'eth',
})
# ---
# name: test_sensors[sensor.mock_title_core_chip_temp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -148,6 +206,62 @@
'state': '188',
})
# ---
# name: test_sensors[sensor.mock_title_firmware_channel-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'dev',
'release',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_title_firmware_channel',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Firmware channel',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'firmware_channel',
'unique_id': 'aa:bb:cc:dd:ee:ff_firmware_channel',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[sensor.mock_title_firmware_channel-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Mock Title Firmware channel',
'options': list([
'dev',
'release',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.mock_title_firmware_channel',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'dev',
})
# ---
# name: test_sensors[sensor.mock_title_ram_usage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -196,100 +310,6 @@
'state': '99',
})
# ---
# name: test_sensors[sensor.mock_title_timestamp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_title_timestamp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Timestamp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'core_uptime',
'unique_id': 'aa:bb:cc:dd:ee:ff_core_uptime',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[sensor.mock_title_timestamp-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Mock Title Timestamp',
}),
'context': <ANY>,
'entity_id': 'sensor.mock_title_timestamp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2024-06-25T02:51:15+00:00',
})
# ---
# name: test_sensors[sensor.mock_title_timestamp_2-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_title_timestamp_2',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Timestamp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'socket_uptime',
'unique_id': 'aa:bb:cc:dd:ee:ff_socket_uptime',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[sensor.mock_title_timestamp_2-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Mock Title Timestamp',
}),
'context': <ANY>,
'entity_id': 'sensor.mock_title_timestamp_2',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2024-06-30T23:57:53+00:00',
})
# ---
# name: test_sensors[sensor.mock_title_zigbee_chip_temp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -344,6 +364,64 @@
'state': '32.7',
})
# ---
# name: test_sensors[sensor.mock_title_zigbee_type-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'coordinator',
'router',
'thread',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_title_zigbee_type',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Zigbee type',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'zigbee_type',
'unique_id': 'aa:bb:cc:dd:ee:ff_zigbee_type',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[sensor.mock_title_zigbee_type-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Mock Title Zigbee type',
'options': list([
'coordinator',
'router',
'thread',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.mock_title_zigbee_type',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_sensors[sensor.mock_title_zigbee_uptime-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -391,539 +469,3 @@
'state': '2024-06-30T23:57:53+00:00',
})
# ---
# name: test_sensors[sensor.slzb_06_core_chip_temp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_core_chip_temp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Core chip temp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'core_temperature',
'unique_id': 'aa:bb:cc:dd:ee:ff_core_temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensors[sensor.slzb_06_core_chip_temp-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'slzb-06 Core chip temp',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_core_chip_temp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '35.0',
})
# ---
# name: test_sensors[sensor.slzb_06_core_chip_temp]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'slzb-06 Core chip temp',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_core_chip_temp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '35.0',
})
# ---
# name: test_sensors[sensor.slzb_06_core_chip_temp].1
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_core_chip_temp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Core chip temp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'core_temperature',
'unique_id': 'aa:bb:cc:dd:ee:ff_core_temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensors[sensor.slzb_06_core_chip_temp].2
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': 'http://slzb-06.local',
'connections': set({
tuple(
'mac',
'aa:bb:cc:dd:ee:ff',
),
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'SMLIGHT',
'model': 'SLZB-06p7',
'model_id': None,
'name': 'slzb-06',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'suggested_area': None,
'sw_version': 'core: v2.3.1.dev / zigbee: -1',
'via_device_id': None,
})
# ---
# name: test_sensors[sensor.slzb_06_filesystem_usage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_filesystem_usage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.DATA_SIZE: 'data_size'>,
'original_icon': None,
'original_name': 'Filesystem usage',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'fs_usage',
'unique_id': 'aa:bb:cc:dd:ee:ff_fs_usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
})
# ---
# name: test_sensors[sensor.slzb_06_filesystem_usage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'data_size',
'friendly_name': 'slzb-06 Filesystem usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_filesystem_usage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '188',
})
# ---
# name: test_sensors[sensor.slzb_06_filesystem_usage]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'data_size',
'friendly_name': 'slzb-06 Filesystem usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_filesystem_usage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '188',
})
# ---
# name: test_sensors[sensor.slzb_06_filesystem_usage].1
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_filesystem_usage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.DATA_SIZE: 'data_size'>,
'original_icon': None,
'original_name': 'Filesystem usage',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'fs_usage',
'unique_id': 'aa:bb:cc:dd:ee:ff_fs_usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
})
# ---
# name: test_sensors[sensor.slzb_06_filesystem_usage].2
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': 'http://slzb-06.local',
'connections': set({
tuple(
'mac',
'aa:bb:cc:dd:ee:ff',
),
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'SMLIGHT',
'model': 'SLZB-06p7',
'model_id': None,
'name': 'slzb-06',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'suggested_area': None,
'sw_version': 'core: v2.3.1.dev / zigbee: -1',
'via_device_id': None,
})
# ---
# name: test_sensors[sensor.slzb_06_ram_usage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_ram_usage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.DATA_SIZE: 'data_size'>,
'original_icon': None,
'original_name': 'RAM usage',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ram_usage',
'unique_id': 'aa:bb:cc:dd:ee:ff_ram_usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
})
# ---
# name: test_sensors[sensor.slzb_06_ram_usage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'data_size',
'friendly_name': 'slzb-06 RAM usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_ram_usage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '99',
})
# ---
# name: test_sensors[sensor.slzb_06_ram_usage]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'data_size',
'friendly_name': 'slzb-06 RAM usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_ram_usage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '99',
})
# ---
# name: test_sensors[sensor.slzb_06_ram_usage].1
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_ram_usage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.DATA_SIZE: 'data_size'>,
'original_icon': None,
'original_name': 'RAM usage',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ram_usage',
'unique_id': 'aa:bb:cc:dd:ee:ff_ram_usage',
'unit_of_measurement': <UnitOfInformation.KILOBYTES: 'kB'>,
})
# ---
# name: test_sensors[sensor.slzb_06_ram_usage].2
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': 'http://slzb-06.local',
'connections': set({
tuple(
'mac',
'aa:bb:cc:dd:ee:ff',
),
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'SMLIGHT',
'model': 'SLZB-06p7',
'model_id': None,
'name': 'slzb-06',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'suggested_area': None,
'sw_version': 'core: v2.3.1.dev / zigbee: -1',
'via_device_id': None,
})
# ---
# name: test_sensors[sensor.slzb_06_zigbee_chip_temp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_zigbee_chip_temp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Zigbee chip temp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'zigbee_temperature',
'unique_id': 'aa:bb:cc:dd:ee:ff_zigbee_temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensors[sensor.slzb_06_zigbee_chip_temp-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'slzb-06 Zigbee chip temp',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_zigbee_chip_temp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '32.7',
})
# ---
# name: test_sensors[sensor.slzb_06_zigbee_chip_temp]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'slzb-06 Zigbee chip temp',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.slzb_06_zigbee_chip_temp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '32.7',
})
# ---
# name: test_sensors[sensor.slzb_06_zigbee_chip_temp].1
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.slzb_06_zigbee_chip_temp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Zigbee chip temp',
'platform': 'smlight',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'zigbee_temperature',
'unique_id': 'aa:bb:cc:dd:ee:ff_zigbee_temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensors[sensor.slzb_06_zigbee_chip_temp].2
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': 'http://slzb-06.local',
'connections': set({
tuple(
'mac',
'aa:bb:cc:dd:ee:ff',
),
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'SMLIGHT',
'model': 'SLZB-06p7',
'model_id': None,
'name': 'slzb-06',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'suggested_area': None,
'sw_version': 'core: v2.3.1.dev / zigbee: -1',
'via_device_id': None,
})
# ---