Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Coordinator for the iAlarm integration."""
2 
3 from __future__ import annotations
4 
5 import asyncio
6 import logging
7 
8 from pyialarm import IAlarm
9 
11  SCAN_INTERVAL,
12  AlarmControlPanelState,
13 )
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
16 
17 from .const import DOMAIN, IALARM_TO_HASS
18 
19 _LOGGER = logging.getLogger(__name__)
20 
21 
23  """Class to manage fetching iAlarm data."""
24 
25  def __init__(self, hass: HomeAssistant, ialarm: IAlarm, mac: str) -> None:
26  """Initialize global iAlarm data updater."""
27  self.ialarmialarm = ialarm
28  self.statestate: AlarmControlPanelState | None = None
29  self.host: str = ialarm.host
30  self.macmac = mac
31 
32  super().__init__(
33  hass,
34  _LOGGER,
35  name=DOMAIN,
36  update_interval=SCAN_INTERVAL,
37  )
38 
39  def _update_data(self) -> None:
40  """Fetch data from iAlarm via sync functions."""
41  status = self.ialarmialarm.get_status()
42  _LOGGER.debug("iAlarm status: %s", status)
43 
44  self.statestate = IALARM_TO_HASS.get(status)
45 
46  async def _async_update_data(self) -> None:
47  """Fetch data from iAlarm."""
48  try:
49  async with asyncio.timeout(10):
50  await self.hasshass.async_add_executor_job(self._update_data_update_data)
51  except ConnectionError as error:
52  raise UpdateFailed(error) from error
None __init__(self, HomeAssistant hass, IAlarm ialarm, str mac)
Definition: coordinator.py:25
def get_status(hass, host, port)
Definition: panel.py:387