1 """Support for Acmeda Roller Blinds."""
3 from __future__
import annotations
16 from .
import AcmedaConfigEntry
17 from .const
import ACMEDA_HUB_UPDATE
18 from .entity
import AcmedaEntity
19 from .helpers
import async_add_acmeda_entities
24 config_entry: AcmedaConfigEntry,
25 async_add_entities: AddEntitiesCallback,
27 """Set up the Acmeda Rollers from a config entry."""
28 hub = config_entry.runtime_data
30 current: set[int] = set()
33 def async_add_acmeda_covers() -> None:
35 hass, AcmedaCover, config_entry, current, async_add_entities
38 hub.cleanup_callbacks.append(
41 ACMEDA_HUB_UPDATE.format(config_entry.entry_id),
42 async_add_acmeda_covers,
48 """Representation of an Acmeda cover device."""
54 """Return the current position of the roller blind.
56 None is unknown, 0 is closed, 100 is fully open.
59 if self.
rollerroller.type != 7:
60 position = 100 - self.
rollerroller.closed_percent
65 """Return the current tilt of the roller blind.
67 None is unknown, 0 is closed, 100 is fully open.
70 if self.
rollerroller.type
in (7, 10):
71 position = 100 - self.
rollerroller.closed_percent
76 """Flag supported features."""
79 supported_features |= (
80 CoverEntityFeature.OPEN
81 | CoverEntityFeature.CLOSE
82 | CoverEntityFeature.STOP
83 | CoverEntityFeature.SET_POSITION
86 supported_features |= (
87 CoverEntityFeature.OPEN_TILT
88 | CoverEntityFeature.CLOSE_TILT
89 | CoverEntityFeature.STOP_TILT
90 | CoverEntityFeature.SET_TILT_POSITION
93 return supported_features
97 """Return if the cover is closed."""
98 return self.
rollerroller.closed_percent == 100
101 """Close the roller."""
102 await self.
rollerroller.move_down()
105 """Open the roller."""
106 await self.
rollerroller.move_up()
109 """Stop the roller."""
110 await self.
rollerroller.move_stop()
113 """Move the roller shutter to a specific position."""
114 await self.
rollerroller.move_to(100 - kwargs[ATTR_POSITION])
117 """Close the roller."""
118 await self.
rollerroller.move_down()
121 """Open the roller."""
122 await self.
rollerroller.move_up()
125 """Stop the roller."""
126 await self.
rollerroller.move_stop()
129 """Tilt the roller shutter to a specific position."""
130 await self.
rollerroller.move_to(100 - kwargs[ATTR_POSITION])
None async_close_cover(self, **Any kwargs)
int|None current_cover_position(self)
None async_close_cover_tilt(self, **Any kwargs)
None async_stop_cover(self, **Any kwargs)
CoverEntityFeature supported_features(self)
None async_open_cover(self, **Any kwargs)
None async_set_cover_tilt_position(self, **Any kwargs)
int|None current_cover_tilt_position(self)
None async_stop_cover_tilt(self, **Any kwargs)
None async_set_cover_position(self, **Any kwargs)
None async_open_cover_tilt(self, **Any kwargs)
int|None current_cover_tilt_position(self)
current_cover_tilt_position
int|None current_cover_position(self)
None async_setup_entry(HomeAssistant hass, AcmedaConfigEntry config_entry, AddEntitiesCallback async_add_entities)
None async_add_acmeda_entities(HomeAssistant hass, type entity_class, AcmedaConfigEntry config_entry, set[int] current, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)