Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The Elvia integration."""
2 
3 from __future__ import annotations
4 
5 from datetime import datetime, timedelta
6 from typing import TYPE_CHECKING
7 
8 from elvia import error as ElviaError
9 
10 from homeassistant.const import CONF_API_TOKEN
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.event import async_track_time_interval
13 
14 from .const import CONF_METERING_POINT_ID, LOGGER
15 from .importer import ElviaImporter
16 
17 if TYPE_CHECKING:
18  from homeassistant.config_entries import ConfigEntry
19 
20 
21 async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
22  """Set up Elvia from a config entry."""
23  importer = ElviaImporter(
24  hass=hass,
25  api_token=entry.data[CONF_API_TOKEN],
26  metering_point_id=entry.data[CONF_METERING_POINT_ID],
27  )
28 
29  async def _import_meter_values(_: datetime | None = None) -> None:
30  """Import meter values."""
31  try:
32  await importer.import_meter_values()
33  except ElviaError.ElviaException as exception:
34  LOGGER.exception("Unknown error %s", exception)
35 
36  try:
37  await importer.import_meter_values()
38  except ElviaError.ElviaException as exception:
39  LOGGER.exception("Unknown error %s", exception)
40  return False
41 
42  entry.async_on_unload(
44  hass,
45  _import_meter_values,
46  timedelta(minutes=60),
47  )
48  )
49 
50  return True
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:21
CALLBACK_TYPE async_track_time_interval(HomeAssistant hass, Callable[[datetime], Coroutine[Any, Any, None]|None] action, timedelta interval, *str|None name=None, bool|None cancel_on_shutdown=None)
Definition: event.py:1679