core/homeassistant/components/coolmaster/coordinator.py

53 lines
1.5 KiB
Python

"""DataUpdateCoordinator for coolmaster integration."""
from __future__ import annotations
import logging
from pycoolmasternet_async import CoolMasterNet
from pycoolmasternet_async.coolmasternet import CoolMasterNetUnit
from homeassistant.components.climate import SCAN_INTERVAL
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
type CoolmasterConfigEntry = ConfigEntry[CoolmasterDataUpdateCoordinator]
class CoolmasterDataUpdateCoordinator(
DataUpdateCoordinator[dict[str, CoolMasterNetUnit]]
):
"""Class to manage fetching Coolmaster data."""
def __init__(
self,
hass: HomeAssistant,
entry: CoolmasterConfigEntry,
coolmaster: CoolMasterNet,
info: dict[str, str],
) -> None:
"""Initialize global Coolmaster data updater."""
self._coolmaster = coolmaster
self.info = info
super().__init__(
hass,
_LOGGER,
config_entry=entry,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
async def _async_update_data(self) -> dict[str, CoolMasterNetUnit]:
"""Fetch data from Coolmaster."""
try:
return await self._coolmaster.status()
except OSError as error:
raise UpdateFailed from error