1 """Buttons for the SimpliSafe integration."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
8 from simplipy.errors
import SimplipyError
9 from simplipy.system
import System
18 from .
import SimpliSafe
19 from .const
import DOMAIN
20 from .entity
import SimpliSafeEntity
21 from .typing
import SystemType
24 @dataclass(frozen=True, kw_only=True)
26 """Describe a SimpliSafe button entity."""
28 push_action: Callable[[System], Awaitable]
31 BUTTON_KIND_CLEAR_NOTIFICATIONS =
"clear_notifications"
35 """Reboot the SimpliSafe."""
36 await system.async_clear_notifications()
39 BUTTON_DESCRIPTIONS = (
41 key=BUTTON_KIND_CLEAR_NOTIFICATIONS,
42 translation_key=BUTTON_KIND_CLEAR_NOTIFICATIONS,
43 push_action=_async_clear_notifications,
49 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
51 """Set up SimpliSafe buttons based on a config entry."""
52 simplisafe = hass.data[DOMAIN][entry.entry_id]
57 for system
in simplisafe.systems.values()
58 for description
in BUTTON_DESCRIPTIONS
64 """Define a SimpliSafe button."""
66 _attr_entity_category = EntityCategory.CONFIG
68 entity_description: SimpliSafeButtonDescription
72 simplisafe: SimpliSafe,
74 description: SimpliSafeButtonDescription,
76 """Initialize the SimpliSafe alarm."""
82 """Send out a restart command."""
85 except SimplipyError
as err:
87 f
'Error while pressing button "{self.entity_id}": {err}'