diff --git a/packages/control/algorithm/chargemodes.py b/packages/control/algorithm/chargemodes.py index 76bc9906a6..15036df58d 100644 --- a/packages/control/algorithm/chargemodes.py +++ b/packages/control/algorithm/chargemodes.py @@ -26,3 +26,4 @@ CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT = CHARGEMODES[0:10] CONSIDERED_CHARGE_MODES_MIN_CURRENT = CHARGEMODES[0:-1] CONSIDERED_CHARGE_MODES_NO_CURRENT = CHARGEMODES[16:18] +CONSIDERED_CHARGE_MODES_CHARGING = CHARGEMODES[0:16] diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index ff14e62cb3..f38d55ecfe 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -23,7 +23,7 @@ from typing import List, Optional from control import data -from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT +from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_CHARGING from control.algorithm.filter_chargepoints import get_chargepoints_by_chargemodes from control.pv import Pv from helpermodules.constants import NO_ERROR @@ -288,14 +288,13 @@ def set_power_limit_controllable(self): def get_power_limit(self): if self.data.config.bat_control_permitted is False: return - chargepoint_by_chagemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT) - power_of_chargepoints_by_chagemodes = sum( - [cp.data.get.power for cp in chargepoint_by_chagemodes if cp.data.get.power is not None]) + chargepoint_by_chargemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_CHARGING) + # Falls aktive Steuerung an und Fahrzeuge laden und kein Überschuss im System ist, + # dann Speichereistung begrenzen. if (self.data.config.power_limit_mode != BatPowerLimitMode.NO_LIMIT.value and - len(chargepoint_by_chagemodes) > 0 and - power_of_chargepoints_by_chagemodes > 0 and + len(chargepoint_by_chargemodes) > 0 and + data.data.cp_all_data.data.get.power > 100 and self.data.get.power_limit_controllable and - # Nur wenn kein Überschuss im System ist, Speicherleistung begrenzen. self.data.get.power <= 0 and data.data.counter_all_data.get_evu_counter().data.get.power >= -100): if self.data.config.power_limit_mode == BatPowerLimitMode.LIMIT_STOP.value: @@ -308,10 +307,10 @@ def get_power_limit(self): control_range_low = data.data.general_data.data.chargemode_config.pv_charging.control_range[0] control_range_high = data.data.general_data.data.chargemode_config.pv_charging.control_range[1] control_range_center = control_range_high - (control_range_high - control_range_low) / 2 - if len(chargepoint_by_chagemodes) == 0: + if len(chargepoint_by_chargemodes) == 0: log.debug("Speicher-Leistung nicht begrenzen, " "da keine Ladepunkte in einem Lademodus mit Netzbezug sind.") - elif power_of_chargepoints_by_chagemodes <= 0: + elif data.data.cp_all_data.data.get.power <= 100: log.debug("Speicher-Leistung nicht begrenzen, da kein Ladepunkt mit Netzubezug lädt.") elif self.data.get.power_limit_controllable is False: log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.") diff --git a/packages/control/bat_all_test.py b/packages/control/bat_all_test.py index 39d8ff01b0..2256629529 100644 --- a/packages/control/bat_all_test.py +++ b/packages/control/bat_all_test.py @@ -132,7 +132,7 @@ class Params: @pytest.mark.parametrize("params", cases, ids=[c.name for c in cases]) -def test_get_charging_power_left(params: Params, caplog, data_fixture, monkeypatch): +def test_get_charging_power_left(params: Params, caplog, data_, monkeypatch): # setup b_all = BatAll() b_all.data.get.power = params.power @@ -195,6 +195,7 @@ def test_get_power_limit(params: PowerLimitParams, data_, monkeypatch): b_all.data.get.power = params.bat_power data.data.counter_all_data = hierarchy_standard() data.data.counter_all_data.data.set.home_consumption = 456 + data.data.cp_all_data.data.get.power = 1400 data.data.counter_data["counter0"].data.get.power = params.evu_power data.data.bat_all_data = b_all