Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Provides the ezviz DataUpdateCoordinator."""
2 
3 import asyncio
4 from datetime import timedelta
5 import logging
6 
7 from pyezviz.client import EzvizClient
8 from pyezviz.exceptions import (
9  EzvizAuthTokenExpired,
10  EzvizAuthVerificationCode,
11  HTTPError,
12  InvalidURL,
13  PyEzvizError,
14 )
15 
16 from homeassistant.core import HomeAssistant
17 from homeassistant.exceptions import ConfigEntryAuthFailed
18 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
19 
20 from .const import DOMAIN
21 
22 _LOGGER = logging.getLogger(__name__)
23 
24 
26  """Class to manage fetching EZVIZ data."""
27 
28  def __init__(
29  self, hass: HomeAssistant, *, api: EzvizClient, api_timeout: int
30  ) -> None:
31  """Initialize global EZVIZ data updater."""
32  self.ezviz_clientezviz_client = api
33  self._api_timeout_api_timeout = api_timeout
34  update_interval = timedelta(seconds=30)
35 
36  super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
37 
38  async def _async_update_data(self) -> dict:
39  """Fetch data from EZVIZ."""
40  try:
41  async with asyncio.timeout(self._api_timeout_api_timeout):
42  return await self.hasshass.async_add_executor_job(
43  self.ezviz_clientezviz_client.load_cameras
44  )
45 
46  except (EzvizAuthTokenExpired, EzvizAuthVerificationCode) as error:
47  raise ConfigEntryAuthFailed from error
48 
49  except (InvalidURL, HTTPError, PyEzvizError) as error:
50  raise UpdateFailed(f"Invalid response from API: {error}") from error
None __init__(self, HomeAssistant hass, *EzvizClient api, int api_timeout)
Definition: coordinator.py:30