1 """Support for ADS covers."""
3 from __future__
import annotations
8 import voluptuous
as vol
12 DEVICE_CLASSES_SCHEMA,
13 PLATFORM_SCHEMA
as COVER_PLATFORM_SCHEMA,
24 from .const
import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE
25 from .entity
import AdsEntity
26 from .hub
import AdsHub
28 DEFAULT_NAME =
"ADS Cover"
30 CONF_ADS_VAR_SET_POS =
"adsvar_set_position"
31 CONF_ADS_VAR_OPEN =
"adsvar_open"
32 CONF_ADS_VAR_CLOSE =
"adsvar_close"
33 CONF_ADS_VAR_STOP =
"adsvar_stop"
34 CONF_ADS_VAR_POSITION =
"adsvar_position"
36 STATE_KEY_POSITION =
"position"
38 PLATFORM_SCHEMA = COVER_PLATFORM_SCHEMA.extend(
40 vol.Required(CONF_ADS_VAR): cv.string,
41 vol.Optional(CONF_ADS_VAR_POSITION): cv.string,
42 vol.Optional(CONF_ADS_VAR_SET_POS): cv.string,
43 vol.Optional(CONF_ADS_VAR_CLOSE): cv.string,
44 vol.Optional(CONF_ADS_VAR_OPEN): cv.string,
45 vol.Optional(CONF_ADS_VAR_STOP): cv.string,
46 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
47 vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
55 add_entities: AddEntitiesCallback,
56 discovery_info: DiscoveryInfoType |
None =
None,
58 """Set up the cover platform for ADS."""
59 ads_hub = hass.data[DATA_ADS]
61 ads_var_is_closed: str = config[CONF_ADS_VAR]
62 ads_var_position: str |
None = config.get(CONF_ADS_VAR_POSITION)
63 ads_var_pos_set: str |
None = config.get(CONF_ADS_VAR_SET_POS)
64 ads_var_open: str |
None = config.get(CONF_ADS_VAR_OPEN)
65 ads_var_close: str |
None = config.get(CONF_ADS_VAR_CLOSE)
66 ads_var_stop: str |
None = config.get(CONF_ADS_VAR_STOP)
67 name: str = config[CONF_NAME]
68 device_class: CoverDeviceClass |
None = config.get(CONF_DEVICE_CLASS)
88 """Representation of ADS cover."""
93 ads_var_is_closed: str,
94 ads_var_position: str |
None,
95 ads_var_pos_set: str |
None,
96 ads_var_open: str |
None,
97 ads_var_close: str |
None,
98 ads_var_stop: str |
None,
100 device_class: CoverDeviceClass |
None,
102 """Initialize AdsCover entity."""
103 super().
__init__(ads_hub, name, ads_var_is_closed)
105 if ads_var_position
is not None:
107 elif ads_var_pos_set
is not None:
109 elif ads_var_open
is not None:
112 self._state_dict[STATE_KEY_POSITION] =
None
120 CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
122 if ads_var_stop
is not None:
124 if ads_var_pos_set
is not None:
128 """Register device notification."""
129 if self.
_ads_var_ads_var
is not None:
139 """Return if the cover is closed."""
140 if self.
_ads_var_ads_var
is not None:
141 return self._state_dict[STATE_KEY_STATE]
143 return self._state_dict[STATE_KEY_POSITION] == 0
148 """Return current position of cover."""
149 return self._state_dict[STATE_KEY_POSITION]
152 """Fire the stop action."""
157 """Set cover position."""
158 position = kwargs[ATTR_POSITION]
160 self.
_ads_hub_ads_hub.write_by_name(
165 """Move the cover up."""
172 """Move the cover down."""
180 """Return False if state has not been updated yet."""
183 self._state_dict[STATE_KEY_STATE]
is not None
184 or self._state_dict[STATE_KEY_POSITION]
is not None
None close_cover(self, **Any kwargs)
None open_cover(self, **Any kwargs)
bool|None is_closed(self)
None __init__(self, AdsHub ads_hub, str ads_var_is_closed, str|None ads_var_position, str|None ads_var_pos_set, str|None ads_var_open, str|None ads_var_close, str|None ads_var_stop, str name, CoverDeviceClass|None device_class)
None async_added_to_hass(self)
None set_cover_position(self, **Any kwargs)
None stop_cover(self, **Any kwargs)
None async_initialize_device(self, str ads_var, type plctype, str state_key=STATE_KEY_STATE, int|None factor=None)
None set_cover_position(self, **Any kwargs)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)