1 """Support for Huawei LTE selects."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from functools
import partial
10 from huawei_lte_api.enums.net
import LTEBandEnum, NetworkBandEnum, NetworkModeEnum
13 DOMAIN
as SELECT_DOMAIN,
15 SelectEntityDescription,
25 from .const
import DOMAIN, KEY_NET_NET_MODE
26 from .entity
import HuaweiLteBaseEntityWithDevice
28 _LOGGER = logging.getLogger(__name__)
31 @dataclass(frozen=True, kw_only=True)
33 """Class describing Huawei LTE select entities."""
35 setter_fn: Callable[[str],
None]
40 config_entry: ConfigEntry,
41 async_add_entities: AddEntitiesCallback,
43 """Set up from config entry."""
44 router = hass.data[DOMAIN].routers[config_entry.entry_id]
45 selects: list[Entity] = []
49 entity_category=EntityCategory.CONFIG,
50 name=
"Preferred network mode",
51 translation_key=
"preferred_network_mode",
53 NetworkModeEnum.MODE_AUTO.value,
54 NetworkModeEnum.MODE_4G_3G_AUTO.value,
55 NetworkModeEnum.MODE_4G_2G_AUTO.value,
56 NetworkModeEnum.MODE_4G_ONLY.value,
57 NetworkModeEnum.MODE_3G_2G_AUTO.value,
58 NetworkModeEnum.MODE_3G_ONLY.value,
59 NetworkModeEnum.MODE_2G_ONLY.value,
62 router.client.net.set_net_mode,
70 entity_description=desc,
80 """Huawei LTE select entity."""
82 entity_description: HuaweiSelectEntityDescription
83 _raw_state: str |
None =
None
88 entity_description: HuaweiSelectEntityDescription,
104 """Change the selected option."""
109 """Return current option."""
114 return f
"{self.key}.{self.item}"
117 """Subscribe to needed data on add."""
119 self.
routerrouter.subscriptions[self.
keykey].append(f
"{SELECT_DOMAIN}/{self.item}")
122 """Unsubscribe from needed data on remove."""
124 self.
routerrouter.subscriptions[self.
keykey].
remove(f
"{SELECT_DOMAIN}/{self.item}")
131 _LOGGER.debug(
"%s[%s] not in data", self.
keykey, self.
itemitem)
str|None current_option(self)
None __init__(self, Router router, HuaweiSelectEntityDescription entity_description, str key, str item)
None select_option(self, str option)
str _device_unique_id(self)
None async_will_remove_from_hass(self)
None async_added_to_hass(self)
bool remove(self, _T matcher)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)