mirror of
https://github.com/mx42/home-assistant-ecocito.git
synced 2026-01-13 21:39:51 +01:00
68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
"""The ecocito integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, fields
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import CONF_DOMAIN, CONF_PASSWORD, CONF_USERNAME, Platform
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from .client import EcocitoClient
|
|
from .coordinator import (
|
|
GarbageCollectionsDataUpdateCoordinator,
|
|
RecyclingCollectionsDataUpdateCoordinator,
|
|
WasteDepotVisitsDataUpdateCoordinator,
|
|
)
|
|
|
|
PLATFORMS: list[Platform] = [Platform.SENSOR]
|
|
|
|
|
|
@dataclass(kw_only=True, slots=True)
|
|
class EcocitoData:
|
|
"""Ecocito data type."""
|
|
|
|
garbage_collections: GarbageCollectionsDataUpdateCoordinator
|
|
garbage_collections_previous: GarbageCollectionsDataUpdateCoordinator
|
|
recycling_collections: RecyclingCollectionsDataUpdateCoordinator
|
|
recycling_collections_previous: RecyclingCollectionsDataUpdateCoordinator
|
|
waste_depot_visits: WasteDepotVisitsDataUpdateCoordinator
|
|
|
|
|
|
type EcocitoConfigEntry = ConfigEntry[EcocitoData]
|
|
|
|
|
|
async def async_setup_entry(hass: HomeAssistant, entry: EcocitoConfigEntry) -> bool:
|
|
"""Set up ecocito from a config entry."""
|
|
client = EcocitoClient(
|
|
entry.data[CONF_DOMAIN],
|
|
entry.data[CONF_USERNAME],
|
|
entry.data[CONF_PASSWORD],
|
|
)
|
|
await client.authenticate()
|
|
data = EcocitoData(
|
|
garbage_collections=GarbageCollectionsDataUpdateCoordinator(hass, client, 0),
|
|
garbage_collections_previous=GarbageCollectionsDataUpdateCoordinator(
|
|
hass, client, -1
|
|
),
|
|
recycling_collections=RecyclingCollectionsDataUpdateCoordinator(
|
|
hass, client, 0
|
|
),
|
|
recycling_collections_previous=RecyclingCollectionsDataUpdateCoordinator(
|
|
hass, client, -1
|
|
),
|
|
waste_depot_visits=WasteDepotVisitsDataUpdateCoordinator(hass, client, 0),
|
|
)
|
|
for field in fields(data):
|
|
coordinator = getattr(data, field.name)
|
|
await coordinator.async_config_entry_first_refresh()
|
|
entry.runtime_data = data
|
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
|
|
|
return True
|
|
|
|
|
|
async def async_unload_entry(hass: HomeAssistant, entry: EcocitoConfigEntry) -> bool:
|
|
"""Unload a config entry."""
|
|
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|