1 """Contains buttons exposed by the Starlink integration."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
11 ButtonEntityDescription,
18 from .const
import DOMAIN
19 from .coordinator
import StarlinkUpdateCoordinator
20 from .entity
import StarlinkEntity
24 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
26 """Set up all binary sensors for this entry."""
27 coordinator = hass.data[DOMAIN][entry.entry_id]
34 @dataclass(frozen=True, kw_only=True)
36 """Describes a Starlink button entity."""
38 press_fn: Callable[[StarlinkUpdateCoordinator], Awaitable[
None]]
42 """A ButtonEntity for Starlink devices. Handles creating unique IDs."""
44 entity_description: StarlinkButtonEntityDescription
47 """Press the button."""
54 device_class=ButtonDeviceClass.RESTART,
55 entity_category=EntityCategory.DIAGNOSTIC,
56 press_fn=
lambda coordinator: coordinator.async_reboot_starlink(),