1 """Support for Modern Forms switches."""
3 from __future__
import annotations
12 from .
import modernforms_exception_handler
13 from .const
import DOMAIN
14 from .coordinator
import ModernFormsDataUpdateCoordinator
15 from .entity
import ModernFormsDeviceEntity
21 async_add_entities: AddEntitiesCallback,
23 """Set up Modern Forms switch based on a config entry."""
24 coordinator: ModernFormsDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
34 """Defines a Modern Forms switch."""
40 coordinator: ModernFormsDataUpdateCoordinator,
43 """Initialize Modern Forms switch."""
45 super().
__init__(entry_id=entry_id, coordinator=coordinator)
46 self.
_attr_unique_id_attr_unique_id = f
"{self.coordinator.data.info.mac_address}_{self._key}"
50 """Defines a Modern Forms Away mode switch."""
52 _attr_translation_key =
"away_mode"
55 self, entry_id: str, coordinator: ModernFormsDataUpdateCoordinator
57 """Initialize Modern Forms Away mode switch."""
59 coordinator=coordinator,
66 """Return the state of the switch."""
67 return bool(self.coordinator.data.state.away_mode_enabled)
69 @modernforms_exception_handler
71 """Turn off the Modern Forms Away mode switch."""
72 await self.coordinator.modern_forms.away(away=
False)
74 @modernforms_exception_handler
76 """Turn on the Modern Forms Away mode switch."""
77 await self.coordinator.modern_forms.away(away=
True)
81 """Defines a Modern Forms Adaptive Learning switch."""
83 _attr_translation_key =
"adaptive_learning"
86 self, entry_id: str, coordinator: ModernFormsDataUpdateCoordinator
88 """Initialize Modern Forms Adaptive Learning switch."""
90 coordinator=coordinator,
92 key=
"adaptive_learning",
97 """Return the state of the switch."""
98 return bool(self.coordinator.data.state.adaptive_learning_enabled)
100 @modernforms_exception_handler
102 """Turn off the Modern Forms Adaptive Learning switch."""
103 await self.coordinator.modern_forms.adaptive_learning(adaptive_learning=
False)
105 @modernforms_exception_handler
107 """Turn on the Modern Forms Adaptive Learning switch."""
108 await self.coordinator.modern_forms.adaptive_learning(adaptive_learning=
True)