Home Assistant Unofficial Reference 2024.12.1
alarm_control_panel.py
Go to the documentation of this file.
1 """Support for the Hive alarm."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 
8  AlarmControlPanelEntity,
9  AlarmControlPanelEntityFeature,
10  AlarmControlPanelState,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from .const import DOMAIN
17 from .entity import HiveEntity
18 
19 PARALLEL_UPDATES = 0
20 SCAN_INTERVAL = timedelta(seconds=15)
21 HIVETOHA = {
22  "home": AlarmControlPanelState.DISARMED,
23  "asleep": AlarmControlPanelState.ARMED_NIGHT,
24  "away": AlarmControlPanelState.ARMED_AWAY,
25  "sos": AlarmControlPanelState.TRIGGERED,
26 }
27 
28 
30  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
31 ) -> None:
32  """Set up Hive thermostat based on a config entry."""
33 
34  hive = hass.data[DOMAIN][entry.entry_id]
35  if devices := hive.session.deviceList.get("alarm_control_panel"):
37  [HiveAlarmControlPanelEntity(hive, dev) for dev in devices], True
38  )
39 
40 
42  """Representation of a Hive alarm."""
43 
44  _attr_supported_features = (
45  AlarmControlPanelEntityFeature.ARM_NIGHT
46  | AlarmControlPanelEntityFeature.ARM_AWAY
47  | AlarmControlPanelEntityFeature.TRIGGER
48  )
49  _attr_code_arm_required = False
50 
51  async def async_alarm_disarm(self, code: str | None = None) -> None:
52  """Send disarm command."""
53  await self.hivehive.alarm.setMode(self.devicedevicedevice, "home")
54 
55  async def async_alarm_arm_night(self, code: str | None = None) -> None:
56  """Send arm night command."""
57  await self.hivehive.alarm.setMode(self.devicedevicedevice, "asleep")
58 
59  async def async_alarm_arm_away(self, code: str | None = None) -> None:
60  """Send arm away command."""
61  await self.hivehive.alarm.setMode(self.devicedevicedevice, "away")
62 
63  async def async_alarm_trigger(self, code: str | None = None) -> None:
64  """Send alarm trigger command."""
65  await self.hivehive.alarm.setMode(self.devicedevicedevice, "sos")
66 
67  async def async_update(self) -> None:
68  """Update all Node data from Hive."""
69  await self.hivehive.session.updateData(self.devicedevicedevice)
70  self.devicedevicedevice = await self.hivehive.alarm.getAlarm(self.devicedevicedevice)
71  self._attr_available_attr_available = self.devicedevicedevice["deviceData"].get("online")
72  if self._attr_available_attr_available:
73  if self.devicedevicedevice["status"]["state"]:
74  self._attr_alarm_state_attr_alarm_state = AlarmControlPanelState.TRIGGERED
75  else:
76  self._attr_alarm_state_attr_alarm_state = HIVETOHA[self.devicedevicedevice["status"]["mode"]]
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)