1 """Support for Netgear Button."""
3 from collections.abc
import Callable, Coroutine
4 from dataclasses
import dataclass
10 ButtonEntityDescription,
18 from .const
import DOMAIN, KEY_COORDINATOR, KEY_ROUTER
19 from .entity
import NetgearRouterCoordinatorEntity
20 from .router
import NetgearRouter
23 @dataclass(frozen=True, kw_only=True)
25 """Class describing Netgear button entities."""
27 action: Callable[[NetgearRouter], Callable[[], Coroutine[Any, Any,
None]]]
33 device_class=ButtonDeviceClass.RESTART,
34 entity_category=EntityCategory.CONFIG,
35 action=
lambda router: router.async_reboot,
41 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
43 """Set up button for Netgear component."""
44 router = hass.data[DOMAIN][entry.entry_id][KEY_ROUTER]
45 coordinator = hass.data[DOMAIN][entry.entry_id][KEY_COORDINATOR]
48 for entity_description
in BUTTONS
53 """Netgear Router button entity."""
55 entity_description: NetgearButtonEntityDescription
59 coordinator: DataUpdateCoordinator,
60 router: NetgearRouter,
61 entity_description: NetgearButtonEntityDescription,
63 """Initialize a Netgear device."""
64 super().
__init__(coordinator, router)
69 """Triggers the button press service."""
75 """Update the Netgear device."""