Home Assistant Unofficial Reference 2024.12.1
cover.py
Go to the documentation of this file.
1 """Cover entity for Linear Garage Doors."""
2 
3 from datetime import timedelta
4 from typing import Any
5 
7  CoverDeviceClass,
8  CoverEntity,
9  CoverEntityFeature,
10 )
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from .const import DOMAIN
16 from .coordinator import LinearUpdateCoordinator
17 from .entity import LinearEntity
18 
19 SUPPORTED_SUBDEVICES = ["GDO"]
20 PARALLEL_UPDATES = 1
21 SCAN_INTERVAL = timedelta(seconds=10)
22 
23 
25  hass: HomeAssistant,
26  config_entry: ConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up Linear Garage Door cover."""
30  coordinator: LinearUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
31 
33  LinearCoverEntity(coordinator, device_id, device_data.name, sub_device_id)
34  for device_id, device_data in coordinator.data.items()
35  for sub_device_id in device_data.subdevices
36  if sub_device_id in SUPPORTED_SUBDEVICES
37  )
38 
39 
41  """Representation of a Linear cover."""
42 
43  _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
44  _attr_name = None
45  _attr_device_class = CoverDeviceClass.GARAGE
46 
47  @property
48  def is_closed(self) -> bool:
49  """Return if cover is closed."""
50  return self.sub_devicesub_device.get("Open_B") == "false"
51 
52  @property
53  def is_opened(self) -> bool:
54  """Return if cover is open."""
55  return self.sub_devicesub_device.get("Open_B") == "true"
56 
57  @property
58  def is_opening(self) -> bool:
59  """Return if cover is opening."""
60  return self.sub_devicesub_device.get("Opening_P") == "0"
61 
62  @property
63  def is_closing(self) -> bool:
64  """Return if cover is closing."""
65  return self.sub_devicesub_device.get("Opening_P") == "100"
66 
67  async def async_close_cover(self, **kwargs: Any) -> None:
68  """Close the garage door."""
69  if self.is_closedis_closedis_closed:
70  return
71 
72  await self.coordinator.execute(
73  lambda linear: linear.operate_device(
74  self._device_id_device_id, self._sub_device_id_sub_device_id, "Close"
75  )
76  )
77 
78  async def async_open_cover(self, **kwargs: Any) -> None:
79  """Open the garage door."""
80  if self.is_openedis_opened:
81  return
82 
83  await self.coordinator.execute(
84  lambda linear: linear.operate_device(
85  self._device_id_device_id, self._sub_device_id_sub_device_id, "Open"
86  )
87  )
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: cover.py:28
def execute(hass, filename, source, data=None, return_response=False)
Definition: __init__.py:194