1 """Select entity for myUplink."""
3 from typing
import cast
5 from aiohttp
import ClientError
6 from myuplink
import DevicePoint
14 from .
import MyUplinkConfigEntry, MyUplinkDataCoordinator
15 from .entity
import MyUplinkEntity
16 from .helpers
import find_matching_platform, skip_entity
21 config_entry: MyUplinkConfigEntry,
22 async_add_entities: AddEntitiesCallback,
24 """Set up myUplink select."""
25 entities: list[SelectEntity] = []
26 coordinator: MyUplinkDataCoordinator = config_entry.runtime_data
29 for device_id, point_data
in coordinator.data.points.items():
30 for point_id, device_point
in point_data.items():
31 if skip_entity(device_point.category, device_point):
37 coordinator=coordinator,
39 device_point=device_point,
40 entity_description=description,
41 unique_id_suffix=point_id,
49 """Representation of a myUplink select entity."""
53 coordinator: MyUplinkDataCoordinator,
55 device_point: DevicePoint,
56 entity_description: SelectEntityDescription |
None,
57 unique_id_suffix: str,
59 """Initialize the select."""
61 coordinator=coordinator,
63 unique_id_suffix=unique_id_suffix,
67 self.
point_idpoint_id = device_point.parameter_id
70 self.
_attr_options_attr_options = [x[
"text"].capitalize()
for x
in device_point.enum_values]
72 str(
int(x[
"value"])): x[
"text"].capitalize()
73 for x
in device_point.enum_values
79 """Retrieve currently selected option."""
80 device_point = self.coordinator.data.points[self.
device_iddevice_id][self.
point_idpoint_id]
81 value =
int(cast(int, device_point.value_t))
85 """Set the current option."""
87 await self.coordinator.api.async_set_device_points(
90 except ClientError
as err:
92 f
"Failed to set new option {self.options_rev[option]} for {self.point_id}/{self.entity_id}"
None __init__(self, MyUplinkDataCoordinator coordinator, str device_id, DevicePoint device_point, SelectEntityDescription|None entity_description, str unique_id_suffix)
str|None current_option(self)
None async_select_option(self, str option)
None async_request_refresh(self)
web.Response get(self, web.Request request, str config_key)
bool skip_entity(str model, DevicePoint device_point)
Platform find_matching_platform(DevicePoint device_point, SensorEntityDescription|NumberEntityDescription|None description=None)
None async_setup_entry(HomeAssistant hass, MyUplinkConfigEntry config_entry, AddEntitiesCallback async_add_entities)