6868from packaging import version
6969
7070
71+ def search_actuator_functionalities (appliance : etree , actuator : str ) -> etree | None :
72+ """Helper-function for finding the relevant xml-structure."""
73+ locator = f"./actuator_functionalities/{ actuator } "
74+ if (search := appliance .find (locator )) is not None :
75+ return search
76+
77+ return None
78+
79+
7180class SmileComm :
7281 """The SmileComm class."""
7382
@@ -455,8 +464,9 @@ def _appl_gateway_info(self, appl: Munch, appliance: etree) -> Munch:
455464 def _appl_regulation_mode_info (self , appliance : etree ) -> None :
456465 """Helper-function for _appliance_info_finder()."""
457466 reg_mode_list : list [str ] = []
458- locator = "./actuator_functionalities/regulation_mode_control_functionality"
459- if (search := appliance .find (locator )) is not None :
467+ if (search := search_actuator_functionalities (
468+ appliance , "regulation_mode_control_functionality"
469+ )) is not None :
460470 if search .find ("allowed_modes" ) is not None :
461471 for mode in search .find ("allowed_modes" ):
462472 reg_mode_list .append (mode .text )
@@ -470,10 +480,9 @@ def _appl_dhw_mode_info(self, appl: Munch, appliance: etree) -> Munch:
470480 Collect dhw control operation modes - Anna + Loria.
471481 """
472482 dhw_mode_list : list [str ] = []
473- locator = (
474- "./actuator_functionalities/domestic_hot_water_mode_control_functionality"
475- )
476- if (search := appliance .find (locator )) is not None :
483+ if (search := search_actuator_functionalities (
484+ appliance , "domestic_hot_water_mode_control_functionality"
485+ )) is not None :
477486 if search .find ("allowed_modes" ) is not None :
478487 for mode in search .find ("allowed_modes" ):
479488 dhw_mode_list .append (mode .text )
@@ -711,8 +720,9 @@ def _get_regulation_mode(
711720 if not (self .smile (ADAM ) and entity_id == self .gateway_id ):
712721 return
713722
714- locator = "./actuator_functionalities/regulation_mode_control_functionality"
715- if (search := appliance .find (locator )) is not None :
723+ if (search := search_actuator_functionalities (
724+ appliance , "regulation_mode_control_functionality"
725+ )) is not None :
716726 data ["select_regulation_mode" ] = search .find ("mode" ).text
717727 self ._count += 1
718728 self ._cooling_enabled = data ["select_regulation_mode" ] == "cooling"
@@ -727,8 +737,9 @@ def _get_gateway_mode(
727737 if not (self .smile (ADAM ) and entity_id == self .gateway_id ):
728738 return
729739
730- locator = "./actuator_functionalities/gateway_mode_control_functionality"
731- if (search := appliance .find (locator )) is not None :
740+ if (search := search_actuator_functionalities (
741+ appliance , "gateway_mode_control_functionality"
742+ )) is not None :
732743 data ["select_gateway_mode" ] = search .find ("mode" ).text
733744 self ._count += 1
734745
0 commit comments