From 34028e63bdde585644e1b8c6caca7838e670d80c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 22 Oct 2026 14:37:33 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Verbraucher:=20Fix=20Lastmanagement-Nachric?= =?UTF-8?q?ht=20bei=20=C3=9Cberschuss-Laden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/algorithm/surplus_controlled.py | 5 ++- .../algorithm/surplus_controlled_test.py | 37 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py index ec07d7dd8d..3c8a48187c 100644 --- a/packages/control/algorithm/surplus_controlled.py +++ b/packages/control/algorithm/surplus_controlled.py @@ -95,9 +95,10 @@ def _set_loadmangement_message(self, limit: LoadmanagementLimit, load: Load) -> None: # Strom muss an diesem Zähler geändert werden - if (current != load.data.set.current and + if ((load.data.set.current is None or round(current, 2) != round(load.data.set.current, 2)) and # Strom erreicht nicht die vorgegebene Stromstärke - current != max(load.data.control_parameter.required_currents) and + round(current, 2) != round(max(load.data.control_parameter.required_currents), 2) and + limit.message is not None and # im PV-Laden wird der Strom immer durch die Leistung begrenzt limit.limiting_value != LimitingValue.POWER): load.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden" diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py index 6ff1d6de4f..1e83d10878 100644 --- a/packages/control/algorithm/surplus_controlled_test.py +++ b/packages/control/algorithm/surplus_controlled_test.py @@ -14,6 +14,8 @@ from control.chargepoint.control_parameter import ControlParameter from control.counter_all.counter_all import CounterAll from control.ev.ev import Ev +from control.consumer.consumer import Consumer +from control.limiting_value import LimitingValue, LoadmanagementLimit @pytest.fixture(autouse=True) @@ -42,6 +44,41 @@ def mock_data() -> None: data.data.counter_all_data = CounterAll() +@pytest.mark.parametrize( + "current, set_current, required_current, limit, expected_message", + [ + pytest.param(13.04, 6, 13.043478260869565, + LoadmanagementLimit(None, None), None, id="reported-consumer-rounding"), + pytest.param(12, 6, 13.04, LoadmanagementLimit(None, None), None, + id="no-limit-reason"), + pytest.param(13.04, 6, 13.043478260869565, + LoadmanagementLimit("current limit", LimitingValue.CURRENT), None, + id="rounded-required-current"), + pytest.param(13.04, 13.043478260869565, 16, + LoadmanagementLimit("current limit", LimitingValue.CURRENT), None, + id="rounded-unchanged-current"), + pytest.param(12, 6, 13.04, + LoadmanagementLimit("power limit", LimitingValue.POWER), None, + id="normal-pv-power-limit"), + pytest.param(12, 6, 13.04, + LoadmanagementLimit("current limit", LimitingValue.CURRENT), + "Es kann nicht mit der vorgegebenen Stromstärke geladen werden current limit", + id="actual-current-limit"), + pytest.param(12, None, 13.04, + LoadmanagementLimit("current limit", LimitingValue.CURRENT), + "Es kann nicht mit der vorgegebenen Stromstärke geladen werden current limit", + id="no-previous-set-current"), + ]) +def test_set_loadmanagement_message(current, set_current, required_current, limit, expected_message): + consumer = Consumer(27) + consumer.data.set.current = set_current + consumer.data.control_parameter.required_currents = [required_current, 0, 0] + + SurplusControlled()._set_loadmangement_message(current, limit, consumer) + + assert consumer.data.get.state_str == expected_message + + @pytest.mark.parametrize("new_current, expected_current", [ pytest.param(7, 10), From 9663bef1857a206dba2b358d16476aff1d0ad173 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 22 Oct 2026 15:10:09 +0200 Subject: [PATCH 2/2] fix pytest --- packages/control/algorithm/surplus_controlled_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py index 1e83d10878..0685128353 100644 --- a/packages/control/algorithm/surplus_controlled_test.py +++ b/packages/control/algorithm/surplus_controlled_test.py @@ -52,20 +52,20 @@ def mock_data() -> None: pytest.param(12, 6, 13.04, LoadmanagementLimit(None, None), None, id="no-limit-reason"), pytest.param(13.04, 6, 13.043478260869565, - LoadmanagementLimit("current limit", LimitingValue.CURRENT), None, + LoadmanagementLimit(" current limit", LimitingValue.CURRENT), None, id="rounded-required-current"), pytest.param(13.04, 13.043478260869565, 16, - LoadmanagementLimit("current limit", LimitingValue.CURRENT), None, + LoadmanagementLimit(" current limit", LimitingValue.CURRENT), None, id="rounded-unchanged-current"), pytest.param(12, 6, 13.04, - LoadmanagementLimit("power limit", LimitingValue.POWER), None, + LoadmanagementLimit(" power limit", LimitingValue.POWER), None, id="normal-pv-power-limit"), pytest.param(12, 6, 13.04, - LoadmanagementLimit("current limit", LimitingValue.CURRENT), + LoadmanagementLimit(" current limit", LimitingValue.CURRENT), "Es kann nicht mit der vorgegebenen Stromstärke geladen werden current limit", id="actual-current-limit"), pytest.param(12, None, 13.04, - LoadmanagementLimit("current limit", LimitingValue.CURRENT), + LoadmanagementLimit(" current limit", LimitingValue.CURRENT), "Es kann nicht mit der vorgegebenen Stromstärke geladen werden current limit", id="no-previous-set-current"), ])