Home Assistant Unofficial Reference 2024.12.1
switch.py
Go to the documentation of this file.
1 """Support for Modern Forms switches."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.switch import SwitchEntity
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from . import modernforms_exception_handler
13 from .const import DOMAIN
14 from .coordinator import ModernFormsDataUpdateCoordinator
15 from .entity import ModernFormsDeviceEntity
16 
17 
19  hass: HomeAssistant,
20  entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up Modern Forms switch based on a config entry."""
24  coordinator: ModernFormsDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
25 
26  switches = [
27  ModernFormsAwaySwitch(entry.entry_id, coordinator),
28  ModernFormsAdaptiveLearningSwitch(entry.entry_id, coordinator),
29  ]
30  async_add_entities(switches)
31 
32 
34  """Defines a Modern Forms switch."""
35 
36  def __init__(
37  self,
38  *,
39  entry_id: str,
40  coordinator: ModernFormsDataUpdateCoordinator,
41  key: str,
42  ) -> None:
43  """Initialize Modern Forms switch."""
44  self._key_key = key
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}"
47 
48 
50  """Defines a Modern Forms Away mode switch."""
51 
52  _attr_translation_key = "away_mode"
53 
54  def __init__(
55  self, entry_id: str, coordinator: ModernFormsDataUpdateCoordinator
56  ) -> None:
57  """Initialize Modern Forms Away mode switch."""
58  super().__init__(
59  coordinator=coordinator,
60  entry_id=entry_id,
61  key="away_mode",
62  )
63 
64  @property
65  def is_on(self) -> bool:
66  """Return the state of the switch."""
67  return bool(self.coordinator.data.state.away_mode_enabled)
68 
69  @modernforms_exception_handler
70  async def async_turn_off(self, **kwargs: Any) -> None:
71  """Turn off the Modern Forms Away mode switch."""
72  await self.coordinator.modern_forms.away(away=False)
73 
74  @modernforms_exception_handler
75  async def async_turn_on(self, **kwargs: Any) -> None:
76  """Turn on the Modern Forms Away mode switch."""
77  await self.coordinator.modern_forms.away(away=True)
78 
79 
81  """Defines a Modern Forms Adaptive Learning switch."""
82 
83  _attr_translation_key = "adaptive_learning"
84 
85  def __init__(
86  self, entry_id: str, coordinator: ModernFormsDataUpdateCoordinator
87  ) -> None:
88  """Initialize Modern Forms Adaptive Learning switch."""
89  super().__init__(
90  coordinator=coordinator,
91  entry_id=entry_id,
92  key="adaptive_learning",
93  )
94 
95  @property
96  def is_on(self) -> bool:
97  """Return the state of the switch."""
98  return bool(self.coordinator.data.state.adaptive_learning_enabled)
99 
100  @modernforms_exception_handler
101  async def async_turn_off(self, **kwargs: Any) -> None:
102  """Turn off the Modern Forms Adaptive Learning switch."""
103  await self.coordinator.modern_forms.adaptive_learning(adaptive_learning=False)
104 
105  @modernforms_exception_handler
106  async def async_turn_on(self, **kwargs: Any) -> None:
107  """Turn on the Modern Forms Adaptive Learning switch."""
108  await self.coordinator.modern_forms.adaptive_learning(adaptive_learning=True)
None __init__(self, str entry_id, ModernFormsDataUpdateCoordinator coordinator)
Definition: switch.py:87
None __init__(self, str entry_id, ModernFormsDataUpdateCoordinator coordinator)
Definition: switch.py:56
None __init__(self, *str entry_id, ModernFormsDataUpdateCoordinator coordinator, str key)
Definition: switch.py:42
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: switch.py:22