Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Coordinator for the Modern Forms integration."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 from aiomodernforms import ModernFormsDevice, ModernFormsError
9 from aiomodernforms.models import Device as ModernFormsDeviceState
10 
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.aiohttp_client import async_get_clientsession
13 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
14 
15 from .const import DOMAIN
16 
17 SCAN_INTERVAL = timedelta(seconds=5)
18 _LOGGER = logging.getLogger(__name__)
19 
20 
22  """Class to manage fetching Modern Forms data from single endpoint."""
23 
24  def __init__(
25  self,
26  hass: HomeAssistant,
27  *,
28  host: str,
29  ) -> None:
30  """Initialize global Modern Forms data updater."""
31  self.modern_formsmodern_forms = ModernFormsDevice(
32  host, session=async_get_clientsession(hass)
33  )
34 
35  super().__init__(
36  hass,
37  _LOGGER,
38  name=DOMAIN,
39  update_interval=SCAN_INTERVAL,
40  )
41 
42  async def _async_update_data(self) -> ModernFormsDevice:
43  """Fetch data from Modern Forms."""
44  try:
45  return await self.modern_formsmodern_forms.update(
46  full_update=not self.last_update_successlast_update_success
47  )
48  except ModernFormsError as error:
49  raise UpdateFailed(f"Invalid response from API: {error}") from error
IssData update(pyiss.ISS iss)
Definition: __init__.py:33
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)