core/homeassistant/components/flume/coordinator.py

36 lines
1.2 KiB
Python

"""The IntelliFire integration."""
from __future__ import annotations
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import _LOGGER, DEVICE_SCAN_INTERVAL, DOMAIN
class FlumeDeviceDataUpdateCoordinator(DataUpdateCoordinator[None]):
"""Data update coordinator for an individual flume device."""
def __init__(self, hass: HomeAssistant, flume_device) -> None:
"""Initialize the Coordinator."""
super().__init__(
hass,
name=DOMAIN,
logger=_LOGGER,
update_interval=DEVICE_SCAN_INTERVAL,
)
self.flume_device = flume_device
async def _async_update_data(self) -> None:
"""Get the latest data from the Flume."""
_LOGGER.debug("Updating Flume data")
try:
await self.hass.async_add_executor_job(self.flume_device.update_force)
except Exception as ex:
raise UpdateFailed(f"Error communicating with flume API: {ex}") from ex
_LOGGER.debug(
"Flume update details: values=%s query_payload=%s",
self.flume_device.values,
self.flume_device.query_payload,
)