Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Common code for GogoGate2 component."""
2 
3 from __future__ import annotations
4 
5 from ismartgate.common import AbstractDoor, get_door_by_id
6 
7 from homeassistant.config_entries import ConfigEntry
8 from homeassistant.const import CONF_IP_ADDRESS
9 from homeassistant.helpers.device_registry import DeviceInfo
10 from homeassistant.helpers.update_coordinator import CoordinatorEntity
11 
12 from .const import DOMAIN, MANUFACTURER
13 from .coordinator import DeviceDataUpdateCoordinator
14 
15 
16 class GoGoGate2Entity(CoordinatorEntity[DeviceDataUpdateCoordinator]):
17  """Base class for gogogate2 entities."""
18 
19  def __init__(
20  self,
21  config_entry: ConfigEntry,
22  data_update_coordinator: DeviceDataUpdateCoordinator,
23  door: AbstractDoor,
24  unique_id: str,
25  ) -> None:
26  """Initialize gogogate2 base entity."""
27  super().__init__(data_update_coordinator)
28  self._config_entry_config_entry = config_entry
29  self._door_door = door
30  self._door_id_door_id = door.door_id
31  self._api_api = data_update_coordinator.api
32  self._attr_unique_id_attr_unique_id = unique_id
33 
34  @property
35  def door(self) -> AbstractDoor:
36  """Return the door object."""
37  door = get_door_by_id(self._door_door.door_id, self.coordinator.data)
38  self._door_door = door or self._door_door
39  return self._door_door
40 
41  @property
42  def door_status(self) -> AbstractDoor:
43  """Return the door with status."""
44  data = self.coordinator.data
45  door_with_statuses = self._api_api.async_get_door_statuses_from_info(data)
46  return door_with_statuses[self._door_id_door_id]
47 
48  @property
49  def device_info(self) -> DeviceInfo:
50  """Device info for the controller."""
51  data = self.coordinator.data
52  if data.remoteaccessenabled:
53  configuration_url = f"https://{data.remoteaccess}"
54  else:
55  configuration_url = f"http://{self._config_entry.data[CONF_IP_ADDRESS]}"
56  return DeviceInfo(
57  configuration_url=configuration_url,
58  identifiers={(DOMAIN, str(self._config_entry_config_entry.unique_id))},
59  name=self._config_entry_config_entry.title,
60  manufacturer=MANUFACTURER,
61  model=data.model,
62  sw_version=data.firmwareversion,
63  )
64 
65  @property
67  """Return the state attributes."""
68  return {"door_id": self._door_id_door_id}
None __init__(self, ConfigEntry config_entry, DeviceDataUpdateCoordinator data_update_coordinator, AbstractDoor door, str unique_id)
Definition: entity.py:25