Files

42 lines
1.2 KiB
Python

"""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