Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Platform to retrieve Islamic prayer times information for Home Assistant."""
2 
3 from datetime import datetime
4 
6  SensorDeviceClass,
7  SensorEntity,
8  SensorEntityDescription,
9 )
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 from homeassistant.helpers.update_coordinator import CoordinatorEntity
14 
15 from . import IslamicPrayerTimesConfigEntry
16 from .const import DOMAIN, NAME
17 from .coordinator import IslamicPrayerDataUpdateCoordinator
18 
19 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
21  key="Fajr",
22  translation_key="fajr",
23  ),
25  key="Sunrise",
26  translation_key="sunrise",
27  ),
29  key="Dhuhr",
30  translation_key="dhuhr",
31  ),
33  key="Asr",
34  translation_key="asr",
35  ),
37  key="Maghrib",
38  translation_key="maghrib",
39  ),
41  key="Isha",
42  translation_key="isha",
43  ),
45  key="Midnight",
46  translation_key="midnight",
47  ),
48 )
49 
50 
52  hass: HomeAssistant,
53  config_entry: IslamicPrayerTimesConfigEntry,
54  async_add_entities: AddEntitiesCallback,
55 ) -> None:
56  """Set up the Islamic prayer times sensor platform."""
57 
58  coordinator = config_entry.runtime_data
60  IslamicPrayerTimeSensor(coordinator, description)
61  for description in SENSOR_TYPES
62  )
63 
64 
66  CoordinatorEntity[IslamicPrayerDataUpdateCoordinator], SensorEntity
67 ):
68  """Representation of an Islamic prayer time sensor."""
69 
70  _attr_device_class = SensorDeviceClass.TIMESTAMP
71  _attr_has_entity_name = True
72 
73  def __init__(
74  self,
75  coordinator: IslamicPrayerDataUpdateCoordinator,
76  description: SensorEntityDescription,
77  ) -> None:
78  """Initialize the Islamic prayer time sensor."""
79  super().__init__(coordinator)
80  self.entity_descriptionentity_description = description
81  self._attr_unique_id_attr_unique_id = f"{coordinator.config_entry.entry_id}-{description.key}"
82  self._attr_device_info_attr_device_info = DeviceInfo(
83  identifiers={(DOMAIN, coordinator.config_entry.entry_id)},
84  name=NAME,
85  entry_type=DeviceEntryType.SERVICE,
86  )
87 
88  @property
89  def native_value(self) -> datetime:
90  """Return the state of the sensor."""
91  return self.coordinator.data[self.entity_descriptionentity_description.key]
None __init__(self, IslamicPrayerDataUpdateCoordinator coordinator, SensorEntityDescription description)
Definition: sensor.py:77
None async_setup_entry(HomeAssistant hass, IslamicPrayerTimesConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:55