diff --git a/packages/control/algorithm/filter_chargepoints.py b/packages/control/algorithm/filter_chargepoints.py index 8cc9cbd092..23df204294 100644 --- a/packages/control/algorithm/filter_chargepoints.py +++ b/packages/control/algorithm/filter_chargepoints.py @@ -5,6 +5,7 @@ from control import data from control.chargemode import Chargemode +from control.chargepoint.chargepoint import Chargepoint from control.consumer.consumer import Consumer from control.consumer.usage import ConsumerUsage from control.load import get_load_str @@ -62,7 +63,8 @@ def filter_loads_by_chargemodes(grouped_loads: List[Load], def filter_active_loads(grouped_loads: List[Load]) -> List[Load]: active_loads: List[Load] = [] for load in grouped_loads: - if load.data.control_parameter.required_current != 0: + if ((isinstance(load, Chargepoint) and load.data.control_parameter.required_current != 0) or + (isinstance(load, Consumer) and load.data.set.switch_interval_elapsed)): active_loads.append(load) return active_loads diff --git a/packages/control/algorithm/filter_chargepoints_test.py b/packages/control/algorithm/filter_chargepoints_test.py index 410f179809..51e8d38039 100644 --- a/packages/control/algorithm/filter_chargepoints_test.py +++ b/packages/control/algorithm/filter_chargepoints_test.py @@ -207,6 +207,7 @@ def test_filter_active_loads_removes_loads_with_zero_required_current( mock_cp1.data.control_parameter.required_current = 0 mock_cp2.data.control_parameter.required_current = 6 mock_consumer3.data.control_parameter.required_current = 1 + mock_consumer3.data.set.switch_interval_elapsed = True # evaluation active_loads = filter_chargepoints.filter_active_loads([mock_cp1, mock_cp2, mock_consumer3]) diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py index 20d7657588..dc226e8d75 100644 --- a/packages/control/algorithm/integration_test/instant_charging_test.py +++ b/packages/control/algorithm/integration_test/instant_charging_test.py @@ -23,12 +23,13 @@ def all_cp_instant_charging_1p(): control_parameter.required_current = 16 control_parameter.chargemode = Chargemode.INSTANT_CHARGING control_parameter.submode = Chargemode.INSTANT_CHARGING - control_parameter = data.data.consumer_data["consumer7"].data.control_parameter - control_parameter.min_current = 0.5 - control_parameter.required_current = 0.5 - control_parameter.required_currents = [0.5, 0, 0] - control_parameter.chargemode = Chargemode.INSTANT_CHARGING - control_parameter.submode = Chargemode.INSTANT_CHARGING + consumer = data.data.consumer_data["consumer7"] + consumer.data.control_parameter.min_current = 0.5 + consumer.data.control_parameter.required_current = 0.5 + consumer.data.control_parameter.required_currents = [0.5, 0, 0] + consumer.data.control_parameter.chargemode = Chargemode.INSTANT_CHARGING + consumer.data.control_parameter.submode = Chargemode.INSTANT_CHARGING + consumer.data.set.switch_interval_elapsed = True @pytest.fixture() diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py index 7ebfed6a27..f7061a2c00 100644 --- a/packages/control/algorithm/integration_test/pv_charging_test.py +++ b/packages/control/algorithm/integration_test/pv_charging_test.py @@ -25,14 +25,15 @@ def all_cp_pv_charging_3p(): control_parameter.chargemode = Chargemode.PV_CHARGING control_parameter.submode = Chargemode.PV_CHARGING control_parameter.phases = 3 - control_parameter = data.data.consumer_data["consumer7"].data.control_parameter - control_parameter.min_current = 0.5 - control_parameter.required_current = 0.5 - control_parameter.required_currents = [0.5, 0, 0] - control_parameter.phases = 1 - control_parameter.chargemode = Chargemode.PV_CHARGING - control_parameter.submode = Chargemode.PV_CHARGING - control_parameter.state = ChargepointState.CHARGING_ALLOWED + consumer = data.data.consumer_data["consumer7"] + consumer.data.control_parameter.min_current = 0.5 + consumer.data.control_parameter.required_current = 0.5 + consumer.data.control_parameter.required_currents = [0.5, 0, 0] + consumer.data.control_parameter.phases = 1 + consumer.data.control_parameter.chargemode = Chargemode.PV_CHARGING + consumer.data.control_parameter.submode = Chargemode.PV_CHARGING + consumer.data.control_parameter.state = ChargepointState.CHARGING_ALLOWED + consumer.data.set.switch_interval_elapsed = True @pytest.fixture() diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py index 7e19348f1b..ec07d7dd8d 100644 --- a/packages/control/algorithm/surplus_controlled.py +++ b/packages/control/algorithm/surplus_controlled.py @@ -169,7 +169,8 @@ def set_required_current_to_max(self, grouped_loads: List[Load]) -> None: CONSIDERED_CHARGE_MODES_BIDI_DISCHARGE): try: control_parameter = load.data.control_parameter - if control_parameter.required_current != 0: + if ((isinstance(load, Chargepoint) and control_parameter.required_current != 0) or + (isinstance(load, Consumer) and load.data.set.switch_interval_elapsed)): required_currents = control_parameter.required_currents if isinstance(load, Chargepoint): charging_ev_data = load.data.set.charging_ev_data diff --git a/packages/control/consumer/consumer.py b/packages/control/consumer/consumer.py index 3bf5dd8931..baff6e5e61 100644 --- a/packages/control/consumer/consumer.py +++ b/packages/control/consumer/consumer.py @@ -123,7 +123,7 @@ def is_switch_interval_elapsed(self): def get_parameter(self) -> Tuple[float, Optional[str], Optional[Chargemode], Chargemode]: if self.data.set.switch_interval_elapsed is False: log.debug("Intervall für neuen Schaltbefehl nicht abgelaufen.") - return (0, + return (max(self.data.get.currents), None, self.data.control_parameter.chargemode, self.data.control_parameter.submode)