Home Assistant Unofficial Reference 2024.12.1
alarm_control_panel.py
Go to the documentation of this file.
1 """Interfaces with iAlarm control panels."""
2 
3 from __future__ import annotations
4 
6  AlarmControlPanelEntity,
7  AlarmControlPanelEntityFeature,
8  AlarmControlPanelState,
9 )
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.device_registry import DeviceInfo
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 from homeassistant.helpers.update_coordinator import CoordinatorEntity
15 
16 from .const import DATA_COORDINATOR, DOMAIN
17 from .coordinator import IAlarmDataUpdateCoordinator
18 
19 
21  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
22 ) -> None:
23  """Set up a iAlarm alarm control panel based on a config entry."""
24  coordinator: IAlarmDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][
25  DATA_COORDINATOR
26  ]
27  async_add_entities([IAlarmPanel(coordinator)], False)
28 
29 
31  CoordinatorEntity[IAlarmDataUpdateCoordinator], AlarmControlPanelEntity
32 ):
33  """Representation of an iAlarm device."""
34 
35  _attr_has_entity_name = True
36  _attr_name = None
37  _attr_supported_features = (
38  AlarmControlPanelEntityFeature.ARM_HOME
39  | AlarmControlPanelEntityFeature.ARM_AWAY
40  )
41  _attr_code_arm_required = False
42 
43  def __init__(self, coordinator: IAlarmDataUpdateCoordinator) -> None:
44  """Create the entity with a DataUpdateCoordinator."""
45  super().__init__(coordinator)
46  self._attr_device_info_attr_device_info = DeviceInfo(
47  identifiers={(DOMAIN, coordinator.mac)},
48  manufacturer="Antifurto365 - Meian",
49  name="iAlarm",
50  )
51  self._attr_unique_id_attr_unique_id = coordinator.mac
52 
53  @property
54  def alarm_state(self) -> AlarmControlPanelState | None:
55  """Return the state of the device."""
56  return self.coordinator.state
57 
58  def alarm_disarm(self, code: str | None = None) -> None:
59  """Send disarm command."""
60  self.coordinator.ialarm.disarm()
61 
62  def alarm_arm_home(self, code: str | None = None) -> None:
63  """Send arm home command."""
64  self.coordinator.ialarm.arm_stay()
65 
66  def alarm_arm_away(self, code: str | None = None) -> None:
67  """Send arm away command."""
68  self.coordinator.ialarm.arm_away()
None __init__(self, IAlarmDataUpdateCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)