1- """Ladepunkt-Logik
2-
3- charging_ev: EV, das aktuell laden darf
4- charging_ev_prev: EV, das vorher geladen hat. Dies wird benötigt, da wenn das EV nicht mehr laden darf, z.B. weil
5- Autolock aktiv ist, gewartet werden muss, bis die Ladeleistung 0 ist und dann erst der Eintrag im Protokoll erstellt
6- werden kann.
7- charging_ev = -1 zeigt an, dass der LP im Algorithmus nicht berücksichtigt werden soll. Ist das Ev abgesteckt, wird
8- auch charging_ev_prev -1 und im nächsten Zyklus kann ein neues Profil geladen werden.
9-
10- ID-Tag/Code-Eingabe:
11- Mit einem ID-Tag/Code kann optional der Ladepunkt freigeschaltet werden, es wird gleichzeitig immer ein EV damit
12- zugeordnet, mit dem nach der Freischaltung geladen werden soll. Wenn max 5 Min nach dem Scannen kein Auto
13- angesteckt wird, wird der Tag verworfen. Ebenso wenn kein EV gefunden wird.
14- Tag-Liste: Tags, mit denen der Ladepunkt freigeschaltet werden kann. Ist diese leer, kann mit jedem Tag der Ladepunkt
15- freigeschaltet werden.
16- """
171from dataclasses import asdict
182import dataclasses
193import logging
@@ -215,41 +199,28 @@ def _process_charge_stop(self) -> None:
215199 self .data .set .ocpp_transaction_id ,
216200 self .data .set .rfid )
217201 Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/ocpp_transaction_id" , None )
218- if self .data .set .charging_ev_prev != - 1 :
219- # Daten zurücksetzen, wenn nicht geladen werden soll.
220- self .reset_control_parameter_at_charge_stop ()
221- data .data .counter_all_data .get_evu_counter ().reset_switch_on_off (
222- self , data .data .ev_data ["ev" + str (self .data .set .charging_ev_prev )])
223- # Abstecken
224- if not self .data .get .plug_state :
225- self .data .control_parameter = control_parameter_factory ()
226- # Standardprofil nach Abstecken laden
227- if self .data .set .charge_template .data .load_default :
228- self .data .config .ev = 0
229- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/config/ev" , 0 )
230- # Ladepunkt nach Abstecken sperren
231- if self .template .data .disable_after_unplug :
232- self .data .set .manual_lock = True
233- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/manual_lock" , True )
234- log .debug ("/set/manual_lock True" )
235- # Ev wurde noch nicht aktualisiert.
236- # Ladeprofil aus den Einstellungen laden.
237- if data .data .general_data .data .temporary_charge_templates_active :
238- self .update_charge_template (
239- data .data .ev_data ["ev" + str (self .data .set .charging_ev_prev )].charge_template )
240- chargelog .save_and_reset_data (self , data .data .ev_data ["ev" + str (self .data .set .charging_ev_prev )])
241- self .data .set .charging_ev_prev = - 1
242- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/charging_ev_prev" ,
243- self .data .set .charging_ev_prev )
244- self .data .set .rfid = None
245- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/rfid" , None )
246- self .data .set .plug_time = None
247- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/plug_time" , None )
248- self .data .set .phases_to_use = self .data .get .phases_in_use
249- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/phases_to_use" ,
250- self .data .set .phases_to_use )
251- self .data .set .charging_ev = - 1
252- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/charging_ev" , - 1 )
202+ self .reset_control_parameter_at_charge_stop ()
203+ data .data .counter_all_data .get_evu_counter ().reset_switch_on_off (self )
204+ if self .data .get .plug_state is False :
205+ self .data .control_parameter = control_parameter_factory ()
206+ if self .data .set .charge_template .data .load_default :
207+ self .data .config .ev = 0
208+ Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/config/ev" , 0 )
209+ if self .template .data .disable_after_unplug :
210+ self .data .set .manual_lock = True
211+ Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/manual_lock" , True )
212+ log .debug ("/set/manual_lock True" )
213+ if data .data .general_data .data .temporary_charge_templates_active :
214+ self .update_charge_template (
215+ data .data .ev_data ["ev" + str (self .data .config .ev )].charge_template )
216+ chargelog .save_and_reset_data (self , data .data .ev_data ["ev" + str (self .data .config .ev )])
217+ self .data .set .rfid = None
218+ Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/rfid" , None )
219+ self .data .set .plug_time = None
220+ Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/plug_time" , None )
221+ self .data .set .phases_to_use = self .data .get .phases_in_use
222+ Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/phases_to_use" ,
223+ self .data .set .phases_to_use )
253224 self .data .set .current = 0
254225 Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/current" , 0 )
255226 self .data .set .energy_to_charge = 0
@@ -710,8 +681,7 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
710681 self .check_phase_switch_completed ()
711682
712683 if self .chargemode_changed or self .submode_changed :
713- data .data .counter_all_data .get_evu_counter ().reset_switch_on_off (
714- self , charging_ev )
684+ data .data .counter_all_data .get_evu_counter ().reset_switch_on_off (self )
715685 charging_ev .reset_phase_switch (self .data .control_parameter )
716686 if self .chargemode_changed :
717687 self .data .control_parameter .failed_phase_switches = 0
@@ -724,14 +694,6 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
724694 # Wenn die Nachrichten gesendet wurden, EV wieder löschen, wenn das EV im Algorithmus nicht
725695 # berücksichtigt werden soll.
726696 if not state :
727- if self .data .set .charging_ev != - 1 :
728- # Altes EV merken
729- self .data .set .charging_ev_prev = self .data .set .charging_ev
730- Pub ().pub ("openWB/set/chargepoint/" + str (self .num ) +
731- "/set/charging_ev_prev" , self .data .set .charging_ev_prev )
732- self .data .set .charging_ev = - 1
733- Pub ().pub ("openWB/set/chargepoint/" +
734- str (self .num )+ "/set/charging_ev" , - 1 )
735697 log .debug (f'LP { self .num } , EV: { self .data .set .charging_ev_data .data .name } '
736698 f' (EV-Nr.{ vehicle } ): Lademodus '
737699 f'{ self .data .set .charge_template .data .chargemode .selected } , Submodus: '
@@ -816,18 +778,16 @@ def _get_charging_ev(self, vehicle: int, ev_list: Dict[str, Ev]) -> Ev:
816778 " verwendet." )
817779 charging_ev = ev_list ["ev0" ]
818780 vehicle = 0
819- if self .data .set . charging_ev_prev != vehicle :
781+ if self .data .config . ev != vehicle :
820782 Pub ().pub (f"openWB/set/vehicle/{ charging_ev .num } /get/force_soc_update" , True )
821783 log .debug ("SoC nach EV-Wechsel" )
822784 # wenn vorher kein anderes Fahrzeug zugeordnet war, Ladeprofil nicht zurücksetzen
823- if (( self .data .set . charging_ev_prev != vehicle and self . data . set . charging_ev_prev != - 1 ) or
785+ if (self .data .config . ev != vehicle or
824786 (self .data .set .charge_template .data .id != charging_ev .charge_template .data .id )):
825787 self .update_charge_template (charging_ev .charge_template )
826788 self .data .set .charging_ev_data = charging_ev
827- self .data .set .charging_ev = vehicle
828- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/charging_ev" , vehicle )
829- self .data .set .charging_ev_prev = vehicle
830- Pub ().pub ("openWB/set/chargepoint/" + str (self .num )+ "/set/charging_ev_prev" , vehicle )
789+ self .data .config .ev = vehicle
790+ Pub ().pub (f"openWB/set/chargepoint/{ self .num } /config" , dataclasses .asdict (self .data .config ))
831791 return charging_ev
832792
833793 def update_charge_template (self , charge_template : ChargeTemplate ) -> None :
0 commit comments