@@ -317,6 +317,7 @@ def __init__(
317317 SmileData .__init__ (self )
318318
319319 self .smile_hostname : str | None = None
320+ self ._target_smile : str | None = None
320321
321322 async def connect (self ) -> bool :
322323 """Connect to Plugwise device and determine its name, type and version."""
@@ -432,19 +433,19 @@ async def _smile_detect(self, result: etree, dsmrmain: etree) -> None:
432433 raise UnsupportedDeviceError
433434
434435 ver = semver .version .Version .parse (self .smile_fw_version )
435- target_smile = f"{ model } _v{ ver .major } "
436- LOGGER .debug ("Plugwise identified as %s" , target_smile )
437- if target_smile not in SMILES :
436+ self . _target_smile = f"{ model } _v{ ver .major } "
437+ LOGGER .debug ("Plugwise identified as %s" , self . _target_smile )
438+ if self . _target_smile not in SMILES :
438439 LOGGER .error (
439440 "Your version Smile identified as %s seems unsupported by our plugin, please"
440441 " create an issue on http://github.com/plugwise/python-plugwise" ,
441- target_smile ,
442+ self . _target_smile ,
442443 )
443444 raise UnsupportedDeviceError
444445
445446 self .smile_model = "Gateway"
446- self .smile_name = SMILES [target_smile ].smile_name
447- self .smile_type = SMILES [target_smile ].smile_type
447+ self .smile_name = SMILES [self . _target_smile ].smile_name
448+ self .smile_type = SMILES [self . _target_smile ].smile_type
448449 self .smile_version = (self .smile_fw_version , ver )
449450
450451 if self .smile_type == "stretch" :
@@ -505,16 +506,20 @@ async def _update_domain_objects(self) -> None:
505506
506507 async def async_update (self ) -> PlugwiseData :
507508 """Perform an incremental update for updating the various device states."""
508- if self .smile_type != "power" :
509- await self ._update_domain_objects ()
510- elif not self ._smile_legacy :
511- self ._locations = await self ._request (LOCATIONS )
512- else :
513- self ._modules = await self ._request (MODULES )
514-
515- # P1 legacy has no appliances
516- if not (self .smile_type == "power" and self ._smile_legacy ):
517- self ._appliances = await self ._request (APPLIANCES )
509+ match self ._target_smile :
510+ case "smile_v2" :
511+ self ._modules = await self ._request (MODULES )
512+ case "smile_v3" | "smile_v4" :
513+ self ._locations = await self ._request (LOCATIONS )
514+ case "smile_thermo_v1" | "smile_thermo_v3" | "smile_thermo_v4" :
515+ self ._appliances = await self ._request (APPLIANCES )
516+ await self ._update_domain_objects ()
517+ case "smile_open_therm_v2" | "smile_open_therm_v3" :
518+ self ._appliances = await self ._request (APPLIANCES )
519+ await self ._update_domain_objects ()
520+ self ._modules = await self ._request (MODULES )
521+ case "stretch_v2" | "stretch_v3" :
522+ self ._appliances = await self ._request (APPLIANCES )
518523
519524 self .gw_data ["notifications" ] = self ._notifications
520525
0 commit comments