88from .const import DOMAIN
99from .coordinator import MetCoordinator
1010import asyncio
11+ from .met_api import MetApi
1112
1213PLATFORMS : list [Platform ] = [Platform .WEATHER ]
1314_LOGGER = logging .getLogger (__name__ )
@@ -18,13 +19,18 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
1819 lat = entry .data [CONF_LATITUDE ]
1920 lon = entry .data [CONF_LONGITUDE ]
2021 name = entry .data [CONF_NAME ]
21- coordinator = MetCoordinator (hass , entry , name , lat , lon )
22- await coordinator .async_config_entry_first_refresh ()
2322
24- if DOMAIN not in hass .data :
25- hass .data [DOMAIN ] = {}
26- hass .data [DOMAIN ]["coordinator" ] = coordinator
23+ # Ensure DOMAIN is initialized in hass.data
24+ hass .data .setdefault (DOMAIN , {})
25+ # Create and store a single MetApi instance if not already present
26+ if "api" not in hass .data [DOMAIN ]:
27+ hass .data [DOMAIN ]["api" ] = MetApi (hass )
28+ api = hass .data [DOMAIN ]["api" ]
29+
30+ coordinator = MetCoordinator (hass , entry , name , lat , lon , api )
31+ await coordinator .async_config_entry_first_refresh ()
2732
33+ hass .data [DOMAIN ][entry .entry_id ] = coordinator
2834 await hass .config_entries .async_forward_entry_setups (entry , PLATFORMS )
2935 return True
3036
@@ -42,9 +48,8 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
4248 )
4349 )
4450 if unloaded :
45- coordinator = hass .data [DOMAIN ]["coordinator" ]
46- if coordinator is not None :
47- hass .data [DOMAIN ]["coordinator" ] = None
51+ hass .data [DOMAIN ].pop (entry .entry_id )
52+ _LOGGER .debug ("pop coordinator" )
4853 return unloaded
4954
5055
0 commit comments