Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Steamist sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from aiosteamist import SteamistStatus
9 
11  SensorDeviceClass,
12  SensorEntity,
13  SensorEntityDescription,
14  SensorStateClass,
15 )
16 from homeassistant.config_entries import ConfigEntry
17 from homeassistant.const import UnitOfTemperature, UnitOfTime
18 from homeassistant.core import HomeAssistant
19 from homeassistant.helpers.entity_platform import AddEntitiesCallback
20 
21 from .const import DOMAIN
22 from .coordinator import SteamistDataUpdateCoordinator
23 from .entity import SteamistEntity
24 
25 _KEY_MINUTES_REMAIN = "minutes_remain"
26 _KEY_TEMP = "temp"
27 
28 UNIT_MAPPINGS = {
29  "C": UnitOfTemperature.CELSIUS,
30  "F": UnitOfTemperature.FAHRENHEIT,
31 }
32 
33 
34 @dataclass(frozen=True, kw_only=True)
36  """Describes a Steamist sensor entity."""
37 
38  value_fn: Callable[[SteamistStatus], int | None]
39 
40 
41 SENSORS: tuple[SteamistSensorEntityDescription, ...] = (
43  key=_KEY_MINUTES_REMAIN,
44  translation_key="steam_minutes_remain",
45  native_unit_of_measurement=UnitOfTime.MINUTES,
46  value_fn=lambda status: status.minutes_remain,
47  ),
49  key=_KEY_TEMP,
50  translation_key="steam_temperature",
51  device_class=SensorDeviceClass.TEMPERATURE,
52  state_class=SensorStateClass.MEASUREMENT,
53  value_fn=lambda status: status.temp,
54  ),
55 )
56 
57 
59  hass: HomeAssistant,
60  config_entry: ConfigEntry,
61  async_add_entities: AddEntitiesCallback,
62 ) -> None:
63  """Set up sensors."""
64  coordinator: SteamistDataUpdateCoordinator = hass.data[DOMAIN][
65  config_entry.entry_id
66  ]
68  [
69  SteamistSensorEntity(coordinator, config_entry, description)
70  for description in SENSORS
71  ]
72  )
73 
74 
76  """Representation of a Steamist steam switch."""
77 
78  entity_description: SteamistSensorEntityDescription
79 
80  def __init__(
81  self,
82  coordinator: SteamistDataUpdateCoordinator,
83  entry: ConfigEntry,
84  description: SteamistSensorEntityDescription,
85  ) -> None:
86  """Initialize the sensor entity."""
87  super().__init__(coordinator, entry, description)
88  if description.key == _KEY_TEMP:
89  self._attr_native_unit_of_measurement_attr_native_unit_of_measurement = UNIT_MAPPINGS[
90  self._status_status.temp_units
91  ]
92 
93  @property
94  def native_value(self) -> int | None:
95  """Return the native value of the sensor."""
96  return self.entity_descriptionentity_description.value_fn(self._status_status)
None __init__(self, SteamistDataUpdateCoordinator coordinator, ConfigEntry entry, SteamistSensorEntityDescription description)
Definition: sensor.py:85
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:62