mirror of
https://github.com/mx42/home-assistant-ecocito.git
synced 2026-01-14 05:49:51 +01:00
Initial version
This commit is contained in:
67
custom_components/ecocito/__init__.py
Normal file
67
custom_components/ecocito/__init__.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""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)
|
||||
Reference in New Issue
Block a user