Home Assistant Unofficial Reference 2024.12.1
cover.py
Go to the documentation of this file.
1 """Support for Vera cover - curtains, rollershutters etc."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 import pyvera as veraApi
8 
9 from homeassistant.components.cover import ATTR_POSITION, ENTITY_ID_FORMAT, CoverEntity
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import Platform
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from .common import ControllerData, get_controller_data
16 from .entity import VeraEntity
17 
18 
20  hass: HomeAssistant,
21  entry: ConfigEntry,
22  async_add_entities: AddEntitiesCallback,
23 ) -> None:
24  """Set up the sensor config entry."""
25  controller_data = get_controller_data(hass, entry)
27  [
28  VeraCover(device, controller_data)
29  for device in controller_data.devices[Platform.COVER]
30  ],
31  True,
32  )
33 
34 
35 class VeraCover(VeraEntity[veraApi.VeraCurtain], CoverEntity):
36  """Representation a Vera Cover."""
37 
38  def __init__(
39  self, vera_device: veraApi.VeraCurtain, controller_data: ControllerData
40  ) -> None:
41  """Initialize the Vera device."""
42  VeraEntity.__init__(self, vera_device, controller_data)
43  self.entity_identity_identity_id = ENTITY_ID_FORMAT.format(self.vera_id)
44 
45  @property
46  def current_cover_position(self) -> int:
47  """Return current position of cover.
48 
49  0 is closed, 100 is fully open.
50  """
51  position = self.vera_device.get_level()
52  if position <= 5:
53  return 0
54  if position >= 95:
55  return 100
56  return position
57 
58  def set_cover_position(self, **kwargs: Any) -> None:
59  """Move the cover to a specific position."""
60  self.vera_device.set_level(kwargs.get(ATTR_POSITION))
61  self.schedule_update_ha_stateschedule_update_ha_state()
62 
63  @property
64  def is_closed(self) -> bool | None:
65  """Return if the cover is closed."""
68  return None
69 
70  def open_cover(self, **kwargs: Any) -> None:
71  """Open the cover."""
72  self.vera_device.open()
73  self.schedule_update_ha_stateschedule_update_ha_state()
74 
75  def close_cover(self, **kwargs: Any) -> None:
76  """Close the cover."""
77  self.vera_device.close()
78  self.schedule_update_ha_stateschedule_update_ha_state()
79 
80  def stop_cover(self, **kwargs: Any) -> None:
81  """Stop the cover."""
82  self.vera_device.stop()
83  self.schedule_update_ha_stateschedule_update_ha_state()
None __init__(self, veraApi.VeraCurtain vera_device, ControllerData controller_data)
Definition: cover.py:40
None close_cover(self, **Any kwargs)
Definition: cover.py:75
None set_cover_position(self, **Any kwargs)
Definition: cover.py:58
None open_cover(self, **Any kwargs)
Definition: cover.py:70
None stop_cover(self, **Any kwargs)
Definition: cover.py:80
None schedule_update_ha_state(self, bool force_refresh=False)
Definition: entity.py:1244
None open(self, **Any kwargs)
Definition: lock.py:86
ControllerData get_controller_data(HomeAssistant hass, ConfigEntry config_entry)
Definition: common.py:40
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: cover.py:23