1 """Support for Comelit VEDO system."""
3 from __future__
import annotations
7 from aiocomelit.api
import ComelitVedoAreaObject
8 from aiocomelit.const
import ALARM_AREAS, AlarmAreaState
11 AlarmControlPanelEntity,
12 AlarmControlPanelEntityFeature,
13 AlarmControlPanelState,
21 from .const
import DOMAIN
22 from .coordinator
import ComelitVedoSystem
24 _LOGGER = logging.getLogger(__name__)
33 ALARM_ACTIONS: dict[str, str] = {
41 ALARM_AREA_ARMED_STATUS: dict[str, int] = {
51 config_entry: ConfigEntry,
52 async_add_entities: AddEntitiesCallback,
54 """Set up the Comelit VEDO system alarm control panel devices."""
56 coordinator: ComelitVedoSystem = hass.data[DOMAIN][config_entry.entry_id]
60 for device
in coordinator.data[ALARM_AREAS].values()
65 """Representation of a Ness alarm panel."""
67 _attr_has_entity_name =
True
69 _attr_code_format = CodeFormat.NUMBER
70 _attr_code_arm_required =
False
71 _attr_supported_features = (
72 AlarmControlPanelEntityFeature.ARM_AWAY
73 | AlarmControlPanelEntityFeature.ARM_HOME
78 coordinator: ComelitVedoSystem,
79 area: ComelitVedoAreaObject,
80 config_entry_entry_id: str,
82 """Initialize the alarm panel."""
83 self.
_api_api = coordinator.api
94 def _area(self) -> ComelitVedoAreaObject:
95 """Return area object."""
96 return self.coordinator.data[ALARM_AREAS][self.
_area_index_area_index]
100 """Return True if alarm is available."""
101 if self.
_area_area.human_status
in [AlarmAreaState.ANOMALY, AlarmAreaState.UNKNOWN]:
103 return super().available
107 """Return the state of the alarm."""
110 "Area %s status is: %s. Armed is %s",
111 self.
_area_area.name,
112 self.
_area_area.human_status,
113 self.
_area_area.armed,
115 if self.
_area_area.human_status == AlarmAreaState.ARMED:
116 if self.
_area_area.armed == ALARM_AREA_ARMED_STATUS[AWAY]:
117 return AlarmControlPanelState.ARMED_AWAY
118 if self.
_area_area.armed == ALARM_AREA_ARMED_STATUS[NIGHT]:
119 return AlarmControlPanelState.ARMED_NIGHT
120 return AlarmControlPanelState.ARMED_HOME
123 AlarmAreaState.DISARMED: AlarmControlPanelState.DISARMED,
124 AlarmAreaState.ENTRY_DELAY: AlarmControlPanelState.DISARMING,
125 AlarmAreaState.EXIT_DELAY: AlarmControlPanelState.ARMING,
126 AlarmAreaState.TRIGGERED: AlarmControlPanelState.TRIGGERED,
130 """Send disarm command."""
131 if code !=
str(self.
_api_api.device_pin):
133 await self.
_api_api.set_zone_status(self.
_area_area.index, ALARM_ACTIONS[DISABLE])
136 """Send arm away command."""
137 await self.
_api_api.set_zone_status(self.
_area_area.index, ALARM_ACTIONS[AWAY])
140 """Send arm home command."""
141 await self.
_api_api.set_zone_status(self.
_area_area.index, ALARM_ACTIONS[HOME])
144 """Send arm night command."""
145 await self.
_api_api.set_zone_status(self.
_area_area.index, ALARM_ACTIONS[NIGHT])
AlarmControlPanelState|None alarm_state(self)
None async_alarm_arm_night(self, str|None code=None)
None __init__(self, ComelitVedoSystem coordinator, ComelitVedoAreaObject area, str config_entry_entry_id)
None async_alarm_arm_away(self, str|None code=None)
None async_alarm_disarm(self, str|None code=None)
None async_alarm_arm_home(self, str|None code=None)
tuple _attr_supported_features
ComelitVedoAreaObject _area(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
web.Response get(self, web.Request request, str config_key)