Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Coordinator for Iskra integration."""
2 
3 from datetime import timedelta
4 import logging
5 
6 from pyiskra.devices import Device
7 from pyiskra.exceptions import (
8  DeviceConnectionError,
9  DeviceTimeoutError,
10  InvalidResponseCode,
11  NotAuthorised,
12 )
13 
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
16 
17 from .const import DOMAIN
18 
19 _LOGGER = logging.getLogger(__name__)
20 
21 
23  """Class to manage fetching Iskra data."""
24 
25  def __init__(self, hass: HomeAssistant, device: Device) -> None:
26  """Initialize."""
27  self.devicedevice = device
28 
29  update_interval = timedelta(seconds=60)
30 
31  super().__init__(
32  hass,
33  _LOGGER,
34  name=DOMAIN,
35  update_interval=update_interval,
36  )
37 
38  async def _async_update_data(self) -> None:
39  """Fetch data from Iskra device."""
40  try:
41  await self.devicedevice.update_status()
42  except DeviceTimeoutError as e:
43  raise UpdateFailed(
44  f"Timeout error occurred while updating data for device {self.device.serial}"
45  ) from e
46  except DeviceConnectionError as e:
47  raise UpdateFailed(
48  f"Connection error occurred while updating data for device {self.device.serial}"
49  ) from e
50  except NotAuthorised as e:
51  raise UpdateFailed(
52  f"Not authorised to fetch data from device {self.device.serial}"
53  ) from e
54  except InvalidResponseCode as e:
55  raise UpdateFailed(
56  f"Invalid response code from device {self.device.serial}"
57  ) from e
None __init__(self, HomeAssistant hass, Device device)
Definition: coordinator.py:25