Skip to content

Commit 686c5d0

Browse files
authored
Merge pull request #2949 from LKuemmel/fixes
chargelog: fix wrong start soc, missing range
2 parents 16bd727 + 498da2a commit 686c5d0

1 file changed

Lines changed: 20 additions & 12 deletions

File tree

packages/control/chargelog/chargelog.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,22 +91,26 @@ def collect_data(chargepoint):
9191
if chargepoint.data.get.charge_state:
9292
if log_data.timestamp_start_charging is None:
9393
log_data.timestamp_start_charging = now
94-
if charging_ev.soc_module:
95-
log_data.range_at_start = charging_ev.data.get.range
96-
log_data.soc_at_start = charging_ev.data.get.soc
9794
if chargepoint.data.control_parameter.submode == "time_charging":
9895
log_data.chargemode_log_entry = "time_charging"
9996
else:
10097
log_data.chargemode_log_entry = chargepoint.data.control_parameter.chargemode.value
98+
if charging_ev.soc_module:
99+
if log_data.range_at_start is None:
100+
# manche Vehicle-Module liefern erstmal None
101+
log_data.range_at_start = charging_ev.data.get.range
102+
if (log_data.soc_at_start is None and
103+
chargepoint.data.set.plug_time < charging_ev.data.get.soc_timestamp):
104+
# SoC muss nach dem Anstecken aktualisiert worden sein
105+
log_data.soc_at_start = charging_ev.data.get.soc
101106
log_data.ev = chargepoint.data.set.charging_ev_data.num
102107
log_data.prio = chargepoint.data.control_parameter.prio
103108
log_data.rfid = chargepoint.data.set.rfid
104109
log_data.imported_since_mode_switch = get_value_or_default(
105110
lambda: chargepoint.data.get.imported - log_data.imported_at_mode_switch)
106111
# log.debug(f"imported_since_mode_switch {log_data.imported_since_mode_switch} "
107112
# f"counter {chargepoint.data.get.imported}")
108-
log_data.range_charged = get_value_or_default(lambda: log_data.imported_since_mode_switch /
109-
charging_ev.ev_template.data.average_consump * 100)
113+
log_data.range_charged = _get_range_charged(log_data, charging_ev)
110114
else:
111115
if log_data.timestamp_start_charging is not None:
112116
log_data.time_charged += now - log_data.timestamp_start_charging
@@ -173,6 +177,16 @@ def get_value_or_default(func, default: Optional[Any] = None):
173177
return default
174178

175179

180+
def _get_range_charged(log_data, charging_ev) -> float:
181+
if log_data.range_at_start is not None:
182+
return get_value_or_default(lambda: round(
183+
charging_ev.data.get.range - log_data.range_at_start, 2))
184+
else:
185+
return get_value_or_default(lambda: round(
186+
(log_data.imported_since_mode_switch * charging_ev.ev_template.data.efficiency /
187+
charging_ev.ev_template.data.average_consump), 2))
188+
189+
176190
def save_data(chargepoint, charging_ev, immediately: bool = True):
177191
""" json-Objekt für den Log-Eintrag erstellen, an die Datei anhängen und die Daten, die sich auf den Ladevorgang
178192
beziehen, löschen.
@@ -201,13 +215,7 @@ def _create_entry(chargepoint, charging_ev, immediately: bool = True):
201215
chargepoint.data.get.imported - log_data.imported_at_plugtime, 2))
202216
log_data.imported_since_mode_switch = get_value_or_default(lambda: round(
203217
chargepoint.data.get.imported - log_data.imported_at_mode_switch, 2))
204-
if log_data.range_at_start is not None:
205-
log_data.range_charged = get_value_or_default(lambda: round(
206-
charging_ev.data.get.range - log_data.range_at_start, 2))
207-
else:
208-
log_data.range_charged = get_value_or_default(lambda: round(
209-
(log_data.imported_since_mode_switch * charging_ev.ev_template.data.efficiency /
210-
charging_ev.ev_template.data.average_consump), 2))
218+
log_data.range_charged = _get_range_charged(log_data, charging_ev)
211219
power = 0
212220
if log_data.timestamp_start_charging:
213221
time_charged = get_value_or_default(lambda: log_data.time_charged +

0 commit comments

Comments
 (0)