Skip to content

Commit 8cc78f2

Browse files
committed
Break out common bit of actuator locating
1 parent 978fc32 commit 8cc78f2

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

plugwise/helper.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@
6868
from 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+
7180
class 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

Comments
 (0)