Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """The QNAP QSW coordinator."""
2 
3 from __future__ import annotations
4 
5 import asyncio
6 from datetime import timedelta
7 import logging
8 from typing import Any
9 
10 from aioqsw.exceptions import QswError
11 from aioqsw.localapi import QnapQswApi
12 
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
15 
16 from .const import DOMAIN, QSW_TIMEOUT_SEC
17 
18 DATA_SCAN_INTERVAL = timedelta(seconds=60)
19 FW_SCAN_INTERVAL = timedelta(hours=12)
20 
21 _LOGGER = logging.getLogger(__name__)
22 
23 
25  """Class to manage fetching data from the QNAP QSW device."""
26 
27  def __init__(self, hass: HomeAssistant, qsw: QnapQswApi) -> None:
28  """Initialize."""
29  self.qswqsw = qsw
30 
31  super().__init__(
32  hass,
33  _LOGGER,
34  name=DOMAIN,
35  update_interval=DATA_SCAN_INTERVAL,
36  )
37 
38  async def _async_update_data(self) -> dict[str, Any]:
39  """Update data via library."""
40  async with asyncio.timeout(QSW_TIMEOUT_SEC):
41  try:
42  await self.qswqsw.update()
43  except QswError as error:
44  raise UpdateFailed(error) from error
45  return self.qswqsw.data()
46 
47 
49  """Class to manage fetching firmware data from the QNAP QSW device."""
50 
51  def __init__(self, hass: HomeAssistant, qsw: QnapQswApi) -> None:
52  """Initialize."""
53  self.qswqsw = qsw
54 
55  super().__init__(
56  hass,
57  _LOGGER,
58  name=DOMAIN,
59  update_interval=FW_SCAN_INTERVAL,
60  )
61 
62  async def _async_update_data(self) -> dict[str, Any]:
63  """Update firmware data via library."""
64  async with asyncio.timeout(QSW_TIMEOUT_SEC):
65  try:
66  await self.qswqsw.check_firmware()
67  except QswError as error:
68  raise UpdateFailed(error) from error
69  return self.qswqsw.data()
None __init__(self, HomeAssistant hass, QnapQswApi qsw)
Definition: coordinator.py:27
None __init__(self, HomeAssistant hass, QnapQswApi qsw)
Definition: coordinator.py:51
IssData update(pyiss.ISS iss)
Definition: __init__.py:33