1 """Support for UV data from openuv.io."""
3 from __future__
import annotations
8 from pyopenuv
import Client
26 DATA_PROTECTION_WINDOW,
33 from .coordinator
import OpenUvCoordinator
35 PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR]
39 """Set up OpenUV as config entry."""
40 websession = aiohttp_client.async_get_clientsession(hass)
42 entry.data[CONF_API_KEY],
43 entry.data.get(CONF_LATITUDE, hass.config.latitude),
44 entry.data.get(CONF_LONGITUDE, hass.config.longitude),
45 altitude=entry.data.get(CONF_ELEVATION, hass.config.elevation),
47 check_status_before_request=
True,
50 async
def async_update_protection_data() -> dict[str, Any]:
51 """Update binary sensor (protection window) data."""
52 low = entry.options.get(CONF_FROM_WINDOW, DEFAULT_FROM_WINDOW)
53 high = entry.options.get(CONF_TO_WINDOW, DEFAULT_TO_WINDOW)
54 return await client.uv_protection_window(low=low, high=high)
56 coordinators: dict[str, OpenUvCoordinator] = {
60 name=coordinator_name,
61 latitude=client.latitude,
62 longitude=client.longitude,
63 update_method=update_method,
65 for coordinator_name, update_method
in (
66 (DATA_UV, client.uv_index),
67 (DATA_PROTECTION_WINDOW, async_update_protection_data),
72 coordinator.async_config_entry_first_refresh()
73 for coordinator
in coordinators.values()
75 await asyncio.gather(*init_tasks)
77 hass.data.setdefault(DOMAIN, {})
78 hass.data[DOMAIN][entry.entry_id] = coordinators
80 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
86 """Unload an OpenUV config entry."""
87 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
89 hass.data[DOMAIN].pop(entry.entry_id)
95 """Migrate the config entry upon new versions."""
96 version = entry.version
99 LOGGER.debug(
"Migrating from version %s", version)
103 data.pop(CONF_BINARY_SENSORS,
None)
104 data.pop(CONF_SENSORS,
None)
106 hass.config_entries.async_update_entry(entry, data=data, version=2)
107 LOGGER.debug(
"Migration to version %s successful", version)
bool async_migrate_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)