From 6309d56448bf15a47aa16377ce58e4c8434de9b1 Mon Sep 17 00:00:00 2001 From: "Kevin Van Ryckegem [CreateMyTech]" Date: Wed, 7 Oct 2026 23:40:48 +0200 Subject: [PATCH] Support both hot water boost register names --- ThermiaOnlineAPI/api/ThermiaAPI.py | 9 +++- ThermiaOnlineAPI/const.py | 1 + .../test_hot_water_boost_register_name.py | 47 +++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 ThermiaOnlineAPI/tests/test_hot_water_boost_register_name.py diff --git a/ThermiaOnlineAPI/api/ThermiaAPI.py b/ThermiaOnlineAPI/api/ThermiaAPI.py index a4a450f..fe7e2b3 100644 --- a/ThermiaOnlineAPI/api/ThermiaAPI.py +++ b/ThermiaOnlineAPI/api/ThermiaAPI.py @@ -15,6 +15,7 @@ REG_GROUP_OPERATIONAL_TIME, REG_GROUP_TEMPERATURES, REG_HOT_WATER_STATUS, + REG_HOT_WATER_BOOST, REG__HOT_WATER_BOOST, REG_OPERATIONMODE, THERMIA_CONFIG_URL, @@ -376,9 +377,15 @@ def get_group_hot_water(self, device: ThermiaHeatPump) -> Dict[str, Optional[int ) hot_water_boost_switch_data = ( self.__get_switch_register_index_and_value_from_group_by_register_name( - register_data, REG__HOT_WATER_BOOST + register_data, REG_HOT_WATER_BOOST ) ) + if hot_water_boost_switch_data["registerId"] is None: + hot_water_boost_switch_data = ( + self.__get_switch_register_index_and_value_from_group_by_register_name( + register_data, REG__HOT_WATER_BOOST + ) + ) device.set_register_index_hot_water_switch(hot_water_switch_data["registerId"]) diff --git a/ThermiaOnlineAPI/const.py b/ThermiaOnlineAPI/const.py index 4ac7a9c..4398744 100644 --- a/ThermiaOnlineAPI/const.py +++ b/ThermiaOnlineAPI/const.py @@ -85,6 +85,7 @@ ############################################################################### REG_HOT_WATER_STATUS = "REG_HOT_WATER_STATUS" +REG_HOT_WATER_BOOST = "REG_HOT_WATER_BOOST" REG__HOT_WATER_BOOST = "REG__HOT_WATER_BOOST" ############################################################################### diff --git a/ThermiaOnlineAPI/tests/test_hot_water_boost_register_name.py b/ThermiaOnlineAPI/tests/test_hot_water_boost_register_name.py new file mode 100644 index 0000000..2494491 --- /dev/null +++ b/ThermiaOnlineAPI/tests/test_hot_water_boost_register_name.py @@ -0,0 +1,47 @@ +import pytest + +from ..api.ThermiaAPI import ThermiaAPI + + +@pytest.mark.parametrize( + "register_name", + ["REG_HOT_WATER_BOOST", "REG__HOT_WATER_BOOST"], +) +def test_hot_water_boost_register_name_aliases(monkeypatch, register_name): + register_group = [ + { + "registerId": 115521, + "registerName": "REG_HOT_WATER_STATUS", + "registerValue": 1.0, + "valueNames": [{"value": 0}, {"value": 1}], + }, + { + "registerId": 115537, + "registerName": register_name, + "registerValue": 1.0, + "valueNames": [{"value": 0}, {"value": 1}], + }, + ] + + class HeatPump: + id = "test-device" + + def set_register_index_hot_water_switch(self, register_index): + self.hot_water_switch_register_index = register_index + + def set_register_index_hot_water_boost_switch(self, register_index): + self.hot_water_boost_register_index = register_index + + api = ThermiaAPI.__new__(ThermiaAPI) + monkeypatch.setattr( + api, + "_ThermiaAPI__get_register_group", + lambda _device_id, _register_group: register_group, + ) + + heat_pump = HeatPump() + state = api.get_group_hot_water(heat_pump) + + assert state == {"hot_water_switch": 1, "hot_water_boost_switch": 1} + assert heat_pump.hot_water_switch_register_index == 115521 + assert heat_pump.hot_water_boost_register_index == 115537