1 """Alarm control panels on Zigbee Home Automation networks."""
3 from __future__
import annotations
7 from zha.application.platforms.alarm_control_panel.const
import (
8 AlarmState
as ZHAAlarmState,
12 AlarmControlPanelEntity,
13 AlarmControlPanelEntityFeature,
14 AlarmControlPanelState,
23 from .entity
import ZHAEntity
24 from .helpers
import (
26 async_add_entities
as zha_async_add_entities,
27 convert_zha_error_to_ha_error,
31 ZHA_STATE_TO_ALARM_STATE_MAP = {
32 ZHAAlarmState.DISARMED.value: AlarmControlPanelState.DISARMED,
33 ZHAAlarmState.ARMED_HOME.value: AlarmControlPanelState.ARMED_HOME,
34 ZHAAlarmState.ARMED_AWAY.value: AlarmControlPanelState.ARMED_AWAY,
35 ZHAAlarmState.ARMED_NIGHT.value: AlarmControlPanelState.ARMED_NIGHT,
36 ZHAAlarmState.ARMED_VACATION.value: AlarmControlPanelState.ARMED_VACATION,
37 ZHAAlarmState.ARMED_CUSTOM_BYPASS.value: AlarmControlPanelState.ARMED_CUSTOM_BYPASS,
38 ZHAAlarmState.PENDING.value: AlarmControlPanelState.PENDING,
39 ZHAAlarmState.ARMING.value: AlarmControlPanelState.ARMING,
40 ZHAAlarmState.DISARMING.value: AlarmControlPanelState.DISARMING,
41 ZHAAlarmState.TRIGGERED.value: AlarmControlPanelState.TRIGGERED,
42 ZHAAlarmState.UNKNOWN.value:
None,
48 config_entry: ConfigEntry,
49 async_add_entities: AddEntitiesCallback,
51 """Set up the Zigbee Home Automation alarm control panel from config entry."""
53 entities_to_create = zha_data.platforms[Platform.ALARM_CONTROL_PANEL]
59 zha_async_add_entities,
65 config_entry.async_on_unload(unsub)
69 """Entity for ZHA alarm control devices."""
71 _attr_translation_key: str =
"alarm_control_panel"
72 _attr_code_format = CodeFormat.TEXT
73 _attr_supported_features = (
74 AlarmControlPanelEntityFeature.ARM_HOME
75 | AlarmControlPanelEntityFeature.ARM_AWAY
76 | AlarmControlPanelEntityFeature.ARM_NIGHT
77 | AlarmControlPanelEntityFeature.TRIGGER
82 """Whether the code is required for arm actions."""
83 return self.entity_data.entity.code_arm_required
85 @convert_zha_error_to_ha_error
87 """Send disarm command."""
88 await self.entity_data.entity.async_alarm_disarm(code)
91 @convert_zha_error_to_ha_error
93 """Send arm home command."""
94 await self.entity_data.entity.async_alarm_arm_home(code)
97 @convert_zha_error_to_ha_error
99 """Send arm away command."""
100 await self.entity_data.entity.async_alarm_arm_away(code)
103 @convert_zha_error_to_ha_error
105 """Send arm night command."""
106 await self.entity_data.entity.async_alarm_arm_night(code)
109 @convert_zha_error_to_ha_error
111 """Send alarm trigger command."""
112 await self.entity_data.entity.async_alarm_trigger(code)
117 """Return the state of the entity."""
118 return ZHA_STATE_TO_ALARM_STATE_MAP.get(self.entity_data.entity.state[
"state"])
None async_alarm_arm_home(self, str|None code=None)
None async_alarm_trigger(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_alarm_arm_night(self, str|None code=None)
bool code_arm_required(self)
AlarmControlPanelState|None alarm_state(self)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
HAZHAData get_zha_data(HomeAssistant hass)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)