mirror of
https://github.com/home-assistant/core.git
synced 2025-04-27 18:57:57 +00:00

* Init Autarco integration * Add integration code with tests * Update every 5 minutes * Process all feedback from Joost * Bump lib to v2.0.0 * Add more then one site if present * Fix issue with entity translation * Update the test for sensor entities * Fix round two based on feedback from Joost * Add autarco to strict typing * Update tests/components/autarco/test_config_flow.py * Update tests/components/autarco/test_config_flow.py --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
"""Coordinator for Autarco integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import NamedTuple
|
|
|
|
from autarco import AccountSite, Autarco, Solar
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
|
|
|
from .const import DOMAIN, LOGGER, SCAN_INTERVAL
|
|
|
|
|
|
class AutarcoData(NamedTuple):
|
|
"""Class for defining data in dict."""
|
|
|
|
solar: Solar
|
|
|
|
|
|
class AutarcoDataUpdateCoordinator(DataUpdateCoordinator[AutarcoData]):
|
|
"""Class to manage fetching Autarco data from the API."""
|
|
|
|
config_entry: ConfigEntry
|
|
|
|
def __init__(
|
|
self,
|
|
hass: HomeAssistant,
|
|
client: Autarco,
|
|
site: AccountSite,
|
|
) -> None:
|
|
"""Initialize global Autarco data updater."""
|
|
super().__init__(
|
|
hass,
|
|
LOGGER,
|
|
name=DOMAIN,
|
|
update_interval=SCAN_INTERVAL,
|
|
)
|
|
self.client = client
|
|
self.site = site
|
|
|
|
async def _async_update_data(self) -> AutarcoData:
|
|
"""Fetch data from Autarco API."""
|
|
return AutarcoData(
|
|
solar=await self.client.get_solar(self.site.public_key),
|
|
)
|