Home Assistant Unofficial Reference 2024.12.1
cover.py
Go to the documentation of this file.
1 """Support for SCSGate covers."""
2 
3 from __future__ import annotations
4 
5 import logging
6 from typing import Any
7 
8 from scsgate.tasks import (
9  HaltRollerShutterTask,
10  LowerRollerShutterTask,
11  RaiseRollerShutterTask,
12 )
13 import voluptuous as vol
14 
16  PLATFORM_SCHEMA as COVER_PLATFORM_SCHEMA,
17  CoverEntity,
18 )
19 from homeassistant.const import CONF_DEVICES, CONF_NAME
20 from homeassistant.core import HomeAssistant
22 from homeassistant.helpers.entity_platform import AddEntitiesCallback
23 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
24 
25 from . import CONF_SCS_ID, DOMAIN, SCSGATE_SCHEMA
26 
27 PLATFORM_SCHEMA = COVER_PLATFORM_SCHEMA.extend(
28  {vol.Required(CONF_DEVICES): cv.schema_with_slug_keys(SCSGATE_SCHEMA)}
29 )
30 
31 
33  hass: HomeAssistant,
34  config: ConfigType,
35  add_entities: AddEntitiesCallback,
36  discovery_info: DiscoveryInfoType | None = None,
37 ) -> None:
38  """Set up the SCSGate cover."""
39  devices = config.get(CONF_DEVICES)
40  covers = []
41  logger = logging.getLogger(__name__)
42  scsgate = hass.data[DOMAIN]
43 
44  if devices:
45  for entity_info in devices.values():
46  if entity_info[CONF_SCS_ID] in scsgate.devices:
47  continue
48 
49  name = entity_info[CONF_NAME]
50  scs_id = entity_info[CONF_SCS_ID]
51 
52  logger.info("Adding %s scsgate.cover", name)
53 
54  cover = SCSGateCover(
55  name=name, scs_id=scs_id, logger=logger, scsgate=scsgate
56  )
57  scsgate.add_device(cover)
58  covers.append(cover)
59 
60  add_entities(covers)
61 
62 
64  """Representation of SCSGate cover."""
65 
66  _attr_should_poll = False
67 
68  def __init__(self, scs_id, name, logger, scsgate):
69  """Initialize the cover."""
70  self._scs_id_scs_id = scs_id
71  self._name_name = name
72  self._logger_logger = logger
73  self._scsgate_scsgate = scsgate
74 
75  @property
76  def scs_id(self):
77  """Return the SCSGate ID."""
78  return self._scs_id_scs_id
79 
80  @property
81  def name(self) -> str:
82  """Return the name of the cover."""
83  return self._name_name
84 
85  @property
86  def is_closed(self) -> None:
87  """Return if the cover is closed."""
88  return None
89 
90  def open_cover(self, **kwargs: Any) -> None:
91  """Move the cover."""
92  self._scsgate_scsgate.append_task(RaiseRollerShutterTask(target=self._scs_id_scs_id))
93 
94  def close_cover(self, **kwargs: Any) -> None:
95  """Move the cover down."""
96  self._scsgate_scsgate.append_task(LowerRollerShutterTask(target=self._scs_id_scs_id))
97 
98  def stop_cover(self, **kwargs: Any) -> None:
99  """Stop the cover."""
100  self._scsgate_scsgate.append_task(HaltRollerShutterTask(target=self._scs_id_scs_id))
101 
102  def process_event(self, message):
103  """Handle a SCSGate message related with this cover."""
104  self._logger_logger.debug("Cover %s, got message %s", self._scs_id_scs_id, message.toggled)
def __init__(self, scs_id, name, logger, scsgate)
Definition: cover.py:68
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: cover.py:37