From 31e3285789852c3c7f30eb9e6d48a82f8bac4b5b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 22 Sep 2025 08:21:23 +0200 Subject: [PATCH 1/2] bidi: fix discharging if limit_soc is reached --- packages/control/ev/charge_template.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/control/ev/charge_template.py b/packages/control/ev/charge_template.py index 66c7b94661..c596c13c36 100644 --- a/packages/control/ev/charge_template.py +++ b/packages/control/ev/charge_template.py @@ -550,9 +550,12 @@ def scheduled_charging_calc_current(self, if plan.limit.selected != "soc": soc_request_interval_offset = 0 log.debug("Verwendeter Plan: "+str(plan.name)) - if limit.selected == "soc" and soc >= limit.soc_limit and soc >= limit.soc_scheduled: + if (limit.selected == "soc" and + (soc > limit.soc_limit if (plan.bidi_charging_enabled and bidi_state == BidiState.BIDI_CAPABLE) + else soc >= limit.soc_limit) and + soc >= limit.soc_scheduled): message = self.SCHEDULED_CHARGING_REACHED_LIMIT_SOC - elif limit.selected == "soc" and limit.soc_scheduled <= soc < limit.soc_limit: + elif limit.selected == "soc" and limit.soc_scheduled <= soc <= limit.soc_limit: if plan.bidi_charging_enabled and bidi_state == BidiState.BIDI_CAPABLE: message = self.SCHEDULED_CHARGING_BIDI current = min_current @@ -634,7 +637,7 @@ def stop(self) -> Tuple[int, str, str]: return 0, "stop", "Keine Ladung, da der Lademodus Stop aktiv ist." def bidi_charging_allowed(self, selected_plan: int, soc: float): - # Wenn zu über den Limit-SoC geladen wurde, darf nur noch bidirektional entladen werden. + # Wenn über den Limit-SoC geladen wurde, darf nur noch bidirektional entladen werden. for plan in self.data.chargemode.scheduled_charging.plans: if plan.id == selected_plan: - return soc <= plan.limit.soc_limit + return soc < plan.limit.soc_limit From 92aafee7eeb6b1877de3979b5ce8d96e0006bba4 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 24 Sep 2025 07:46:29 +0200 Subject: [PATCH 2/2] evse current could be negative while bidi charging --- packages/helpermodules/setdata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 2846b1db46..5596a93c2f 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -550,7 +550,7 @@ def process_chargepoint_get_topics(self, msg): elif ("/get/evse_current" in msg.topic or "/get/max_evse_current" in msg.topic): # AC-EVSE: 0, 6-32, 600-3200, DC-EVSE 0-500 - self._validate_value(msg, float, [(0, 3200)]) + self._validate_value(msg, float, [(-3200, 3200)]) elif ("/get/version" in msg.topic or "/get/current_branch" in msg.topic or "/get/current_commit" in msg.topic):