"""DataUpdateCoordinator for SolarEdge Optimizers.""" from __future__ import annotations from datetime import timedelta from homeassistant.core import HomeAssistant from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .api import ( OptimizerSnapshot, SolarEdgeOptimizerApiClient, SolarEdgeOptimizerApiError, ) from .const import DOMAIN, LOGGER class SolarEdgeOptimizerCoordinator(DataUpdateCoordinator[OptimizerSnapshot]): """Coordinate shared polling of the App API.""" def __init__( self, hass: HomeAssistant, client: SolarEdgeOptimizerApiClient, update_interval: timedelta, ) -> None: """Initialize the coordinator.""" super().__init__( hass, LOGGER, name=DOMAIN, update_interval=update_interval, always_update=False, ) self.client = client async def _async_update_data(self) -> OptimizerSnapshot: try: return await self.client.async_get_optimizers() except SolarEdgeOptimizerApiError as err: raise UpdateFailed("Error communicating with optimizer App") from err