1 """Support for HomematicIP Cloud switches."""
3 from __future__
import annotations
7 from homematicip.aio.device
import (
9 AsyncBrandSwitchMeasuring,
12 AsyncFullFlushInputSwitch,
13 AsyncFullFlushSwitchMeasuring,
16 AsyncOpenCollector8Module,
18 AsyncPlugableSwitchMeasuring,
19 AsyncPrintedCircuitBoardSwitch2,
20 AsyncPrintedCircuitBoardSwitchBattery,
23 from homematicip.aio.group
import AsyncExtendedLinkedSwitchingGroup, AsyncSwitchingGroup
30 from .const
import DOMAIN
31 from .entity
import ATTR_GROUP_MEMBER_UNREACHABLE, HomematicipGenericEntity
32 from .hap
import HomematicipHAP
37 config_entry: ConfigEntry,
38 async_add_entities: AddEntitiesCallback,
40 """Set up the HomematicIP switch from a config entry."""
41 hap = hass.data[DOMAIN][config_entry.unique_id]
42 entities: list[HomematicipGenericEntity] = [
44 for group
in hap.home.groups
45 if isinstance(group, (AsyncExtendedLinkedSwitchingGroup, AsyncSwitchingGroup))
47 for device
in hap.home.devices:
48 if isinstance(device, AsyncBrandSwitchMeasuring):
54 device, (AsyncPlugableSwitchMeasuring, AsyncFullFlushSwitchMeasuring)
57 elif isinstance(device, AsyncWiredSwitch8):
60 for channel
in range(1, 9)
62 elif isinstance(device, AsyncDinRailSwitch):
64 elif isinstance(device, AsyncDinRailSwitch4):
67 for channel
in range(1, 5)
73 AsyncPrintedCircuitBoardSwitchBattery,
74 AsyncFullFlushInputSwitch,
78 elif isinstance(device, AsyncOpenCollector8Module):
81 for channel
in range(1, 9)
87 AsyncPrintedCircuitBoardSwitch2,
94 for channel
in range(1, 3)
101 """Representation of the HomematicIP multi switch."""
108 is_multi_channel=
True,
110 """Initialize the multi switch device."""
112 hap, device, channel=channel, is_multi_channel=is_multi_channel
117 """Return true if switch is on."""
118 return self.
_device_device.functionalChannels[self.
_channel_channel].on
121 """Turn the switch on."""
125 """Turn the switch off."""
130 """Representation of the HomematicIP switch."""
132 def __init__(self, hap: HomematicipHAP, device) ->
None:
133 """Initialize the switch device."""
134 super().
__init__(hap, device, is_multi_channel=
False)
138 """Representation of the HomematicIP switching group."""
140 def __init__(self, hap: HomematicipHAP, device, post: str =
"Group") ->
None:
141 """Initialize switching group."""
142 device.modelType = f
"HmIP-{post}"
147 """Return true if group is on."""
152 """Switch-Group available."""
161 """Return the state attributes of the switch-group."""
162 state_attr = super().extra_state_attributes
164 if self.
_device_device.unreach:
165 state_attr[ATTR_GROUP_MEMBER_UNREACHABLE] =
True
170 """Turn the group on."""
174 """Turn the group off."""
179 """Representation of the HomematicIP measuring switch."""
None __init__(self, HomematicipHAP hap, device, str post="Group")
None async_turn_off(self, **Any kwargs)
dict[str, Any] extra_state_attributes(self)
None async_turn_on(self, **Any kwargs)
None async_turn_off(self, **Any kwargs)
None __init__(self, HomematicipHAP hap, device, channel=1, is_multi_channel=True)
None async_turn_on(self, **Any kwargs)
None __init__(self, HomematicipHAP hap, device)
None turn_off(self, **Any kwargs)
None turn_on(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)