core/homeassistant/components/dexcom/coordinator.py

45 lines
1.1 KiB
Python

"""Coordinator for the Dexcom integration."""
from datetime import timedelta
import logging
from pydexcom import Dexcom, GlucoseReading
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
_SCAN_INTERVAL = timedelta(seconds=180)
type DexcomConfigEntry = ConfigEntry[DexcomCoordinator]
class DexcomCoordinator(DataUpdateCoordinator[GlucoseReading]):
"""Dexcom Coordinator."""
def __init__(
self,
hass: HomeAssistant,
entry: DexcomConfigEntry,
dexcom: Dexcom,
) -> None:
"""Initialize the coordinator."""
super().__init__(
hass,
_LOGGER,
config_entry=entry,
name=DOMAIN,
update_interval=_SCAN_INTERVAL,
)
self.dexcom = dexcom
async def _async_update_data(self) -> GlucoseReading:
"""Fetch data from API endpoint."""
return await self.hass.async_add_executor_job(
self.dexcom.get_current_glucose_reading
)