From b4c48595501482fd6af5fd8ffb502665386c7cf9 Mon Sep 17 00:00:00 2001 From: seaspotter Date: Wed, 14 Oct 2026 18:43:49 +0200 Subject: [PATCH] min_soc_bat_mode: Speicher-Leistung bei Entladung-nicht-erlaubt nur bei echter Entladung kappen --- packages/control/bat_all.py | 16 +++++++++------- packages/control/bat_all_test.py | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index 7c3e9fd21d..255858a658 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -417,10 +417,11 @@ def get_charging_power_left_diff(self): absolute_bat_discharge_power) log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W") else: - # Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug - # weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das - # nicht erlaubt hat. - charging_power_left = 0 + # Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans + # Fahrzeug weitergereicht werden, sonst wird der Speicher entladen, obwohl der + # Nutzer das nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung + # weiterhin für ihn reserviert. + charging_power_left = max(base_power, 0) else: log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben " "Leistung entladen wird.") @@ -456,10 +457,11 @@ def get_charging_power_left_diff(self): absolute_bat_discharge_power) log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W") else: - # Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug + # Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans Fahrzeug # weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das - # nicht erlaubt hat. - charging_power_left = 0 + # nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung weiterhin für + # ihn reserviert. + charging_power_left = max(base_power, 0) else: log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben " "Leistung entladen wird.") diff --git a/packages/control/bat_all_test.py b/packages/control/bat_all_test.py index b877c058ac..0985f3e6c5 100644 --- a/packages/control/bat_all_test.py +++ b/packages/control/bat_all_test.py @@ -131,7 +131,7 @@ class Params: Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher entlädt trotzdem", ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 90, 0, False), Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher lädt", - ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 0, False), + ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 500, False), Params("Mindest-SoC, SoC erreicht, Speicher ist voll", ChargemodeConfigBat(mode="min_soc_bat_mode"), 0, 100, 0, False), Params("Mindest-SoC, SoC erreicht, Entladung in Auto, Speicher entlädt, Entladeleistung nicht erreicht", @@ -172,7 +172,7 @@ class Params: Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher entlädt trotzdem"), ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 60, 0, False, hysteresis_discharge=True), Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher lädt"), - ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 0, False, hysteresis_discharge=True), + ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 500, False, hysteresis_discharge=True), ]