Skip to content

Commit b5714c7

Browse files
authored
bidi: fix discharging if limit_soc is reached (#2775)
* bidi: fix discharging if limit_soc is reached * evse current could be negative while bidi charging
1 parent c9b841b commit b5714c7

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

packages/control/ev/charge_template.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,12 @@ def scheduled_charging_calc_current(self,
550550
if plan.limit.selected != "soc":
551551
soc_request_interval_offset = 0
552552
log.debug("Verwendeter Plan: "+str(plan.name))
553-
if limit.selected == "soc" and soc >= limit.soc_limit and soc >= limit.soc_scheduled:
553+
if (limit.selected == "soc" and
554+
(soc > limit.soc_limit if (plan.bidi_charging_enabled and bidi_state == BidiState.BIDI_CAPABLE)
555+
else soc >= limit.soc_limit) and
556+
soc >= limit.soc_scheduled):
554557
message = self.SCHEDULED_CHARGING_REACHED_LIMIT_SOC
555-
elif limit.selected == "soc" and limit.soc_scheduled <= soc < limit.soc_limit:
558+
elif limit.selected == "soc" and limit.soc_scheduled <= soc <= limit.soc_limit:
556559
if plan.bidi_charging_enabled and bidi_state == BidiState.BIDI_CAPABLE:
557560
message = self.SCHEDULED_CHARGING_BIDI
558561
current = min_current
@@ -634,7 +637,7 @@ def stop(self) -> Tuple[int, str, str]:
634637
return 0, "stop", "Keine Ladung, da der Lademodus Stop aktiv ist."
635638

636639
def bidi_charging_allowed(self, selected_plan: int, soc: float):
637-
# Wenn zu über den Limit-SoC geladen wurde, darf nur noch bidirektional entladen werden.
640+
# Wenn über den Limit-SoC geladen wurde, darf nur noch bidirektional entladen werden.
638641
for plan in self.data.chargemode.scheduled_charging.plans:
639642
if plan.id == selected_plan:
640-
return soc <= plan.limit.soc_limit
643+
return soc < plan.limit.soc_limit

packages/helpermodules/setdata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ def process_chargepoint_get_topics(self, msg):
551551
elif ("/get/evse_current" in msg.topic or
552552
"/get/max_evse_current" in msg.topic):
553553
# AC-EVSE: 0, 6-32, 600-3200, DC-EVSE 0-500
554-
self._validate_value(msg, float, [(0, 3200)])
554+
self._validate_value(msg, float, [(-3200, 3200)])
555555
elif ("/get/version" in msg.topic or
556556
"/get/current_branch" in msg.topic or
557557
"/get/current_commit" in msg.topic):

0 commit comments

Comments
 (0)