1 """The Electric Kiwi integration."""
3 from __future__
import annotations
6 from electrickiwi_api
import ElectricKiwiApi
7 from electrickiwi_api.exceptions
import ApiException
16 from .const
import ACCOUNT_COORDINATOR, DOMAIN, HOP_COORDINATOR
17 from .coordinator
import (
18 ElectricKiwiAccountDataCoordinator,
19 ElectricKiwiHOPDataCoordinator,
22 PLATFORMS: list[Platform] = [Platform.SELECT, Platform.SENSOR]
26 """Set up Electric Kiwi from a config entry."""
28 await config_entry_oauth2_flow.async_get_config_entry_implementation(
33 session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
36 await session.async_ensure_token_valid()
37 except aiohttp.ClientResponseError
as err:
38 if 400 <= err.status < 500:
40 raise ConfigEntryNotReady
from err
41 except aiohttp.ClientError
as err:
42 raise ConfigEntryNotReady
from err
44 ek_api = ElectricKiwiApi(
51 await ek_api.set_active_session()
52 await hop_coordinator.async_config_entry_first_refresh()
53 await account_coordinator.async_config_entry_first_refresh()
54 except ApiException
as err:
55 raise ConfigEntryNotReady
from err
57 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {
58 HOP_COORDINATOR: hop_coordinator,
59 ACCOUNT_COORDINATOR: account_coordinator,
62 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
68 """Unload a config entry."""
69 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
70 hass.data[DOMAIN].pop(entry.entry_id)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)