1 """Vodafone Station buttons."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from typing
import Any, Final
12 ButtonEntityDescription,
20 from .const
import _LOGGER, DOMAIN
21 from .coordinator
import VodafoneStationRouter
24 @dataclass(frozen=True, kw_only=True)
26 """Vodafone Station entity description."""
28 press_action: Callable[[VodafoneStationRouter], Any]
29 is_suitable: Callable[[dict], bool]
32 BUTTON_TYPES: Final = (
35 device_class=ButtonDeviceClass.RESTART,
36 entity_category=EntityCategory.CONFIG,
37 press_action=
lambda coordinator: coordinator.api.restart_router(),
38 is_suitable=
lambda _:
True,
42 translation_key=
"dsl_reconnect",
43 device_class=ButtonDeviceClass.RESTART,
44 entity_category=EntityCategory.DIAGNOSTIC,
45 press_action=
lambda coordinator: coordinator.api.restart_connection(
"dsl"),
46 is_suitable=
lambda info: info.get(
"dsl_ready") ==
"1",
50 translation_key=
"fiber_reconnect",
51 device_class=ButtonDeviceClass.RESTART,
52 entity_category=EntityCategory.DIAGNOSTIC,
53 press_action=
lambda coordinator: coordinator.api.restart_connection(
"fiber"),
54 is_suitable=
lambda info: info.get(
"fiber_ready") ==
"1",
57 key=
"vf_internet_key_online_since",
58 translation_key=
"internet_key_reconnect",
59 device_class=ButtonDeviceClass.RESTART,
60 entity_category=EntityCategory.DIAGNOSTIC,
61 press_action=
lambda coordinator: coordinator.api.restart_connection(
64 is_suitable=
lambda info: info.get(
"vf_internet_key_online_since") !=
"",
70 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
73 _LOGGER.debug(
"Setting up Vodafone Station buttons")
75 coordinator: VodafoneStationRouter = hass.data[DOMAIN][entry.entry_id]
77 sensors_data = coordinator.data.sensors
81 for sensor_descr
in BUTTON_TYPES
82 if sensor_descr.is_suitable(sensors_data)
87 CoordinatorEntity[VodafoneStationRouter], ButtonEntity
89 """Representation of a Vodafone Station button."""
91 _attr_has_entity_name =
True
92 entity_description: VodafoneStationEntityDescription
96 coordinator: VodafoneStationRouter,
97 description: VodafoneStationEntityDescription,
99 """Initialize a Vodafone Station sensor."""
103 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.serial_number}_{description.key}"
106 """Triggers the Shelly button press service."""