Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """DataUpdateCoordinator for Flexit Nordic (BACnet) integration.."""
2 
3 import asyncio.exceptions
4 from datetime import timedelta
5 import logging
6 
7 from flexit_bacnet import FlexitBACnet
8 from flexit_bacnet.bacnet import DecodingError
9 
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import CONF_DEVICE_ID, CONF_IP_ADDRESS
12 from homeassistant.core import HomeAssistant
13 from homeassistant.exceptions import ConfigEntryNotReady
14 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
15 
16 from .const import DOMAIN
17 
18 _LOGGER = logging.getLogger(__name__)
19 
20 
22  """Class to manage fetching data from a Flexit Nordic (BACnet) device."""
23 
24  config_entry: ConfigEntry
25 
26  def __init__(self, hass: HomeAssistant, device_id: str) -> None:
27  """Initialize my coordinator."""
28  super().__init__(
29  hass,
30  _LOGGER,
31  name=f"{DOMAIN}_{device_id}",
32  update_interval=timedelta(seconds=60),
33  )
34 
35  self.devicedevice = FlexitBACnet(
36  self.config_entryconfig_entry.data[CONF_IP_ADDRESS],
37  self.config_entryconfig_entry.data[CONF_DEVICE_ID],
38  )
39 
40  async def _async_update_data(self) -> FlexitBACnet:
41  """Fetch data from the device."""
42 
43  try:
44  await self.devicedevice.update()
45  except (asyncio.exceptions.TimeoutError, ConnectionError, DecodingError) as exc:
46  raise ConfigEntryNotReady(
47  f"Timeout while connecting to {self.config_entry.data[CONF_IP_ADDRESS]}"
48  ) from exc
49 
50  return self.devicedevice
None __init__(self, HomeAssistant hass, str device_id)
Definition: coordinator.py:26
IssData update(pyiss.ISS iss)
Definition: __init__.py:33