Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Rova garbage calendar."""
2 
3 from __future__ import annotations
4 
5 from datetime import datetime
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 from homeassistant.helpers.update_coordinator import CoordinatorEntity
17 
18 from .const import DOMAIN
19 from .coordinator import RovaCoordinator
20 
21 ISSUE_PLACEHOLDER = {"url": "/config/integrations/dashboard/add?domain=rova"}
22 
23 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
25  key="gft",
26  translation_key="bio",
27  ),
29  key="papier",
30  translation_key="paper",
31  ),
33  key="pmd",
34  translation_key="plastic",
35  ),
37  key="restafval",
38  translation_key="residual",
39  ),
40 )
41 
42 
44  hass: HomeAssistant,
45  entry: ConfigEntry,
46  async_add_entities: AddEntitiesCallback,
47 ) -> None:
48  """Add Rova entry."""
49  coordinator: RovaCoordinator = hass.data[DOMAIN][entry.entry_id]
50 
51  assert entry.unique_id
52  unique_id = entry.unique_id
53 
55  RovaSensor(unique_id, description, coordinator) for description in SENSOR_TYPES
56  )
57 
58 
59 class RovaSensor(CoordinatorEntity[RovaCoordinator], SensorEntity):
60  """Representation of a Rova sensor."""
61 
62  _attr_device_class = SensorDeviceClass.TIMESTAMP
63  _attr_has_entity_name = True
64 
65  def __init__(
66  self,
67  unique_id: str,
68  description: SensorEntityDescription,
69  coordinator: RovaCoordinator,
70  ) -> None:
71  """Initialize the sensor."""
72  super().__init__(coordinator)
73  self.entity_descriptionentity_description = description
74  self._attr_unique_id_attr_unique_id = f"{unique_id}_{description.key}"
75  self._attr_device_info_attr_device_info = DeviceInfo(
76  identifiers={(DOMAIN, unique_id)},
77  entry_type=DeviceEntryType.SERVICE,
78  )
79 
80  @property
81  def native_value(self) -> datetime | None:
82  """Return the state of the sensor."""
83  return self.coordinator.data.get(self.entity_descriptionentity_description.key)
None __init__(self, str unique_id, SensorEntityDescription description, RovaCoordinator coordinator)
Definition: sensor.py:70
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:47