@@ -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+
176190def 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