Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Platform for eq3 sensor entities."""
2 
3 from collections.abc import Callable
4 from dataclasses import dataclass
5 from datetime import datetime
6 from typing import TYPE_CHECKING
7 
8 from eq3btsmart.models import Status
9 
11  SensorDeviceClass,
12  SensorEntity,
13  SensorEntityDescription,
14 )
15 from homeassistant.components.sensor.const import SensorStateClass
16 from homeassistant.const import PERCENTAGE
17 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 
20 from . import Eq3ConfigEntry
21 from .const import ENTITY_KEY_AWAY_UNTIL, ENTITY_KEY_VALVE
22 from .entity import Eq3Entity
23 
24 
25 @dataclass(frozen=True, kw_only=True)
27  """Entity description for eq3 sensor entities."""
28 
29  value_func: Callable[[Status], int | datetime | None]
30 
31 
32 SENSOR_ENTITY_DESCRIPTIONS = [
34  key=ENTITY_KEY_VALVE,
35  translation_key=ENTITY_KEY_VALVE,
36  value_func=lambda status: status.valve,
37  native_unit_of_measurement=PERCENTAGE,
38  state_class=SensorStateClass.MEASUREMENT,
39  ),
41  key=ENTITY_KEY_AWAY_UNTIL,
42  translation_key=ENTITY_KEY_AWAY_UNTIL,
43  value_func=lambda status: (
44  status.away_until.value if status.away_until else None
45  ),
46  device_class=SensorDeviceClass.DATE,
47  ),
48 ]
49 
50 
52  hass: HomeAssistant,
53  entry: Eq3ConfigEntry,
54  async_add_entities: AddEntitiesCallback,
55 ) -> None:
56  """Set up the entry."""
57 
59  Eq3SensorEntity(entry, entity_description)
60  for entity_description in SENSOR_ENTITY_DESCRIPTIONS
61  )
62 
63 
65  """Base class for eq3 sensor entities."""
66 
67  entity_description: Eq3SensorEntityDescription
68 
69  def __init__(
70  self, entry: Eq3ConfigEntry, entity_description: Eq3SensorEntityDescription
71  ) -> None:
72  """Initialize the entity."""
73 
74  super().__init__(entry, entity_description.key)
75  self.entity_descriptionentity_description = entity_description
76 
77  @property
78  def native_value(self) -> int | datetime | None:
79  """Return the value reported by the sensor."""
80 
81  if TYPE_CHECKING:
82  assert self._thermostat_thermostat.status is not None
83 
84  return self.entity_descriptionentity_description.value_func(self._thermostat_thermostat.status)
None __init__(self, Eq3ConfigEntry entry, Eq3SensorEntityDescription entity_description)
Definition: sensor.py:71
None async_setup_entry(HomeAssistant hass, Eq3ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:55