Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """The Elexa Guardian integration."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import dataclass
6 
7 from homeassistant.config_entries import ConfigEntry
8 from homeassistant.helpers.device_registry import DeviceInfo
9 from homeassistant.helpers.entity import EntityDescription
10 from homeassistant.helpers.update_coordinator import CoordinatorEntity
11 
12 from .const import API_SYSTEM_DIAGNOSTICS, CONF_UID, DOMAIN
13 from .coordinator import GuardianDataUpdateCoordinator
14 
15 
16 class GuardianEntity(CoordinatorEntity[GuardianDataUpdateCoordinator]):
17  """Define a base Guardian entity."""
18 
19  _attr_has_entity_name = True
20 
21  def __init__(
22  self, coordinator: GuardianDataUpdateCoordinator, description: EntityDescription
23  ) -> None:
24  """Initialize."""
25  super().__init__(coordinator)
26 
27  self.entity_descriptionentity_description = description
28 
29 
31  """Define a Guardian paired sensor entity."""
32 
33  def __init__(
34  self,
35  entry: ConfigEntry,
36  coordinator: GuardianDataUpdateCoordinator,
37  description: EntityDescription,
38  ) -> None:
39  """Initialize."""
40  super().__init__(coordinator, description)
41 
42  paired_sensor_uid = coordinator.data["uid"]
43  self._attr_device_info_attr_device_info = DeviceInfo(
44  identifiers={(DOMAIN, paired_sensor_uid)},
45  manufacturer="Elexa",
46  model=coordinator.data["codename"],
47  name=f"Guardian paired sensor {paired_sensor_uid}",
48  via_device=(DOMAIN, entry.data[CONF_UID]),
49  )
50  self._attr_unique_id_attr_unique_id = f"{paired_sensor_uid}_{description.key}"
51 
52 
53 @dataclass(frozen=True, kw_only=True)
55  """Describe a Guardian valve controller entity."""
56 
57  api_category: str
58 
59 
61  """Define a Guardian valve controller entity."""
62 
63  def __init__(
64  self,
65  entry: ConfigEntry,
66  coordinators: dict[str, GuardianDataUpdateCoordinator],
67  description: ValveControllerEntityDescription,
68  ) -> None:
69  """Initialize."""
70  super().__init__(coordinators[description.api_category], description)
71 
72  self._diagnostics_coordinator_diagnostics_coordinator = coordinators[API_SYSTEM_DIAGNOSTICS]
73 
74  self._attr_device_info_attr_device_info = DeviceInfo(
75  identifiers={(DOMAIN, entry.data[CONF_UID])},
76  manufacturer="Elexa",
77  model=self._diagnostics_coordinator_diagnostics_coordinator.data["firmware"],
78  name=f"Guardian valve controller {entry.data[CONF_UID]}",
79  )
80  self._attr_unique_id_attr_unique_id = f"{entry.data[CONF_UID]}_{description.key}"
None __init__(self, GuardianDataUpdateCoordinator coordinator, EntityDescription description)
Definition: entity.py:23
None __init__(self, ConfigEntry entry, GuardianDataUpdateCoordinator coordinator, EntityDescription description)
Definition: entity.py:38
None __init__(self, ConfigEntry entry, dict[str, GuardianDataUpdateCoordinator] coordinators, ValveControllerEntityDescription description)
Definition: entity.py:68