36 lines
1.2 KiB
Python
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,
|
|
)
|