1 """Switch entity for myUplink."""
6 from myuplink
import DevicePoint
14 from .
import MyUplinkConfigEntry, MyUplinkDataCoordinator
15 from .const
import F_SERIES
16 from .entity
import MyUplinkEntity
17 from .helpers
import find_matching_platform, skip_entity, transform_model_series
19 CATEGORY_BASED_DESCRIPTIONS: dict[str, dict[str, SwitchEntityDescription]] = {
23 translation_key=
"temporary_lux",
26 key=
"boost_ventilation",
27 translation_key=
"boost_ventilation",
33 translation_key=
"temporary_lux",
36 key=
"boost_ventilation",
37 translation_key=
"boost_ventilation",
44 """Get description for a device point.
47 1. Category specific prefix e.g "NIBEF"
50 prefix, _, _ = device_point.category.partition(
" ")
52 return CATEGORY_BASED_DESCRIPTIONS.get(prefix, {}).
get(device_point.parameter_id)
57 config_entry: MyUplinkConfigEntry,
58 async_add_entities: AddEntitiesCallback,
60 """Set up myUplink switch."""
61 entities: list[SwitchEntity] = []
62 coordinator = config_entry.runtime_data
65 for device_id, point_data
in coordinator.data.points.items():
66 for point_id, device_point
in point_data.items():
67 if skip_entity(device_point.category, device_point):
74 coordinator=coordinator,
76 device_point=device_point,
77 entity_description=description,
78 unique_id_suffix=point_id,
86 """Representation of a myUplink device point switch."""
90 coordinator: MyUplinkDataCoordinator,
92 device_point: DevicePoint,
93 entity_description: SwitchEntityDescription |
None,
94 unique_id_suffix: str,
96 """Initialize the switch."""
98 coordinator=coordinator,
100 unique_id_suffix=unique_id_suffix,
107 if entity_description
is not None:
112 """Switch state value."""
113 device_point = self.coordinator.data.points[self.
device_iddevice_id][self.
point_idpoint_id]
114 return int(device_point.value) != 0
117 """Turn on switch."""
121 """Turn off switch."""
125 """Set switch mode."""
127 await self.coordinator.api.async_set_device_points(
130 except aiohttp.ClientError
as err:
132 f
"Failed to set state for {self.entity_id}"
None __init__(self, MyUplinkDataCoordinator coordinator, str device_id, DevicePoint device_point, SwitchEntityDescription|None entity_description, str unique_id_suffix)
None _async_turn_switch(self, int mode)
None async_turn_off(self, **Any kwargs)
None async_turn_on(self, **Any kwargs)
None async_request_refresh(self)
web.Response get(self, web.Request request, str config_key)
str transform_model_series(str prefix)
bool skip_entity(str model, DevicePoint device_point)
Platform find_matching_platform(DevicePoint device_point, SensorEntityDescription|NumberEntityDescription|None description=None)
SwitchEntityDescription|None get_description(DevicePoint device_point)
None async_setup_entry(HomeAssistant hass, MyUplinkConfigEntry config_entry, AddEntitiesCallback async_add_entities)