Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for LaMetric sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from demetriek import Device
9 
11  SensorEntity,
12  SensorEntityDescription,
13  SensorStateClass,
14 )
15 from homeassistant.config_entries import ConfigEntry
16 from homeassistant.const import PERCENTAGE, EntityCategory
17 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 
20 from .const import DOMAIN
21 from .coordinator import LaMetricDataUpdateCoordinator
22 from .entity import LaMetricEntity
23 
24 
25 @dataclass(frozen=True, kw_only=True)
27  """Class describing LaMetric sensor entities."""
28 
29  value_fn: Callable[[Device], int | None]
30 
31 
32 SENSORS = [
34  key="rssi",
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,
41  ),
42 ]
43 
44 
46  hass: HomeAssistant,
47  entry: ConfigEntry,
48  async_add_entities: AddEntitiesCallback,
49 ) -> None:
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,
56  )
57  for description in SENSORS
58  )
59 
60 
62  """Representation of a LaMetric sensor."""
63 
64  entity_description: LaMetricSensorEntityDescription
65 
66  def __init__(
67  self,
68  coordinator: LaMetricDataUpdateCoordinator,
69  description: LaMetricSensorEntityDescription,
70  ) -> None:
71  """Initiate LaMetric sensor."""
72  super().__init__(coordinator)
73  self.entity_descriptionentity_description = description
74  self._attr_unique_id_attr_unique_id = f"{coordinator.data.serial_number}-{description.key}"
75 
76  @property
77  def native_value(self) -> int | None:
78  """Return the sensor value."""
79  return self.entity_descriptionentity_description.value_fn(self.coordinator.data)
None __init__(self, LaMetricDataUpdateCoordinator coordinator, LaMetricSensorEntityDescription description)
Definition: sensor.py:70
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:49