1 """Support for LaMetric sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from demetriek
import Device
12 SensorEntityDescription,
20 from .const
import DOMAIN
21 from .coordinator
import LaMetricDataUpdateCoordinator
22 from .entity
import LaMetricEntity
25 @dataclass(frozen=True, kw_only=True)
27 """Class describing LaMetric sensor entities."""
29 value_fn: Callable[[Device], int |
None]
35 translation_key=
"rssi",
36 entity_category=EntityCategory.DIAGNOSTIC,
37 entity_registry_enabled_default=
False,
38 native_unit_of_measurement=PERCENTAGE,
39 state_class=SensorStateClass.MEASUREMENT,
40 value_fn=
lambda device: device.wifi.rssi,
48 async_add_entities: AddEntitiesCallback,
50 """Set up LaMetric sensor based on a config entry."""
51 coordinator: LaMetricDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
54 coordinator=coordinator,
55 description=description,
57 for description
in SENSORS
62 """Representation of a LaMetric sensor."""
64 entity_description: LaMetricSensorEntityDescription
68 coordinator: LaMetricDataUpdateCoordinator,
69 description: LaMetricSensorEntityDescription,
71 """Initiate LaMetric sensor."""
74 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.data.serial_number}-{description.key}"
78 """Return the sensor value."""
int|None native_value(self)
None __init__(self, LaMetricDataUpdateCoordinator coordinator, LaMetricSensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)