1 """The Environment Canada (EC) component."""
3 from datetime
import timedelta
6 from env_canada
import ECAirQuality, ECRadar, ECWeather
14 from .const
import CONF_STATION, DOMAIN
15 from .coordinator
import ECDataUpdateCoordinator
17 DEFAULT_RADAR_UPDATE_INTERVAL =
timedelta(minutes=5)
18 DEFAULT_WEATHER_UPDATE_INTERVAL =
timedelta(minutes=5)
20 PLATFORMS = [Platform.CAMERA, Platform.SENSOR, Platform.WEATHER]
22 _LOGGER = logging.getLogger(__name__)
26 """Set up EC as config entry."""
27 lat = config_entry.data.get(CONF_LATITUDE)
28 lon = config_entry.data.get(CONF_LONGITUDE)
29 station = config_entry.data.get(CONF_STATION)
30 lang = config_entry.data.get(CONF_LANGUAGE,
"English")
35 weather_data = ECWeather(
37 coordinates=(lat, lon),
38 language=lang.lower(),
41 hass, weather_data,
"weather", DEFAULT_WEATHER_UPDATE_INTERVAL
44 await coordinators[
"weather_coordinator"].async_config_entry_first_refresh()
45 except ConfigEntryNotReady:
47 _LOGGER.warning(
"Unable to retrieve Environment Canada weather")
49 radar_data = ECRadar(coordinates=(lat, lon))
51 hass, radar_data,
"radar", DEFAULT_RADAR_UPDATE_INTERVAL
54 await coordinators[
"radar_coordinator"].async_config_entry_first_refresh()
55 except ConfigEntryNotReady:
57 _LOGGER.warning(
"Unable to retrieve Environment Canada radar")
59 aqhi_data = ECAirQuality(coordinates=(lat, lon))
61 hass, aqhi_data,
"AQHI", DEFAULT_WEATHER_UPDATE_INTERVAL
64 await coordinators[
"aqhi_coordinator"].async_config_entry_first_refresh()
65 except ConfigEntryNotReady:
67 _LOGGER.warning(
"Unable to retrieve Environment Canada AQHI")
70 raise ConfigEntryNotReady
72 hass.data.setdefault(DOMAIN, {})
73 hass.data[DOMAIN][config_entry.entry_id] = coordinators
75 await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
81 """Unload a config entry."""
82 unload_ok = await hass.config_entries.async_unload_platforms(
83 config_entry, PLATFORMS
86 hass.data[DOMAIN].pop(config_entry.entry_id)
92 """Build and return the device info for EC."""
94 entry_type=DeviceEntryType.SERVICE,
95 identifiers={(DOMAIN, config_entry.entry_id)},
96 manufacturer=
"Environment Canada",
97 name=config_entry.title,
98 configuration_url=
"https://weather.gc.ca/",
bool async_unload_entry(HomeAssistant hass, ConfigEntry config_entry)
DeviceInfo device_info(ConfigEntry config_entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry config_entry)