hass-core/homeassistant/components/rova/coordinator.py
Joost Lekkerkerker c222cfd692
Add coordinator to Rova (#114288)
* Add coordinator to Rova

* Add coordinator to Rova

* Fix

* Update homeassistant/components/rova/sensor.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

* Fix

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-03-27 14:14:49 +01:00

42 lines
1.2 KiB
Python

"""Coordinator for Rova."""
from datetime import datetime, timedelta
from rova.rova import Rova
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from homeassistant.util.dt import get_time_zone
from .const import DOMAIN, LOGGER
class RovaCoordinator(DataUpdateCoordinator[dict[str, datetime]]):
"""Class to manage fetching Rova data."""
def __init__(self, hass: HomeAssistant, api: Rova) -> None:
"""Initialize."""
super().__init__(
hass,
LOGGER,
name=DOMAIN,
update_interval=timedelta(hours=12),
)
self.api = api
async def _async_update_data(self) -> dict[str, datetime]:
"""Fetch data from Rova API."""
items = await self.hass.async_add_executor_job(self.api.get_calendar_items)
data = {}
for item in items:
date = datetime.strptime(item["Date"], "%Y-%m-%dT%H:%M:%S").replace(
tzinfo=get_time_zone("Europe/Amsterdam")
)
code = item["GarbageTypeCode"].lower()
if code not in data:
data[code] = date
return data