Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base entity for the Tailwind integration."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.helpers.device_registry import DeviceInfo
6 from homeassistant.helpers.entity import EntityDescription
7 from homeassistant.helpers.update_coordinator import CoordinatorEntity
8 
9 from .const import DOMAIN
10 from .coordinator import TailwindDataUpdateCoordinator
11 
12 
13 class TailwindEntity(CoordinatorEntity[TailwindDataUpdateCoordinator]):
14  """Defines an Tailwind entity."""
15 
16  _attr_has_entity_name = True
17 
18  def __init__(
19  self,
20  coordinator: TailwindDataUpdateCoordinator,
21  entity_description: EntityDescription,
22  ) -> None:
23  """Initialize an Tailwind entity."""
24  super().__init__(coordinator)
25  self.entity_descriptionentity_description = entity_description
26  self._attr_unique_id_attr_unique_id = f"{coordinator.data.device_id}-{entity_description.key}"
27  self._attr_device_info_attr_device_info = DeviceInfo(
28  identifiers={(DOMAIN, coordinator.data.device_id)},
29  )
30 
31 
32 class TailwindDoorEntity(CoordinatorEntity[TailwindDataUpdateCoordinator]):
33  """Defines an Tailwind door entity.
34 
35  These are the entities that belong to a specific garage door opener
36  that is connected via the Tailwind controller.
37  """
38 
39  _attr_has_entity_name = True
40 
41  def __init__(
42  self,
43  coordinator: TailwindDataUpdateCoordinator,
44  door_id: str,
45  entity_description: EntityDescription | None = None,
46  ) -> None:
47  """Initialize an Tailwind door entity."""
48  super().__init__(coordinator)
49  self.door_iddoor_id = door_id
50 
51  self._attr_unique_id_attr_unique_id = f"{coordinator.data.device_id}-{door_id}"
52  if entity_description:
53  self.entity_descriptionentity_description = entity_description
54  self._attr_unique_id_attr_unique_id = (
55  f"{coordinator.data.device_id}-{door_id}-{entity_description.key}"
56  )
57 
58  self._attr_device_info_attr_device_info = DeviceInfo(
59  identifiers={(DOMAIN, f"{coordinator.data.device_id}-{door_id}")},
60  via_device=(DOMAIN, coordinator.data.device_id),
61  name=f"Door {coordinator.data.doors[door_id].index+1}",
62  manufacturer="Tailwind",
63  model=coordinator.data.product,
64  sw_version=coordinator.data.firmware_version,
65  )
None __init__(self, TailwindDataUpdateCoordinator coordinator, str door_id, EntityDescription|None entity_description=None)
Definition: entity.py:46
None __init__(self, TailwindDataUpdateCoordinator coordinator, EntityDescription entity_description)
Definition: entity.py:22