1 """The AEMET OpenData component."""
5 from aemet_opendata.exceptions
import AemetError, TownNotFound
6 from aemet_opendata.interface
import AEMET, ConnectionOptions, UpdateFeature
14 from .const
import CONF_STATION_UPDATES, PLATFORMS
15 from .coordinator
import AemetConfigEntry, AemetData, WeatherUpdateCoordinator
17 _LOGGER = logging.getLogger(__name__)
21 """Set up AEMET OpenData as config entry."""
22 name = entry.data[CONF_NAME]
23 api_key = entry.data[CONF_API_KEY]
24 latitude = entry.data[CONF_LATITUDE]
25 longitude = entry.data[CONF_LONGITUDE]
26 update_features: int = UpdateFeature.FORECAST
27 if entry.options.get(CONF_STATION_UPDATES,
True):
28 update_features |= UpdateFeature.STATION
30 options = ConnectionOptions(api_key, update_features)
31 aemet = AEMET(aiohttp_client.async_get_clientsession(hass), options)
33 await aemet.select_coordinates(latitude, longitude)
34 except TownNotFound
as err:
37 except AemetError
as err:
41 await weather_coordinator.async_config_entry_first_refresh()
43 entry.runtime_data =
AemetData(name=name, coordinator=weather_coordinator)
45 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
47 entry.async_on_unload(entry.add_update_listener(async_update_options))
54 await hass.config_entries.async_reload(entry.entry_id)
58 """Unload a config entry."""
59 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
None async_update_options(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, AemetConfigEntry entry)