Home Assistant Unofficial Reference 2024.12.1
cover.py
Go to the documentation of this file.
1 """Cover entity for Nice G.O."""
2 
3 from typing import Any
4 
5 from aiohttp import ClientError
6 from nice_go import ApiError
7 
9  CoverDeviceClass,
10  CoverEntity,
11  CoverEntityFeature,
12 )
13 from homeassistant.core import HomeAssistant
14 from homeassistant.exceptions import HomeAssistantError
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 from . import NiceGOConfigEntry
18 from .const import DOMAIN
19 from .entity import NiceGOEntity
20 
21 DEVICE_CLASSES = {
22  "WallStation": CoverDeviceClass.GARAGE,
23  "Mms100": CoverDeviceClass.GATE,
24 }
25 PARALLEL_UPDATES = 1
26 
27 
29  hass: HomeAssistant,
30  config_entry: NiceGOConfigEntry,
31  async_add_entities: AddEntitiesCallback,
32 ) -> None:
33  """Set up Nice G.O. cover."""
34  coordinator = config_entry.runtime_data
35 
37  NiceGOCoverEntity(coordinator, device_id, device_data.name)
38  for device_id, device_data in coordinator.data.items()
39  )
40 
41 
43  """Representation of a Nice G.O. cover."""
44 
45  _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
46  _attr_name = None
47 
48  @property
49  def device_class(self) -> CoverDeviceClass:
50  """Return the class of this device, from component DEVICE_CLASSES."""
51  return DEVICE_CLASSES.get(self.datadatadata.type, CoverDeviceClass.GARAGE)
52 
53  @property
54  def is_closed(self) -> bool:
55  """Return if cover is closed."""
56  return self.datadatadata.barrier_status == "closed"
57 
58  @property
59  def is_opened(self) -> bool:
60  """Return if cover is open."""
61  return self.datadatadata.barrier_status == "open"
62 
63  @property
64  def is_opening(self) -> bool:
65  """Return if cover is opening."""
66  return self.datadatadata.barrier_status == "opening"
67 
68  @property
69  def is_closing(self) -> bool:
70  """Return if cover is closing."""
71  return self.datadatadata.barrier_status == "closing"
72 
73  async def async_close_cover(self, **kwargs: Any) -> None:
74  """Close the garage door."""
75  if self.is_closedis_closedis_closed:
76  return
77 
78  try:
79  await self.coordinator.api.close_barrier(self._device_id_device_id)
80  except (ApiError, ClientError) as err:
81  raise HomeAssistantError(
82  translation_domain=DOMAIN,
83  translation_key="close_cover_error",
84  translation_placeholders={"exception": str(err)},
85  ) from err
86 
87  async def async_open_cover(self, **kwargs: Any) -> None:
88  """Open the garage door."""
89  if self.is_openedis_opened:
90  return
91 
92  try:
93  await self.coordinator.api.open_barrier(self._device_id_device_id)
94  except (ApiError, ClientError) as err:
95  raise HomeAssistantError(
96  translation_domain=DOMAIN,
97  translation_key="open_cover_error",
98  translation_placeholders={"exception": str(err)},
99  ) from err
None async_setup_entry(HomeAssistant hass, NiceGOConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: cover.py:32