2020 CONF_HOST ,
2121 CONF_NAME ,
2222 CONF_PORT ,
23- EVENT_HOMEASSISTANT_STARTED ,
2423 EVENT_HOMEASSISTANT_STOP ,
2524 PERCENTAGE ,
2625 Platform ,
@@ -414,19 +413,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
414413 "hub" : hub ,
415414 }
416415
417- # Tests on some systems have shown that establishing the Modbus connection
418- # can occasionally lead to errors if Home Assistant is not fully loaded.
419- if hass .is_running :
420- # Start init in background so it can be cancelled on unload
421- hub ._init_task = hass .loop .create_task (hub .async_init ())
422- else :
423- # Defer until HA is started, but still capture the task handle for cancellation
424- async def _deferred_init (event : Any ) -> None :
425- if getattr (hub , "_stopping" , False ):
426- return
427- hub ._init_task = hass .loop .create_task (hub .async_init ())
428-
429- hass .bus .async_listen_once (EVENT_HOMEASSISTANT_STARTED , _deferred_init )
416+ await hub .async_init ()
430417
431418 entry .async_on_unload (entry .add_update_listener (config_entry_update_listener ))
432419 return True
@@ -590,6 +577,8 @@ def __init__(
590577 self .config : Any = config # MappingProxyType from entry.options
591578 self .entry : ConfigEntry = entry
592579 self .device_info : DeviceInfo | None = None
580+ self .inverter_model : str | None = None
581+ self ._has_local_inverter_model : bool = False
593582 self .blocks_changed : bool = False
594583 self .initial_groups : dict [Any , Any ] = {} # as returned by the sensor setup - holdingRegs and inputRegs should not change
595584
@@ -691,7 +680,7 @@ async def async_init(self, *args: Any) -> None: # noqa: D102
691680 self .device_info = DeviceInfo (
692681 identifiers = cast (set [tuple [str , str ]], {(DOMAIN , self ._name , INVERTER_IDENT )}),
693682 manufacturer = self .plugin .plugin_manufacturer ,
694- model = getattr ( self .plugin , "inverter_model" , None ),
683+ model = self ._get_inverter_model ( ),
695684 name = plugin_name ,
696685 serial_number = self .seriesnumber ,
697686 sw_version = self .plugin .getSoftwareVersion (self .data ),
@@ -722,6 +711,11 @@ async def async_init(self, *args: Any) -> None: # noqa: D102
722711
723712 self ._init_task = None
724713
714+ def _get_inverter_model (self ) -> str | None :
715+ if self ._has_local_inverter_model :
716+ return self .inverter_model
717+ return getattr (self .plugin , "inverter_model" , None )
718+
725719 async def _deferred_setup_loop (self , interval : int = 30 ) -> None :
726720 """Keep trying to detect inverter type and forward platforms once online."""
727721 import asyncio
@@ -743,7 +737,7 @@ async def _deferred_setup_loop(self, interval: int = 30) -> None:
743737 self .device_info = DeviceInfo (
744738 identifiers = cast (set [tuple [str , str ]], {(DOMAIN , self ._name , INVERTER_IDENT )}),
745739 manufacturer = self .plugin .plugin_manufacturer ,
746- model = getattr ( self .plugin , "inverter_model" , None ),
740+ model = self ._get_inverter_model ( ),
747741 name = plugin_name ,
748742 serial_number = self .seriesnumber ,
749743 sw_version = self .plugin .getSoftwareVersion (self .data ),
0 commit comments