Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Sensor entities for Tami4Edge."""
2 
3 import logging
4 
5 from Tami4EdgeAPI import Tami4EdgeAPI
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11  SensorStateClass,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import UnitOfVolume
15 from homeassistant.core import HomeAssistant, callback
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 from homeassistant.helpers.update_coordinator import CoordinatorEntity
18 
19 from .const import API, COORDINATOR, DOMAIN
20 from .coordinator import Tami4EdgeCoordinator
21 from .entity import Tami4EdgeBaseEntity
22 
23 _LOGGER = logging.getLogger(__name__)
24 
25 ENTITY_DESCRIPTIONS = [
27  key="uv_upcoming_replacement",
28  translation_key="uv_upcoming_replacement",
29  device_class=SensorDeviceClass.DATE,
30  ),
32  key="uv_installed",
33  translation_key="uv_installed",
34  ),
36  key="filter_upcoming_replacement",
37  translation_key="filter_upcoming_replacement",
38  device_class=SensorDeviceClass.DATE,
39  ),
41  key="filter_installed",
42  translation_key="filter_installed",
43  ),
45  key="filter_litters_passed",
46  translation_key="filter_litters_passed",
47  state_class=SensorStateClass.TOTAL,
48  device_class=SensorDeviceClass.WATER,
49  native_unit_of_measurement=UnitOfVolume.LITERS,
50  ),
51 ]
52 
53 
55  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
56 ) -> None:
57  """Perform the setup for Tami4Edge."""
58  data = hass.data[DOMAIN][entry.entry_id]
59  api: Tami4EdgeAPI = data[API]
60  coordinator: Tami4EdgeCoordinator = data[COORDINATOR]
61 
64  coordinator=coordinator,
65  api=api,
66  entity_description=entity_description,
67  )
68  for entity_description in ENTITY_DESCRIPTIONS
69  )
70 
71 
73  Tami4EdgeBaseEntity,
74  CoordinatorEntity[Tami4EdgeCoordinator],
75  SensorEntity,
76 ):
77  """Representation of the entity."""
78 
79  def __init__(
80  self,
81  coordinator: Tami4EdgeCoordinator,
82  api: Tami4EdgeAPI,
83  entity_description: SensorEntityDescription,
84  ) -> None:
85  """Initialize the Tami4Edge sensor entity."""
86  Tami4EdgeBaseEntity.__init__(self, api, entity_description)
87  CoordinatorEntity.__init__(self, coordinator)
88  self._update_attr_update_attr()
89 
90  def _update_attr(self) -> None:
91  self._attr_native_value_attr_native_value = getattr(
92  self.coordinator.data, self.entity_descriptionentity_description.key
93  )
94 
95  @callback
96  def _handle_coordinator_update(self) -> None:
97  """Handle updated data from the coordinator."""
98  self._update_attr_update_attr()
99  self.async_write_ha_stateasync_write_ha_state()
None __init__(self, Tami4EdgeCoordinator coordinator, Tami4EdgeAPI api, SensorEntityDescription entity_description)
Definition: sensor.py:84
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:56