Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """DataUpdateCoordinator for poolsense integration."""
2 
3 from __future__ import annotations
4 
5 import asyncio
6 from datetime import timedelta
7 import logging
8 from typing import TYPE_CHECKING
9 
10 from poolsense import PoolSense
11 from poolsense.exceptions import PoolSenseError
12 
13 from homeassistant.const import CONF_EMAIL
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.typing import StateType
16 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
17 
18 from .const import DOMAIN
19 
20 if TYPE_CHECKING:
21  from . import PoolSenseConfigEntry
22 
23 _LOGGER = logging.getLogger(__name__)
24 
25 
27  """Define an object to hold PoolSense data."""
28 
29  config_entry: PoolSenseConfigEntry
30 
31  def __init__(self, hass: HomeAssistant, poolsense: PoolSense) -> None:
32  """Initialize."""
33  super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=timedelta(hours=1))
34  self.poolsensepoolsense = poolsense
35  self.emailemail = self.config_entryconfig_entry.data[CONF_EMAIL]
36 
37  async def _async_update_data(self) -> dict[str, StateType]:
38  """Update data via library."""
39  async with asyncio.timeout(10):
40  try:
41  return await self.poolsensepoolsense.get_poolsense_data()
42  except PoolSenseError as error:
43  _LOGGER.error("PoolSense query did not complete")
44  raise UpdateFailed(error) from error
None __init__(self, HomeAssistant hass, PoolSense poolsense)
Definition: coordinator.py:31