1 """Support for Yale Alarm."""
3 from __future__
import annotations
5 from typing
import TYPE_CHECKING
7 from yalesmartalarmclient.const
import (
9 YALE_STATE_ARM_PARTIAL,
14 AlarmControlPanelEntity,
15 AlarmControlPanelEntityFeature,
16 AlarmControlPanelState,
23 from .
import YaleConfigEntry
24 from .const
import DOMAIN, STATE_MAP, YALE_ALL_ERRORS
25 from .coordinator
import YaleDataUpdateCoordinator
26 from .entity
import YaleAlarmEntity
30 hass: HomeAssistant, entry: YaleConfigEntry, async_add_entities: AddEntitiesCallback
32 """Set up the alarm entry."""
38 """Represent a Yale Smart Alarm."""
40 _attr_code_arm_required =
False
41 _attr_supported_features = (
42 AlarmControlPanelEntityFeature.ARM_HOME
43 | AlarmControlPanelEntityFeature.ARM_AWAY
47 def __init__(self, coordinator: YaleDataUpdateCoordinator) ->
None:
48 """Initialize the Yale Alarm Device."""
53 """Send disarm command."""
54 return await self.
async_set_alarmasync_set_alarm(YALE_STATE_DISARM, code)
57 """Send arm home command."""
58 return await self.
async_set_alarmasync_set_alarm(YALE_STATE_ARM_PARTIAL, code)
61 """Send arm away command."""
62 return await self.
async_set_alarmasync_set_alarm(YALE_STATE_ARM_FULL, code)
67 assert self.coordinator.yale,
"Connection to API is missing"
70 if command == YALE_STATE_ARM_FULL:
71 alarm_state = await self.
hasshasshass.async_add_executor_job(
72 self.coordinator.yale.arm_full
74 if command == YALE_STATE_ARM_PARTIAL:
75 alarm_state = await self.
hasshasshass.async_add_executor_job(
76 self.coordinator.yale.arm_partial
78 if command == YALE_STATE_DISARM:
79 alarm_state = await self.
hasshasshass.async_add_executor_job(
80 self.coordinator.yale.disarm
82 except YALE_ALL_ERRORS
as error:
84 translation_domain=DOMAIN,
85 translation_key=
"set_alarm",
86 translation_placeholders={
87 "name": self.coordinator.entry.data[CONF_NAME],
93 self.coordinator.data[
"alarm"] = command
97 translation_domain=DOMAIN,
98 translation_key=
"could_not_change_alarm",
103 """Return True if alarm is available."""
104 if STATE_MAP.get(self.coordinator.data[
"alarm"])
is None:
106 return super().available
110 """Return the state of the alarm."""
111 return STATE_MAP.get(self.coordinator.data[
"alarm"])
None async_set_alarm(self, str command, str|None code=None)
AlarmControlPanelState|None alarm_state(self)
None __init__(self, YaleDataUpdateCoordinator coordinator)
None async_alarm_arm_home(self, str|None code=None)
None async_alarm_disarm(self, str|None code=None)
None async_alarm_arm_away(self, str|None code=None)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, YaleConfigEntry entry, AddEntitiesCallback async_add_entities)