Home Assistant Unofficial Reference 2024.12.1
cover.py
Go to the documentation of this file.
1 """Support for Gogogate2 garage Doors."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from ismartgate.common import (
8  AbstractDoor,
9  DoorStatus,
10  TransitionDoorStatus,
11  get_configured_doors,
12 )
13 
15  CoverDeviceClass,
16  CoverEntity,
17  CoverEntityFeature,
18 )
19 from homeassistant.config_entries import ConfigEntry
20 from homeassistant.core import HomeAssistant
21 from homeassistant.helpers.entity_platform import AddEntitiesCallback
22 
23 from .common import cover_unique_id, get_data_update_coordinator
24 from .coordinator import DeviceDataUpdateCoordinator
25 from .entity import GoGoGate2Entity
26 
27 
29  hass: HomeAssistant,
30  config_entry: ConfigEntry,
31  async_add_entities: AddEntitiesCallback,
32 ) -> None:
33  """Set up the config entry."""
34  data_update_coordinator = get_data_update_coordinator(hass, config_entry)
35 
37  [
38  DeviceCover(config_entry, data_update_coordinator, door)
39  for door in get_configured_doors(data_update_coordinator.data)
40  ]
41  )
42 
43 
45  """Cover entity for gogogate2."""
46 
47  _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
48 
49  def __init__(
50  self,
51  config_entry: ConfigEntry,
52  data_update_coordinator: DeviceDataUpdateCoordinator,
53  door: AbstractDoor,
54  ) -> None:
55  """Initialize the object."""
56  unique_id = cover_unique_id(config_entry, door)
57  super().__init__(config_entry, data_update_coordinator, door, unique_id)
58  self._attr_device_class_attr_device_class = (
59  CoverDeviceClass.GATE if self.doordoor.gate else CoverDeviceClass.GARAGE
60  )
61 
62  @property
63  def name(self) -> str | None:
64  """Return the name of the door."""
65  return self.doordoor.name
66 
67  @property
68  def is_closed(self) -> bool | None:
69  """Return true if cover is closed, else False."""
70  door_status = self.door_statusdoor_statusdoor_status
71  if door_status == DoorStatus.OPENED:
72  return False
73  if door_status == DoorStatus.CLOSED:
74  return True
75  return None
76 
77  @property
78  def is_closing(self) -> bool:
79  """Return if the cover is closing or not."""
80  return self.door_statusdoor_statusdoor_status == TransitionDoorStatus.CLOSING
81 
82  @property
83  def is_opening(self) -> bool:
84  """Return if the cover is opening or not."""
85  return self.door_statusdoor_statusdoor_status == TransitionDoorStatus.OPENING
86 
87  async def async_open_cover(self, **kwargs: Any) -> None:
88  """Open the door."""
89  await self._api_api.async_open_door(self._door_id_door_id)
90  await self.coordinator.async_refresh()
91 
92  async def async_close_cover(self, **kwargs: Any) -> None:
93  """Close the door."""
94  await self._api_api.async_close_door(self._door_id_door_id)
95  await self.coordinator.async_refresh()
None async_close_cover(self, **Any kwargs)
Definition: cover.py:92
None __init__(self, ConfigEntry config_entry, DeviceDataUpdateCoordinator data_update_coordinator, AbstractDoor door)
Definition: cover.py:54
DeviceDataUpdateCoordinator get_data_update_coordinator(HomeAssistant hass, ConfigEntry config_entry)
Definition: common.py:46
str cover_unique_id(ConfigEntry config_entry, AbstractDoor door)
Definition: common.py:77
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: cover.py:32