Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """DataUpdateCoordinator for the Discovergy integration."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 from pydiscovergy import Discovergy
9 from pydiscovergy.error import DiscovergyClientError, HTTPError, InvalidLogin
10 from pydiscovergy.models import Meter, Reading
11 
12 from homeassistant.core import HomeAssistant
13 from homeassistant.exceptions import ConfigEntryAuthFailed
14 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
15 
16 _LOGGER = logging.getLogger(__name__)
17 
18 
20  """The Discovergy update coordinator."""
21 
22  def __init__(
23  self,
24  hass: HomeAssistant,
25  meter: Meter,
26  discovergy_client: Discovergy,
27  ) -> None:
28  """Initialize the Discovergy coordinator."""
29  self.metermeter = meter
30  self.discovergy_clientdiscovergy_client = discovergy_client
31 
32  super().__init__(
33  hass,
34  _LOGGER,
35  name=f"Discovergy meter {meter.meter_id}",
36  update_interval=timedelta(seconds=30),
37  )
38 
39  async def _async_update_data(self) -> Reading:
40  """Get last reading for meter."""
41  try:
42  return await self.discovergy_clientdiscovergy_client.meter_last_reading(
43  meter_id=self.metermeter.meter_id
44  )
45  except InvalidLogin as err:
47  f"Auth expired while fetching last reading for meter {self.meter.meter_id}"
48  ) from err
49  except (HTTPError, DiscovergyClientError) as err:
50  raise UpdateFailed(
51  f"Error while fetching last reading for meter {self.meter.meter_id}"
52  ) from err
None __init__(self, HomeAssistant hass, Meter meter, Discovergy discovergy_client)
Definition: coordinator.py:27