Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """The powerview integration base entity."""
2 
3 import logging
4 
5 from aiopvapi.resources.shade import BaseShade, ShadePosition
6 
8 from homeassistant.helpers.device_registry import DeviceInfo
9 from homeassistant.helpers.update_coordinator import CoordinatorEntity
10 
11 from .const import DOMAIN, MANUFACTURER
12 from .coordinator import PowerviewShadeUpdateCoordinator
13 from .model import PowerviewDeviceInfo
14 from .shade_data import PowerviewShadeData
15 
16 _LOGGER = logging.getLogger(__name__)
17 
18 
19 class HDEntity(CoordinatorEntity[PowerviewShadeUpdateCoordinator]):
20  """Base class for hunter douglas entities."""
21 
22  _attr_has_entity_name = True
23 
24  def __init__(
25  self,
26  coordinator: PowerviewShadeUpdateCoordinator,
27  device_info: PowerviewDeviceInfo,
28  room_name: str,
29  powerview_id: str,
30  ) -> None:
31  """Initialize the entity."""
32  super().__init__(coordinator)
33  self._room_name_room_name = room_name
34  self._attr_unique_id_attr_unique_id = f"{device_info.serial_number}_{powerview_id}"
35  self._device_info_device_info = device_info
36  self._configuration_url_configuration_url = self.coordinator.hub.url
37 
38  @property
39  def data(self) -> PowerviewShadeData:
40  """Return the PowerviewShadeData."""
41  return self.coordinator.data
42 
43  @property
44  def device_info(self) -> DeviceInfo:
45  """Return the device_info of the device."""
46  return DeviceInfo(
47  connections={(dr.CONNECTION_NETWORK_MAC, self._device_info_device_info.mac_address)},
48  identifiers={(DOMAIN, self._device_info_device_info.serial_number)},
49  manufacturer=MANUFACTURER,
50  model=self._device_info_device_info.model,
51  name=self._device_info_device_info.name,
52  sw_version=self._device_info_device_info.firmware,
53  configuration_url=self._configuration_url_configuration_url,
54  )
55 
56 
58  """Base class for hunter douglas shade entities."""
59 
60  def __init__(
61  self,
62  coordinator: PowerviewShadeUpdateCoordinator,
63  device_info: PowerviewDeviceInfo,
64  room_name: str,
65  shade: BaseShade,
66  shade_name: str,
67  ) -> None:
68  """Initialize the shade."""
69  super().__init__(coordinator, device_info, room_name, shade.id)
70  self._shade_name_shade_name = shade_name
71  self._shade_shade = shade
72  self._is_hard_wired_is_hard_wired = not shade.is_battery_powered()
73  self._configuration_url_configuration_url_configuration_url = shade.url
74 
75  @property
76  def positions(self) -> ShadePosition:
77  """Return the PowerviewShadeData."""
78  return self.datadatadata.get_shade_position(self._shade_shade.id)
79 
80  @property
81  def device_info(self) -> DeviceInfo:
82  """Return the device_info of the device."""
83  return DeviceInfo(
84  identifiers={(DOMAIN, self._shade_shade.id)},
85  name=self._shade_name_shade_name,
86  suggested_area=self._room_name_room_name,
87  manufacturer=MANUFACTURER,
88  model=self._shade_shade.type_name,
89  sw_version=self._shade_shade.firmware,
90  via_device=(DOMAIN, self._device_info_device_info.serial_number),
91  configuration_url=self._configuration_url_configuration_url_configuration_url,
92  )
None __init__(self, PowerviewShadeUpdateCoordinator coordinator, PowerviewDeviceInfo device_info, str room_name, str powerview_id)
Definition: entity.py:30
None __init__(self, PowerviewShadeUpdateCoordinator coordinator, PowerviewDeviceInfo device_info, str room_name, BaseShade shade, str shade_name)
Definition: entity.py:67