Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """The Nettigo Air Monitor coordinator."""
2 
3 import logging
4 
5 from nettigo_air_monitor import (
6  ApiError,
7  InvalidSensorDataError,
8  NAMSensors,
9  NettigoAirMonitor,
10 )
11 from tenacity import RetryError
12 
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
15 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
16 
17 from .const import DEFAULT_UPDATE_INTERVAL, DOMAIN, MANUFACTURER
18 
19 _LOGGER = logging.getLogger(__name__)
20 
21 
23  """Class to manage fetching Nettigo Air Monitor data."""
24 
25  def __init__(
26  self,
27  hass: HomeAssistant,
28  nam: NettigoAirMonitor,
29  unique_id: str,
30  ) -> None:
31  """Initialize."""
32  self.unique_idunique_id = unique_id
33  self.device_infodevice_info = DeviceInfo(
34  connections={(CONNECTION_NETWORK_MAC, unique_id)},
35  name="Nettigo Air Monitor",
36  sw_version=nam.software_version,
37  manufacturer=MANUFACTURER,
38  configuration_url=f"http://{nam.host}/",
39  )
40  self.namnam = nam
41 
42  super().__init__(
43  hass, _LOGGER, name=DOMAIN, update_interval=DEFAULT_UPDATE_INTERVAL
44  )
45 
46  async def _async_update_data(self) -> NAMSensors:
47  """Update data via library."""
48  try:
49  data = await self.namnam.async_update()
50  # We do not need to catch AuthFailed exception here because sensor data is
51  # always available without authorization.
52  except (ApiError, InvalidSensorDataError, RetryError) as error:
53  raise UpdateFailed(error) from error
54 
55  return data
None __init__(self, HomeAssistant hass, NettigoAirMonitor nam, str unique_id)
Definition: coordinator.py:30