Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Twente Milieu sensors."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import dataclass
6 from datetime import date
7 
8 from twentemilieu import WasteType
9 
11  SensorDeviceClass,
12  SensorEntity,
13  SensorEntityDescription,
14 )
15 from homeassistant.config_entries import ConfigEntry
16 from homeassistant.const import CONF_ID
17 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 
20 from .const import DOMAIN
21 from .entity import TwenteMilieuEntity
22 
23 
24 @dataclass(frozen=True, kw_only=True)
26  """Describe an Twente Milieu sensor."""
27 
28  waste_type: WasteType
29 
30 
31 SENSORS: tuple[TwenteMilieuSensorDescription, ...] = (
33  key="tree",
34  translation_key="christmas_tree_pickup",
35  waste_type=WasteType.TREE,
36  device_class=SensorDeviceClass.DATE,
37  ),
39  key="Non-recyclable",
40  translation_key="non_recyclable_waste_pickup",
41  waste_type=WasteType.NON_RECYCLABLE,
42  device_class=SensorDeviceClass.DATE,
43  ),
45  key="Organic",
46  translation_key="organic_waste_pickup",
47  waste_type=WasteType.ORGANIC,
48  device_class=SensorDeviceClass.DATE,
49  ),
51  key="Paper",
52  translation_key="paper_waste_pickup",
53  waste_type=WasteType.PAPER,
54  device_class=SensorDeviceClass.DATE,
55  ),
57  key="Plastic",
58  translation_key="packages_waste_pickup",
59  waste_type=WasteType.PACKAGES,
60  device_class=SensorDeviceClass.DATE,
61  ),
62 )
63 
64 
66  hass: HomeAssistant,
67  entry: ConfigEntry,
68  async_add_entities: AddEntitiesCallback,
69 ) -> None:
70  """Set up Twente Milieu sensor based on a config entry."""
72  TwenteMilieuSensor(entry, description) for description in SENSORS
73  )
74 
75 
77  """Defines a Twente Milieu sensor."""
78 
79  entity_description: TwenteMilieuSensorDescription
80 
81  def __init__(
82  self,
83  entry: ConfigEntry,
84  description: TwenteMilieuSensorDescription,
85  ) -> None:
86  """Initialize the Twente Milieu entity."""
87  super().__init__(entry)
88  self.entity_descriptionentity_description = description
89  self._attr_unique_id_attr_unique_id = f"{DOMAIN}_{entry.data[CONF_ID]}_{description.key}"
90 
91  @property
92  def native_value(self) -> date | None:
93  """Return the state of the sensor."""
94  if not (dates := self.coordinator.data[self.entity_descriptionentity_description.waste_type]):
95  return None
96  return dates[0]
None __init__(self, ConfigEntry entry, TwenteMilieuSensorDescription description)
Definition: sensor.py:85
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:69