1 """The Anova integration."""
3 from __future__
import annotations
6 from typing
import TYPE_CHECKING
8 from anova_wifi
import (
21 from .coordinator
import AnovaCoordinator
22 from .models
import AnovaConfigEntry, AnovaData
24 PLATFORMS = [Platform.SENSOR]
26 _LOGGER = logging.getLogger(__name__)
30 """Set up Anova from a config entry."""
32 aiohttp_client.async_get_clientsession(hass),
33 entry.data[CONF_USERNAME],
34 entry.data[CONF_PASSWORD],
37 await api.authenticate()
38 except InvalidLogin
as err:
40 "Login was incorrect - please log back in through the config flow. %s", err
45 await api.create_websocket()
46 except NoDevicesFound
as err:
49 "No devices were found on the websocket, perhaps you don't have any devices on this account?"
51 except WebsocketFailure
as err:
56 devices: list[APCWifiDevice] = []
60 assert api.websocket_handler
is not None
61 devices =
list(api.websocket_handler.devices.values())
63 entry.runtime_data =
AnovaData(api_jwt=api.jwt, coordinators=coordinators, api=api)
64 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
69 """Unload a config entry."""
70 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
72 await entry.runtime_data.api.disconnect_websocket()
78 _LOGGER.debug(
"Migrating from version %s:%s", entry.version, entry.minor_version)
84 if entry.version == 1
and entry.minor_version == 1:
85 new_data = {**entry.data}
86 if CONF_DEVICES
in new_data:
87 new_data.pop(CONF_DEVICES)
89 hass.config_entries.async_update_entry(entry, data=new_data, minor_version=2)
92 "Migration to version %s:%s successful", entry.version, entry.minor_version
bool async_setup_entry(HomeAssistant hass, AnovaConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, AnovaConfigEntry entry)
bool async_migrate_entry(HomeAssistant hass, AnovaConfigEntry entry)