1 """Platform for eq3 sensor entities."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
5 from datetime
import datetime
6 from typing
import TYPE_CHECKING
8 from eq3btsmart.models
import Status
13 SensorEntityDescription,
20 from .
import Eq3ConfigEntry
21 from .const
import ENTITY_KEY_AWAY_UNTIL, ENTITY_KEY_VALVE
22 from .entity
import Eq3Entity
25 @dataclass(frozen=True, kw_only=True)
27 """Entity description for eq3 sensor entities."""
29 value_func: Callable[[Status], int | datetime |
None]
32 SENSOR_ENTITY_DESCRIPTIONS = [
35 translation_key=ENTITY_KEY_VALVE,
36 value_func=
lambda status: status.valve,
37 native_unit_of_measurement=PERCENTAGE,
38 state_class=SensorStateClass.MEASUREMENT,
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
46 device_class=SensorDeviceClass.DATE,
53 entry: Eq3ConfigEntry,
54 async_add_entities: AddEntitiesCallback,
56 """Set up the entry."""
60 for entity_description
in SENSOR_ENTITY_DESCRIPTIONS
65 """Base class for eq3 sensor entities."""
67 entity_description: Eq3SensorEntityDescription
70 self, entry: Eq3ConfigEntry, entity_description: Eq3SensorEntityDescription
72 """Initialize the entity."""
74 super().
__init__(entry, entity_description.key)
79 """Return the value reported by the sensor."""
82 assert self.
_thermostat_thermostat.status
is not None
int|datetime|None native_value(self)
None __init__(self, Eq3ConfigEntry entry, Eq3SensorEntityDescription entity_description)
None async_setup_entry(HomeAssistant hass, Eq3ConfigEntry entry, AddEntitiesCallback async_add_entities)