Jump to content

WARP2 Beta-Firmware mit OCPP-Unterstützung


Recommended Posts

Geschrieben

ACHTUNG: Dieser Thread über die OCPP Unterstüzung ist veraltet, biete diesem Thread folgen:

 

Moin,

Die vergangenen Monate habe ich an einer OCPP-Implementierung für den WARP Charger gearbeitet. Als erste Vorschau hier eine Beta-Version.

Was funktioniert bereits?

Aktuell unterstützt wird das Core Profile von OCPP1.6J, folgende Funktionen sind mit einem OCPP-Server möglich:

  • Starten/Stoppen von Ladevorgängen
  • Autorisierung von Ladevorgängen über NFC-Tags
  • Steuerung der Verfügbarkeit
  • Anzeige des aktuellen Status der Wallbox
  • Einstellen diverser Konfigurationen
  • Übertragung von Zählerwerten an den Server
  • Neustart der Wallbox

Es gibt noch ein paar Einschränkungen bezüglich der Zählerwert-Historie: Laut Spezifikation können Zählerwerte über einen Ladevorgang auf der Wallbox gesammelt werden und beim Ende des Ladevorgangs auf einmal übertragen werden. Das unterstützen wir derzeit nicht. Diese Einschränkung ist aber nach OCPP-Spezifikation erlaubt, sollte also hoffentlich bei keinem Server zu Problemem führen.

Bisher ist die OCPP-Implementierung mit SteVe 3.4.9: (https://github.com/steve-community/steve) sowie https://web.ecarup.com/ erfolgreich getestet worden. Weitere OCPP-Server werden wir im Zuge der Weiterentwicklung testen.

Was fehlt?

Neben den genannten Einschänkungen bzgl. der Zähler-Historie fehlen noch folgende (geplante) Features bzw. bestehen folgende Probleme:

  • Bessere Einbindung ins Webinterface: Aktuell kann OCPP aktiviert, sowie die Server-URL eingetragen werden. Außer im Ereignis-Log gibt es kein Feedback über den OCPP-Betrieb.
  • Entkopplung in eine eigene Ladestromgrenze: Aktuell benutzt OCPP die "externe Steuerung"-Ladegrenze, blockiert damit also andere Steuerungen wie z.B. EVCC oder eigene Scripte. Wir werden deshalb OCPP eine eigene Ladestromgrenze zuweisen.
  • Bessere Verzahnung mit anderen Features der Wallbox: Im Moment läuft OCPP komplett parallel neben anderen Features wie der NFC-Tag/Benutzerverwaltung. Künftig werden diese Funktionen stärker gekoppelt, sodass z.B. nur entweder die Ladefreigabe per OCPP, oder die lokale Freigabe per NFC-Tag aktiv ist, um Verwirrung zu vermeiden.
  • Um weitere OCPP-Server (z.B. EVCC) zu unterstützen, werden wir möglicherweise weitere Profile, insbesondere das Smart Charging Profile, mit dem Ladeströme gesteuert werden können, implementieren.

Wie kann ich die OCPP-Implementierung testen?

Zum Testen wird ein OCPP-Server benötigt. Lokal kann SteVe (siehe oben) ausgeführt werden. Alternativ bietet https://web.ecarup.com kostenlose Accounts an.

Nach dem Flashen der Beta-Firmware steht im Webinterface der neue Menüpunkt OCPP zur Verfügung. Hier kann die URL des Endpoints eingetragen werden. Es werden sowohl ws (WebSocket), als auch wss (WebSocketSecure)-URLS unterstützt. Wir empfehlen zweiteres, damit die Kommunikation verschlüsselt stattfindet. Die Firmware beinhaltet ein Zertifikats-Bundle mit den üblichen Root-Zertifikaten (siehe hier für Details). In einer späteren Version werden wir hinzufügen, dass ein eigenes TLS-Zertifikat auf die Wallbox hochgeladen werden kann.

Neben dem Aktivieren von OCPP und dem Eintragen der Endpoint-URL muss im Moment außerdem unter Ladecontroller die externe Steuerung aktiviert werden.

Bei einem erfolgreichen Verbindungsaufbau sollten Nachrichten ähnlich zu den folgenden im Ereignis-Log auftauchen:

                  5,790  Sending boot notification. 5790 0 60000 60000
                  5,801  Sending status Available for connector 1
                  5,933  Received message [3, "0", {"status":"Accepted","currentTi
2022-09-14 15:45:33,000  Sending status Available for charge point
2022-09-14 15:45:33,011  Sending status Available for connector 1
2022-09-14 15:45:33,183  Received message [3, "2", {}]
2022-09-14 15:45:33,298  Received message [3, "3", {}]

und der OCPP-Server die Wallbox registrieren.

Warum nur für WARP2?

Der ESP32 Brick, der in der WARP1 verbaut ist, verfügt über 320kB RAM. Der ESP32 Ethernet Brick der in der WARP2 verbaut ist hat zusätzliche 4MB PSRAM. In aktuellen WARP1-Firmwares ist der verfügbare RAM zu knapp für die OCPP-Implementierung. Im Moment ist unklar, ob OCPP auf der WARP1 möglich sein wird.

warp2_firmware_2_0_90_6321dac1_merged.bin

  • 4 weeks later...
Geschrieben (bearbeitet)

Habs mal in Home Assistant mit der via community-store erhältlichen OCPP Integration probiert (https://github.com/lbbrhzn/ocpp).

Verbindung klappt, und kommt auch gleich eine ganze Menge Zeug raus:

image.thumb.png.77a4b359cc42709f06429b770edf35c8.pngimage.thumb.png.dc9547e48786e1e9bc0ed50ae158a556.png

 

Auffällig für mich ist:

- charger.Maximum_Current steht konstant auf 16, obwohl im Web interface ein geringerer Ladestrom konfiguriert ist
- Die Energy-Sensoren stehen alle auf Unbekannt. Könnte aber daran liegen dass das zu ladende Auto erst irgendwann die nächsten Monate kommt und daher hier noch nichts sinnvolles stehen kann ausser die 2-3 Watt die die Wallbox selbst schluckt.
 
Bei der Einrichtung konnte ich aus einer ganzen Latte an Sensoren auswählen - möglicherweise habe ich hier auch einfach das falsche gewählt...

EDIT: Wer lesen kann ist im Vorteil.. falsche Ladegrenze angeguckt. Leider bekomme ich es aber auch via "Externe Steuerung" nicht korrekt hin glaube ich. Habe Externe Steuerung aktiviert, unter Status steht nur bei Erlaubter Ladestrom: "0,000 A durch externe Steuerung", egal was ich in Home Assistant auswähle.

 

IOm Ereignis-Log sehe ich allerdings auch einen haufen JSON Fehler:

2022-10-11 18:41:30,539  deserialized JSON is not an array at top level
2022-10-11 18:41:30,551  Received message                                         
2022-10-11 18:41:30,551  deserialized JSON is not an array at top level
2022-10-11 18:41:30,564  Received message                           'L1-L2',\n    
2022-10-11 18:41:30,565  deserialized JSON is not an array at top level
2022-10-11 18:41:30,577  Received message                                'Celcius'
2022-10-11 18:41:30,578  deserialized JSON is not an array at top level
2022-10-11 18:41:39,785  Received message ��v
2022-10-11 18:41:39,785  deserializeJson() failed: InvalidInput
2022-10-11 18:41:40,474  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:41:40,476  deserializeJson() failed: IncompleteInput
2022-10-11 18:41:40,478  Received message                 'Other'],\n             
2022-10-11 18:41:40,489  deserialized JSON is not an array at top level
2022-10-11 18:41:40,502  Received message                      'Energy.Reactive.Ex
2022-10-11 18:41:40,503  deserialized JSON is not an array at top level
2022-10-11 18:41:40,515  Received message                                         
2022-10-11 18:41:40,515  deserialized JSON is not an array at top level
2022-10-11 18:41:40,528  Received message                           'L1-L2',\n    
2022-10-11 18:41:40,529  deserialized JSON is not an array at top level
2022-10-11 18:41:40,542  Received message                                'Celcius'
2022-10-11 18:41:40,542  deserialized JSON is not an array at top level
2022-10-11 18:41:41,216  Received message [2,"8c9f8ad8-f030-4a6d-85bb-f4b23629f462
2022-10-11 18:41:41,279  Received message [2,"f9ed4009-cfe3-4257-b112-d5a148251f90
2022-10-11 18:41:41,287  IDLE -> NO_PLUG
2022-10-11 18:41:41,365  Sending status Preparing for connector 1
2022-10-11 18:41:50,545  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:41:50,547  deserializeJson() failed: IncompleteInput
2022-10-11 18:41:50,550  Received message                 'Other'],\n             
2022-10-11 18:41:50,561  deserialized JSON is not an array at top level
2022-10-11 18:41:50,564  Received message                      'Energy.Reactive.Ex
2022-10-11 18:41:50,575  deserialized JSON is not an array at top level
2022-10-11 18:41:50,578  Received message                                         
2022-10-11 18:41:50,589  deserialized JSON is not an array at top level
2022-10-11 18:41:50,593  Received message                           'L1-L2',\n    
2022-10-11 18:41:50,603  deserialized JSON is not an array at top level
2022-10-11 18:41:50,605  Received message                                'Celcius'
2022-10-11 18:41:50,616  deserialized JSON is not an array at top level
2022-10-11 18:41:52,811  Received message [2,"b1267f13-c9e2-4d95-b654-cd14348e8bb6
2022-10-11 18:41:59,844  Received message ބ
2022-10-11 18:41:59,844  deserializeJson() failed: InvalidInput
2022-10-11 18:42:00,628  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:00,630  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:00,632  Received message                 'Other'],\n             
2022-10-11 18:42:00,643  deserialized JSON is not an array at top level
2022-10-11 18:42:00,658  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:00,659  deserialized JSON is not an array at top level
2022-10-11 18:42:00,670  Received message                                         
2022-10-11 18:42:00,671  deserialized JSON is not an array at top level
2022-10-11 18:42:00,684  Received message                           'L1-L2',\n    
2022-10-11 18:42:00,685  deserialized JSON is not an array at top level
2022-10-11 18:42:00,697  Received message                                'Celcius'
2022-10-11 18:42:00,697  deserialized JSON is not an array at top level
2022-10-11 18:42:10,762  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:10,763  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:10,775  Received message                 'Other'],\n             
2022-10-11 18:42:10,776  deserialized JSON is not an array at top level
2022-10-11 18:42:10,789  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:10,790  deserialized JSON is not an array at top level
2022-10-11 18:42:10,803  Received message                                         
2022-10-11 18:42:10,803  deserialized JSON is not an array at top level
2022-10-11 18:42:10,816  Received message                           'L1-L2',\n    
2022-10-11 18:42:10,817  deserialized JSON is not an array at top level
2022-10-11 18:42:10,829  Received message                                'Celcius'
2022-10-11 18:42:10,829  deserialized JSON is not an array at top level
2022-10-11 18:42:19,858  Received message `N-
2022-10-11 18:42:19,858  deserializeJson() failed: InvalidInput
2022-10-11 18:42:20,811  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:20,812  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:20,825  Received message                 'Other'],\n             
2022-10-11 18:42:20,825  deserialized JSON is not an array at top level
2022-10-11 18:42:20,839  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:20,840  deserialized JSON is not an array at top level
2022-10-11 18:42:20,851  Received message                                         
2022-10-11 18:42:20,852  deserialized JSON is not an array at top level
2022-10-11 18:42:20,865  Received message                           'L1-L2',\n    
2022-10-11 18:42:20,866  deserialized JSON is not an array at top level
2022-10-11 18:42:20,877  Received message                                'Celcius'
2022-10-11 18:42:20,878  deserialized JSON is not an array at top level
2022-10-11 18:42:30,889  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:30,891  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:30,903  Received message                 'Other'],\n             
2022-10-11 18:42:30,903  deserialized JSON is not an array at top level
2022-10-11 18:42:30,917  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:30,918  deserialized JSON is not an array at top level
2022-10-11 18:42:30,930  Received message                                         
2022-10-11 18:42:30,931  deserialized JSON is not an array at top level
2022-10-11 18:42:30,944  Received message                           'L1-L2',\n    
2022-10-11 18:42:30,945  deserialized JSON is not an array at top level
2022-10-11 18:42:30,956  Received message                                'Celcius'
2022-10-11 18:42:30,957  deserialized JSON is not an array at top level
2022-10-11 18:42:39,915  Received message `�
2022-10-11 18:42:39,916  deserializeJson() failed: InvalidInput
2022-10-11 18:42:40,873  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:40,874  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:40,887  Received message                 'Other'],\n             
2022-10-11 18:42:40,887  deserialized JSON is not an array at top level
2022-10-11 18:42:40,901  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:40,902  deserialized JSON is not an array at top level
2022-10-11 18:42:40,913  Received message                                         
2022-10-11 18:42:40,914  deserialized JSON is not an array at top level
2022-10-11 18:42:40,927  Received message                           'L1-L2',\n    
2022-10-11 18:42:40,928  deserialized JSON is not an array at top level
2022-10-11 18:42:40,939  Received message                                'Celcius'
2022-10-11 18:42:40,940  deserialized JSON is not an array at top level
2022-10-11 18:42:41,453  Cable timeout!
2022-10-11 18:42:41,454  NO_PLUG -> IDLE
2022-10-11 18:42:41,454  Sending status Available for connector 1
2022-10-11 18:42:50,975  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:42:50,977  deserializeJson() failed: IncompleteInput
2022-10-11 18:42:50,989  Received message                 'Other'],\n             
2022-10-11 18:42:50,989  deserialized JSON is not an array at top level
2022-10-11 18:42:51,003  Received message                      'Energy.Reactive.Ex
2022-10-11 18:42:51,004  deserialized JSON is not an array at top level
2022-10-11 18:42:51,016  Received message                                         
2022-10-11 18:42:51,016  deserialized JSON is not an array at top level
2022-10-11 18:42:51,030  Received message                           'L1-L2',\n    
2022-10-11 18:42:51,030  deserialized JSON is not an array at top level
2022-10-11 18:42:51,042  Received message                                'Celcius'
2022-10-11 18:42:51,042  deserialized JSON is not an array at top level
2022-10-11 18:42:59,969  Received message ��=
2022-10-11 18:42:59,970  deserializeJson() failed: InvalidInput
2022-10-11 18:43:01,021  Received message [4,"4","FormatViolation","Payload for Ac
2022-10-11 18:43:01,023  deserializeJson() failed: IncompleteInput
2022-10-11 18:43:01,035  Received message                 'Other'],\n             
2022-10-11 18:43:01,035  deserialized JSON is not an array at top level
2022-10-11 18:43:01,049  Received message                      'Energy.Reactive.Ex
2022-10-11 18:43:01,050  deserialized JSON is not an array at top level
2022-10-11 18:43:01,062  Received message                                         
2022-10-11 18:43:01,062  deserialized JSON is not an array at top level
2022-10-11 18:43:01,075  Received message                           'L1-L2',\n    
2022-10-11 18:43:01,076  deserialized JSON is not an array at top level
2022-10-11 18:43:01,088  Received message                                'Celcius'
2022-10-11 18:43:01,088  deserialized JSON is not an array at top level

 

bearbeitet von schnuppepampe
Geschrieben

Das sieht interessant aus, danke! Gerade die JSON-Fehler muss ich mir mal genauer ansehen. Ich verwende da einen sehr minimalistischen Serializer, den ich eventuell an einer Stelle falsch benutze.

Geschrieben

Okay ich habe raus, was da schief gelaufen ist. Die Firmware hält sich an einer Stelle nicht an die Spezifikation (Nachrichten mit einer Liste von Stromzählerwerten müssen mindestens einen Wert enthalten), das versucht die OCPP-Integration von Home Assistant als Fehler zu melden, hält sich aber dabei selbst nicht an die Spezifikation und das wiederum versteht die Firmware dann nicht. Daraus entsteht dann die deserialize-Katastrophe.

Ich habe das Problem in der OCPP-Integration bzw. in der Bibliothek die diese verwendet, mal gemeldet: https://github.com/mobilityhouse/ocpp/issues/381 Den Rest fixe ich gerade auf unserer Seite.

Geschrieben

'n Abend @rtrbt,

nachdem ich meine WARP1 nun auf den ESP32-Ethernet-Brick umgebaut und die (auf den alten EVSE angepasste) WARP2-Firmware geflashed habe, finde ich leider keinen Menüpunkt "OCPP". Kann es sein, dass der Code noch gar nicht im master-Branch drin ist? Bis auf ein define in EVSE(_v2) finde ich nämlich auch kein passendes Modul...

Danke & Gruß Thomas

Geschrieben

Das OCPP-Modul ist jetzt im esp32-firmware-Git. (Sorry hatte es heute erst geschafft. Da hing mehr dran als ich in Erinnerung hatte.)

Edit: Bau am besten gegen den Stand von 8aef2cd4, das sollte funktionieren.

Geschrieben

Moin @rtrbt,

kein Problem, besten Dank. Die reguläre WARP2-Konfiguration lässt sich erfolgreich bauen, aber wenn ich das Modul "EVSE_V2" durch "EVSE" austausche, dann erhalte ich leider eine ganze Menge Compilefehler. Einige lassen sich durch kleine Codeanpassungen beheben, aber spätestens bei "get_ocpp_current()" bzw. "set_ocpp_current()" hört's dann doch auf, da diese Methoden bislang nur in "EVSE_V2" implementiert sind.

Zieht ihr das noch in das Modul "EVSE" nach oder muss/soll ich mich da selbst drum kümmern?

Vielen Dank & Gruß Thomas

Geschrieben (bearbeitet)

So, die ersten Tests waren so halbwegs erfolgreich. Ich habe einen eCarUp-Account angelegt und zunächst die wss-URL (wss://www.ecarup.com/api/Ocpp16/xxxx) verwendet. Leider erhalte ich damit nur die Fehlermeldung "OCPP WEBSOCKET DISCONNECTED".

Die Umstellung von wss auf ws hat das Problem dann aber erstmal (temporär) gelöst, WARP verbindet sich und erscheint sowohl im eCarUp-Portal als auch in der App - und zwar direkt mit dem richtigen Status (frei bzw. verbunden) 🙂

Leider lässt sich aber die Ladung nicht starten. EVCC ist freigegeben und die OCPP-Startanforderung kommt auch an - nur es passiert nix. Interessant ist auch der Zeitstempel der OCPP-Meldungen, diese scheinen etliche Jahre aus der Zukunft zu kommen:

                  8,343  Network connected. Stopping soft AP
                  8,381  MQTT: Connected to broker.
                 16,188  OCPP WEBSOCKET CONNECTED
                 16,201  Sending BootNotification.req. 16201 0 60000 60000
                 16,351  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,352  Received BootNotification.conf for connector 0. Interval 60
2028-02-29 09:29:49,000  Sending StatusNotification.req: Status Available for charge point
2028-02-29 09:29:49,001  Sending StatusNotification.req: Status Preparing for connector 1
2028-02-29 09:29:49,138  Received message [3, "2", {}] (len 12)
2028-02-29 09:29:49,139  Received StatusNotification.conf for connector 0
2028-02-29 09:29:49,344  Received message [3, "3", {}] (len 12)
2028-02-29 09:29:49,344  Received StatusNotification.conf for connector 1
2022-10-25 15:54:13,808  NTP synchronized at 24,778!
2022-10-25 15:54:55,650  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW
2022-10-25 15:54:55,730  Tag timeout!
2022-10-25 15:54:55,730  NO_TAG -> FINISHING_UNLOCKED
2022-10-25 15:54:55,731  Sending StatusNotification.req: Status Finishing for connector 1
2022-10-25 15:54:55,838  Received message [3, "4", {}] (len 12)
2022-10-25 15:54:55,839  Received StatusNotification.conf for connector 1
2022-10-25 15:55:05,287  Sending Heartbeat.req. 76258 76258 136258 60000
2022-10-25 15:55:05,381  Received message [3, "5", {"currentTime":"2022-10-25T13:5 (len 52)
2022-10-25 15:55:05,382  Received Heartbeat.conf for connector 0
2028-02-29 09:31:48,907  Sending Heartbeat.req. 136271 136271 196271 60000
2028-02-29 09:31:49,009  Received message [3, "6", {"currentTime":"2022-10-25T13:5 (len 52)
2028-02-29 09:31:49,010  Received Heartbeat.conf for connector 0
2028-02-29 09:31:56,360  Received message [2, "15ed0004-bf5d-47d0-5242-b4e5ec3cc10 (len 119)
2028-02-29 09:31:56,361  Received RemoteStartTransaction.req for connector 1 and tag 5PXVQ7NNERYRYRJKGDBQ
2028-02-29 09:31:56,372  Sending RemoteStartTransaction.conf Accepted
2028-02-29 09:31:56,386  FINISHING_UNLOCKED -> TRANSACTION
2028-02-29 09:31:56,421  Sending StatusNotification.req: Status SuspendedEVSE for connector 1
2028-02-29 09:31:56,495  Received message [3, "7", {}] (len 12)
2028-02-29 09:31:56,495  Received StatusNotification.conf for connector 1
2028-02-29 09:32:39,023  Received message [2, "5df50004-4331-3795-c346-bdee912be3c (len 119)
2028-02-29 09:32:39,024  Received RemoteStartTransaction.req for connector 1 and tag 6PE6E4DYL7RCZGAYDFXQ
2028-02-29 09:32:39,035  Sending RemoteStartTransaction.conf Accepted
2028-02-29 09:32:39,050  Ignoring remote start transaction in state TRANSACTION
2028-02-29 09:32:48,898  Sending Heartbeat.req. 196282 196282 256282 60000
2028-02-29 09:32:49,011  Received message [3, "8", {"currentTime":"2022-10-25T13:5 (len 52)
2028-02-29 09:32:49,012  Received Heartbeat.conf for connector 0

 

So sieht der EVSE aktuell aus:

image.thumb.png.7712ccda66d67f41edd9d8ca7cc261dc.png

 

@rtrbt, hast du vielleicht noch eine spontane Idee?

EDIT: Was mir noch aufgefallen ist: Die Heartbeats kommen für Connector 0, die Steuerungsbefehle für Connector 1. Gibt's da vielleicht noch irgendwo ein "+/-1 Problem"? Oder muss der Ladepunkt bei eCarUp noch weiter konfiguriert werden?

Vielen Dank & Gruß Thomas

bearbeitet von poohnet
Geschrieben

wss sollte eigentlich gehen, probiere ich gleich nochmal aus.

Ich gehe davon aus, dass die Ladeprobleme von den kaputten Zeiten kommen. Das ist ein Problem mit dem iso8601-Zeitstempel-Parser, das ich eigentlich behoben hatte, aber scheinbar habe ich den Fix beim Einbinden von TFOCPP als Abhängigkeit wieder verloren. Das muss ich nochmal kurz nachvollziehen.

16 hours ago, poohnet said:

Die Heartbeats kommen für Connector 0, die Steuerungsbefehle für Connector 1. Gibt's da vielleicht noch irgendwo ein "+/-1 Problem"? Oder muss der Ladepunkt bei eCarUp noch weiter konfiguriert werden?

Das muss so sein: OCPP ist darauf ausgelegt, dass du pro Charge Point mehrere Connectoren haben kannst (wie bei so einer großen DC-Ladesäule an der Autobahn z.B.). Connector 0 addressiert den ganzen Charge Point und die eigentliche Verbindung zum Auto geht dann bei uns immer über Connector 1.

Geschrieben

Hi @rtrbt,

ich hab's natürlich jetzt doch gerade schon ausprobiert - und es funktioniert! 😍

Die Verbindung wird nun auch über wss hergestellt, die Ladung kann über die eCarUp gestartet und beendet werden und die Ladung erscheint anschließend auch mit korrektem Verbrauch in der App. Selbst die Leistungsvorgabe durch WARP und EVCC wird korrekt berücksichtigt.

Der Vollständigkeit halber hier noch das Log (diesmal mit korrektem Zeitstempel). Vielleicht könnt ihr da mal drüberschauen und die (vereinzelten) Fehler prüfen...

                  7,739  Network connected. Stopping soft AP
                  7,771  MQTT: Connected to broker.
                 16,460  OCPP WEBSOCKET CONNECTED
                 16,538  Sending BootNotification.req. 16538 0 60000 60000
                 16,686  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,687  Received BootNotification.conf for connector 0. Interval 60
2022-10-26 18:31:25,000  Sending StatusNotification.req: Status Available for charge point
2022-10-26 18:31:25,011  Sending StatusNotification.req: Status Available for connector 1
2022-10-26 18:31:25,141  Received message [3, "2", {}] (len 12)
2022-10-26 18:31:25,142  Received StatusNotification.conf for connector 0
2022-10-26 18:31:25,341  Received message [3, "3", {}] (len 12)
2022-10-26 18:31:25,342  Received StatusNotification.conf for connector 1
2022-10-26 18:31:31,450  NTP synchronized at 22,647!
2022-10-26 18:32:15,062  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW
2022-10-26 18:32:25,345  Sending Heartbeat.req. 76542 76542 136542 60000
2022-10-26 18:32:25,438  Received message [3, "4", {"currentTime":"2022-10-26T16:3 (len 52)
2022-10-26 18:32:25,440  Received Heartbeat.conf for connector 0
2022-10-26 18:33:24,993  Sending Heartbeat.req. 136641 136641 196641 60000
2022-10-26 18:33:25,081  Received message [3, "5", {"currentTime":"2022-10-26T16:3 (len 52)
2022-10-26 18:33:25,082  Received Heartbeat.conf for connector 0
2022-10-26 18:34:16,602  IDLE -> NO_TAG
2022-10-26 18:34:16,602  Sending StatusNotification.req: Status Preparing for connector 1
2022-10-26 18:34:16,694  Received message [3, "6", {}] (len 12)
2022-10-26 18:34:16,695  Received StatusNotification.conf for connector 1
2022-10-26 18:34:17,022  Charger state changed from 0 to 1
2022-10-26 18:34:24,946  Sending Heartbeat.req. 196687 196687 256687 60000
2022-10-26 18:34:25,050  Received message [3, "7", {"currentTime":"2022-10-26T16:3 (len 52)
2022-10-26 18:34:25,051  Received Heartbeat.conf for connector 0
2022-10-26 18:34:51,173  Received message [2, "3c420004-530b-0035-3a45-8acd9a3e1bd (len 119)
2022-10-26 18:34:51,174  Received RemoteStartTransaction.req for connector 1 and tag Q9H5ZXVP2NL54FNRVGYQ
2022-10-26 18:34:51,184  Sending RemoteStartTransaction.conf Accepted
2022-10-26 18:34:51,200  NO_TAG -> TRANSACTION
2022-10-26 18:34:51,271  Sending StartTransaction.req at connector 1 for tag Q9H5ZXVP2NL54FNRVGYQ at 722.847 kWh.
2022-10-26 18:34:51,275  Sending StatusNotification.req: Status SuspendedEVSE for connector 1
2022-10-26 18:34:51,389  Received message [3, "8", {"idTagInfo":{"status":"Accepte (len 112)
2022-10-26 18:34:51,403  Sending StatusNotification.req: Status SuspendedEV for connector 1
2022-10-26 18:34:51,405  Received StartTransaction.conf for connector 1
2022-10-26 18:34:51,597  Received message [3, "9", {}] (len 12)
2022-10-26 18:34:51,597  Received StatusNotification.conf for connector 1
2022-10-26 18:34:51,707  Received message [3, "10", {}] (len 13)
2022-10-26 18:34:51,708  Received StatusNotification.conf for connector 1
2022-10-26 18:34:51,964  Charger state changed from 1 to 2
2022-10-26 18:34:52,017  Tracked start of charge.
2022-10-26 18:35:24,929  Sending Heartbeat.req. 256732 256732 316732 60000
2022-10-26 18:35:25,018  Received message [3, "11", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:35:25,019  Received Heartbeat.conf for connector 0
2022-10-26 18:36:09,356  Wrote last uptime to flash
2022-10-26 18:36:19,837  Sending StatusNotification.req: Status Charging for connector 1
2022-10-26 18:36:19,925  Received message [3, "12", {}] (len 13)
2022-10-26 18:36:19,926  Received StatusNotification.conf for connector 1
2022-10-26 18:36:20,008  Charger state changed from 2 to 3
2022-10-26 18:36:24,983  Sending Heartbeat.req. 316816 316816 376816 60000
2022-10-26 18:36:25,096  Received message [3, "13", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:36:25,097  Received Heartbeat.conf for connector 0
2022-10-26 18:36:29,198  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:37:24,919  Sending Heartbeat.req. 376860 376860 436860 60000
2022-10-26 18:37:25,011  Received message [3, "14", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:37:25,012  Received Heartbeat.conf for connector 0
2022-10-26 18:37:39,477  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:38:24,975  Sending Heartbeat.req. 436938 436938 496938 60000
2022-10-26 18:38:25,071  Received message [3, "15", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:38:25,072  Received Heartbeat.conf for connector 0
2022-10-26 18:39:00,707  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:39:24,954  Sending Heartbeat.req. 497001 497001 557001 60000
2022-10-26 18:39:25,056  Received message [3, "16", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:39:25,057  Received Heartbeat.conf for connector 0
2022-10-26 18:39:49,809  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:40:24,979  Sending Heartbeat.req. 557094 557094 617094 60000
2022-10-26 18:40:25,962  Received message [3, "17", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:40:25,963  Received Heartbeat.conf for connector 0
2022-10-26 18:41:06,471  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:41:25,010  Sending Heartbeat.req. 617099 617099 677099 60000
2022-10-26 18:41:25,109  Received message [3, "18", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:41:25,110  Received Heartbeat.conf for connector 0
2022-10-26 18:42:25,890  Sending Heartbeat.req. 677099 677099 737099 60000
2022-10-26 18:42:25,991  Received message [3, "19", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:42:25,992  Received Heartbeat.conf for connector 0
2022-10-26 18:43:13,782  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:43:25,973  Sending Heartbeat.req. 737185 737185 797185 60000
2022-10-26 18:43:26,076  Received message [3, "20", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:43:26,077  Received Heartbeat.conf for connector 0
2022-10-26 18:44:25,919  Sending Heartbeat.req. 797219 797219 857219 60000
2022-10-26 18:44:26,022  Received message [3, "21", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:44:26,023  Received Heartbeat.conf for connector 0
2022-10-26 18:44:58,764  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:45:25,940  Sending Heartbeat.req. 857273 857273 917273 60000
2022-10-26 18:45:26,032  Received message [3, "22", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:45:26,033  Received Heartbeat.conf for connector 0
2022-10-26 18:45:31,579  httpd_ws_recv_frame failed to get frame len with -1
2022-10-26 18:45:32,247  Received message [2, "0e890005-5be3-88d4-6a47-b4475a35fa3 (len 98)
2022-10-26 18:45:32,248  Received RemoteStopTransaction.req
2022-10-26 18:45:32,258  TRANSACTION -> FINISHING_UNLOCKED
2022-10-26 18:45:32,259  Attempting to send stop transaction but next stop reason is none!
2022-10-26 18:45:32,312  Sending StopTransaction.req at connector 1 for tag Q9H5ZXVP2NL54FNRVGYQ at 723.112 kWh. StopReason 11
2022-10-26 18:45:32,313  Sending RemoteStopTransaction.conf Accepted
2022-10-26 18:45:32,325  Unexpected EVSEState 4 while Connector is in state 10
2022-10-26 18:45:32,327  Sending StatusNotification.req: Status Finishing for connector 1
2022-10-26 18:45:32,430  Received message [3, "23", {"idTagInfo":{"status":"Accept (len 86)
2022-10-26 18:45:32,447  Unexpected EVSEState 4 while Connector is in state 10
2022-10-26 18:45:32,449  Received StopTransaction.conf for connector 1
2022-10-26 18:45:32,646  Received message [3, "24", {}] (len 13)
2022-10-26 18:45:32,647  Received StatusNotification.conf for connector 1
2022-10-26 18:45:32,694  Charger state changed from 3 to 1
2022-10-26 18:45:45,104  FINISHING_UNLOCKED -> IDLE
2022-10-26 18:45:45,104  Sending StatusNotification.req: Status Available for connector 1
2022-10-26 18:45:45,208  Received message [3, "25", {}] (len 13)
2022-10-26 18:45:45,208  Received StatusNotification.conf for connector 1
2022-10-26 18:45:45,695  Charger state changed from 1 to 0
2022-10-26 18:45:45,740  Tracked end of charge.
2022-10-26 18:46:25,903  Sending Heartbeat.req. 917281 917281 977281 60000
2022-10-26 18:46:26,004  Received message [3, "26", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:46:26,005  Received Heartbeat.conf for connector 0
2022-10-26 18:47:25,954  Sending Heartbeat.req. 977348 977348 1037348 60000
2022-10-26 18:47:26,045  Received message [3, "27", {"currentTime":"2022-10-26T16: (len 53)
2022-10-26 18:47:26,046  Received Heartbeat.conf for connector 0

 

Vielen Dank nochmals für eure immer tolle und zeitnahe Unterstützung!

Gruß Thomas

Geschrieben

'n Abend @rtrbt,

heute Abend habe ich mal einen größeren Test gemacht und irgendwie scheint die OCPP-Integration jetzt kaputt zu sein 🙁

Zunächst hat eCarUp zwar den Status (frei, verbunden) korrekt erkannt, die Ladung konnte aber nicht gestartet werden. Auf der Statusseite stand bei "Fahrzeugstatus" nur "Ladebereit" und bei "Erlaubter Ladestrom" "6.000 A durch externe Steuerung" (das ist die Vorgabe von EVCC).

Nach einem Neustart von WARP stand da dann "6.000 A durch externe Steuerung, OCPP", d. h. in den letzten 24 Stunden ist da anscheinend irgendein Status durcheinander gekommen. Leider habe ich versäumt, das Log vor dem Reboot zu sichern, die Ladung konnte aber korrekt gestartet werden.

Während des Ladevorgangs hat eCarUp allerdings keine Verbrauchsdaten erhalten und nach knapp einer Stunde habe ich versucht, die Ladung über die App zu beenden. WARP hat die Ladung zwar beendet, aber trotz Trennen des Fahrzeugs zeigten sowohl die App als auch die Statusseite von eCarUp weiterhin einen aktiven Ladevorgang an. Hier die zugehörigen Logs:

2022-10-27 18:50:47,907  Sending Heartbeat.req. 5121096 5121096 5181096 60000
2022-10-27 18:50:48,004  Received message [3, "104", {"currentTime":"2022-10-27T16 (len 54)
2022-10-27 18:50:48,005  Received Heartbeat.conf for connector 0
2022-10-27 18:51:47,979  Sending Heartbeat.req. 5181184 5181184 5241184 60000
2022-10-27 18:51:48,073  Received message [3, "105", {"currentTime":"2022-10-27T16 (len 54)
2022-10-27 18:51:48,074  Received Heartbeat.conf for connector 0
2022-10-27 18:52:47,991  Sending Heartbeat.req. 5241281 5241281 5301281 60000
2022-10-27 18:52:48,083  Received message [3, "106", {"currentTime":"2022-10-27T16 (len 54)
2022-10-27 18:52:48,084  Received Heartbeat.conf for connector 0
2022-10-27 18:52:56,085  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 18:53:02,946  Received message [2, "01ed0005-08a5-6f36-fd40-bc08ac60a2a (len 98)
2022-10-27 18:53:02,947  Received RemoteStopTransaction.req
2022-10-27 18:53:02,957  TRANSACTION -> FINISHING_UNLOCKED
2022-10-27 18:53:02,958  Attempting to send stop transaction but next stop reason is none!
2022-10-27 18:53:03,020  Unexpected EVSEState 4 while Connector is in state 10
2022-10-27 18:53:03,021  Sending StatusNotification.req: Status Finishing for connector 1
2022-10-27 18:53:03,045  Sending StopTransaction.req at connector 1 for tag  at 724.372 kWh. StopReason 11
2022-10-27 18:53:03,046  Sending RemoteStopTransaction.conf Accepted
2022-10-27 18:53:03,173  Received message [3, "107", {}] (len 14)
2022-10-27 18:53:03,174  Received StatusNotification.conf for connector 1
2022-10-27 18:53:03,228  Charger state changed from 3 to 1
2022-10-27 18:53:34,433  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 18:53:48,926  Sending Heartbeat.req. 5301312 5301312 5361312 60000
2022-10-27 18:54:08,939  Received message [2, "ffa70005-7c3e-0c8b-4646-afbadeb3bd6 (len 98)
2022-10-27 18:54:08,940  Received RemoteStopTransaction.req
2022-10-27 18:54:08,950  Sending RemoteStopTransaction.conf Rejected (unknown connector id)
2022-10-27 18:54:48,938  Sending Heartbeat.req. 5361323 5361323 5421323 60000
2022-10-27 18:54:58,065  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 18:55:10,252  FINISHING_UNLOCKED -> IDLE
2022-10-27 18:55:10,252  Sending StatusNotification.req: Status Available for connector 1
2022-10-27 18:55:10,271  Charger state changed from 1 to 0
2022-10-27 18:55:10,399  Tracked end of charge.
2022-10-27 18:55:47,799  Received message [2, "25f80005-7ecf-5792-d849-9de1773d94f (len 98)
2022-10-27 18:55:47,799  Received RemoteStopTransaction.req
2022-10-27 18:55:47,810  Sending RemoteStopTransaction.conf Rejected (unknown connector id)
2022-10-27 18:55:48,999  Sending Heartbeat.req. 5421384 5421384 5481384 60000
2022-10-27 18:56:49,082  Sending Heartbeat.req. 5481468 5481468 5541468 60000
2022-10-27 18:57:11,585  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 18:57:22,769  Received message [2, "35ec0005-870f-c876-8048-873033ee44f (len 98)
2022-10-27 18:57:22,770  Received RemoteStopTransaction.req
2022-10-27 18:57:22,780  Sending RemoteStopTransaction.conf Rejected (unknown connector id)
2022-10-27 18:57:49,127  Sending Heartbeat.req. 5541512 5541512 5601512 60000
2022-10-27 18:58:49,135  Sending Heartbeat.req. 5601520 5601520 5661520 60000
2022-10-27 18:59:49,199  Sending Heartbeat.req. 5661584 5661584 5721584 60000
2022-10-27 19:00:49,280  Sending Heartbeat.req. 5721665 5721665 5781665 60000
2022-10-27 19:01:21,991  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 19:01:49,312  Sending Heartbeat.req. 5781698 5781698 5841698 60000
2022-10-27 19:02:27,943  httpd_ws_recv_frame failed to get frame len with -1
2022-10-27 19:02:49,393  Sending Heartbeat.req. 5841778 5841778 5901778 60000
2022-10-27 19:03:49,422  Sending Heartbeat.req. 5901808 5901808 5961808 60000
2022-10-27 19:04:17,867  Received message [2, "84f20005-2483-7b6c-ed4f-ac31ec0372e (len 98)
2022-10-27 19:04:17,868  Received RemoteStopTransaction.req
2022-10-27 19:04:17,878  Sending RemoteStopTransaction.conf Rejected (unknown connector id)

 

Auch ein Reboot hat zunächst keine Verbesserung gebracht:

                  7,457  Network connected. Stopping soft AP
                  7,492  MQTT: Connected to broker.
                 16,503  OCPP WEBSOCKET CONNECTED
                 16,599  Sending BootNotification.req. 16599 0 60000 60000
                 16,769  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,770  Received BootNotification.conf for connector 0. Interval 60
2022-10-27 19:05:45,000  Sending StatusNotification.req: Status Available for charge point
2022-10-27 19:05:45,011  Sending StatusNotification.req: Status Available for connector 1
2022-10-27 19:05:45,053  Sending RESTORED StopTransaction.req for tag  at 724.372 kWh. Reason 11
2022-10-27 19:05:50,724  NTP synchronized at 21,611!
2022-10-27 19:06:19,241  Received message [2, "05730005-c292-ed6c-3b41-ab8466e0405 (len 98)
2022-10-27 19:06:19,242  Received RemoteStopTransaction.req
2022-10-27 19:06:19,253  Sending RemoteStopTransaction.conf Rejected (unknown connector id)
2022-10-27 19:06:35,427  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW
2022-10-27 19:07:21,046  Received message [2, "0a6e0005-2535-627c-294f-be7c7cf77d5 (len 98)
2022-10-27 19:07:21,046  Received RemoteStopTransaction.req
2022-10-27 19:07:21,057  Sending RemoteStopTransaction.conf Rejected (unknown connector id)
2022-10-27 19:08:23,309  Received message [2, "efda0005-a43f-907a-734f-aafbbf68c7a (len 98)
2022-10-27 19:08:23,310  Received RemoteStopTransaction.req
2022-10-27 19:08:23,321  Sending RemoteStopTransaction.conf Rejected (unknown connector id)

 

Nach etwa 15 Minuten hat eCarUp die Ladung dann als abgebrochen erkannt (ohne endgültige Verbrauchswerte). Seitdem baut WARP aber (auch trotz weiterem Reboot) keine korrekte OCPP-Kommunikation mehr auf - die ersten Boot- und Statusmeldungen werden zwar noch geschickt, es kommen aber keine Heartbeats mehr: 

                  7,328  Network connected. Stopping soft AP
                  7,357  MQTT: Connected to broker.
                 16,525  OCPP WEBSOCKET CONNECTED
                 16,603  Sending BootNotification.req. 16603 0 60000 60000
                 16,732  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,733  Received BootNotification.conf for connector 0. Interval 60
2022-10-27 19:24:16,000  Sending StatusNotification.req: Status Available for charge point
2022-10-27 19:24:16,011  Sending StatusNotification.req: Status Available for connector 1
2022-10-27 19:24:16,083  Sending RESTORED StopTransaction.req for tag  at 724.372 kWh. Reason 11
2022-10-27 19:24:21,635  NTP synchronized at 22,277!
2022-10-27 19:25:05,687  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW
2022-10-27 19:29:00,664  Wrote last uptime to flash

 

Kann man dieses "RESTORED StopTransaction.req"-Paket irgendwie löschen?

 

Vielen Dank & Gruß Thomas

Geschrieben

Der Teil ist interessant:

2022-10-27 18:53:02,947  Received RemoteStopTransaction.req
2022-10-27 18:53:02,957  TRANSACTION -> FINISHING_UNLOCKED
2022-10-27 18:53:02,958  Attempting to send stop transaction but next stop reason is none!
2022-10-27 18:53:03,020  Unexpected EVSEState 4 while Connector is in state 10
2022-10-27 18:53:03,021  Sending StatusNotification.req: Status Finishing for connector 1
2022-10-27 18:53:03,045  Sending StopTransaction.req at connector 1 for tag  at 724.372 kWh. StopReason 11
2022-10-27 18:53:03,046  Sending RemoteStopTransaction.conf Accepted
2022-10-27 18:53:03,173  Received message [3, "107", {}] (len 14)
2022-10-27 18:53:03,174  Received StatusNotification.conf for connector 1

Es sieht so aus als ob der Server das StopTransaction nicht akzeptiert. Deshalb wird die Nachricht nach Neustarts der Wallbox auch immer wieder geschickt. StopTransaction ist eine "transaction-related message" laut Spezifikation und solche Nachrichten 1. muss ich immer wieder schicken, bis der Server sie akzeptiert und 2. müssen die in der korrekten Reihenfolge übertragen werden, d.h. ich kann erst wieder ein StartTransaction schicken, wenn das Stop durchgegangen ist. Es gibt da eine Chance wieder in den "normalen" Zustand zu kommen, und zwar wenn der Server mehrfach meldet, dass er die Nachricht nicht parsen konnte. Dann darf ich sie nach X Versuchen wegwerfen.

Ich muss das hier mal reproduzieren, in der Hoffnung, dass ich sehe warum der Server das StopTransaction ablehnt. Damit sollten wir rausbekommen was das Problem ist. Abgesehen davon baue ich mal einen Button ins Webinterface, damit du die persistierten Nachrichten löschen kannst.

Geschrieben
1 hour ago, rtrbt said:

Abgesehen davon baue ich mal einen Button ins Webinterface, damit du die persistierten Nachrichten löschen kannst.

Das ist sicherlich keine schlechte Idee (gerade jetzt in der Betaphase), denn selbst das Trennen der Stromversorgung hat nicht geholfen und die WARP wird bei eCarUp nun als "inaktiv" angezeigt.

Baut ihr auch eine regelmäßige Übertragung des Zählerstands mit ein, z. B. alle fünf Minuten?

Gruß Thomas

Geschrieben
3 hours ago, poohnet said:

Das ist sicherlich keine schlechte Idee (gerade jetzt in der Betaphase), denn selbst das Trennen der Stromversorgung hat nicht geholfen und die WARP wird bei eCarUp nun als "inaktiv" angezeigt.

Habe ich gepusht. Der große rote Knopf tritt einmal den kompletten OCPP-Zustand weg. Danach sollte es wieder funktionieren.

Mich wundert es trotzdem, dass die Wallbox und der eCarUp server sich aus dem Zustand nicht befreien können: Nach dem Neustart wird der StopTransaction.req ja neu geschickt, danach müsste laut Spec der Server mit einer StopTransaction.conf antworten:

Quote

It is likely that The Central System applies sanity checks to the data contained in a StopTransaction.req it
received. The outcome of such sanity checks SHOULD NOT ever cause the Central System to not respond with a
StopTransaction.conf. Failing to respond with a StopTransaction.conf will only cause the Charge Point to try the
same message again as specified in Error responses to transaction-related messages.

(D.h. selbst wenn der Server damit nichts anfangen kann soll er das tun, damit eben nicht die Wallbox hängen bleibt)

Die Situation kann auch auftreten, wenn die Wallbox ewig lang offline war und währenddessen mehrere komplette Transaktionen durchgeführt hat (was erlaubt ist, man kann z.B. einen Auth. Cache für die Tags haben).

Das das RemoteStopTransaction rejected wird, ergibt Sinn, nur die Fehlermeldung ist falsch, da passte nicht die Connector-ID nicht, sondern die Transaktions-ID. Der Server sagt der Wallbox im Endeffekt "stoppe bitte Transaktion ABC123" und wenn es die nicht gibt muss die Wallbox mit rejected antworten.

Lange Rede kurzer Sinn: gib Bescheid, falls du das nochmal auslösen kannst. Ich habe das Problem hier spontan nicht erzeugen können.

3 hours ago, poohnet said:

Baut ihr auch eine regelmäßige Übertragung des Zählerstands mit ein, z. B. alle fünf Minuten?

Gibt es rein technisch gesehen schon, habe aber noch nicht rausgefunden wie eCarUp das konfigurieren will.

Geschrieben

ARGH - irgendwie ist dieses OCPP-Paket sehr hartnäckig. Ich habe mehrfach den "großen roten Knopf" gedrückt, POSTs auf die URL /ocpp/reset abgesetzt (die auch mit 200 bestätigt werden) und selbstverständlich anschließend auch neugestartet...

... aber keine Chance, WARP schickt das Paket nach der Boot-Notification immer wieder 😡

                  7,966  Network connected. Stopping soft AP
                  7,996  MQTT: Connected to broker.
                 16,699  OCPP WEBSOCKET CONNECTED
                 16,786  Sending BootNotification.req. 16786 0 60000 60000
                 16,978  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,979  Received BootNotification.conf for connector 0. Interval 60
2022-10-28 18:42:07,000  Sending StatusNotification.req: Status Available for charge point
2022-10-28 18:42:07,011  Sending StatusNotification.req: Status Available for connector 1
2022-10-28 18:42:07,028  Sending StatusNotification.req: Status Available for charge point
2022-10-28 18:42:07,133  Received message [3, "2", {}] (len 12)
2022-10-28 18:42:07,134  Received StatusNotification.conf for connector 0
2022-10-28 18:42:07,250  Sending RESTORED StopTransaction.req for tag  at 724.372 kWh. Reason 11
2022-10-28 18:42:12,354  NTP synchronized at 21,601!
2022-10-28 18:42:57,249  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW

 

Interessanterweise wird die Box dann für ein paar Minuten bei eCarUp als "Verfügbar" angezeigt und in dieser Zeit kann ich auch einen Ladevorgang starten. Leider ist mein Wagen erst morgen wieder da, daher konnte ich nicht prüfen, ob er tatsächlich auch lädt: 

2022-10-28 18:48:55,243  Received message [2, "801e0004-57ba-a602-aa4a-a9f19683782 (len 119)
2022-10-28 18:48:55,244  Received RemoteStartTransaction.req for connector 1 and tag 6EFSK4CX9MUJPGN35Q9Q
2022-10-28 18:48:55,255  Sending RemoteStartTransaction.conf Accepted
2022-10-28 18:48:55,270  IDLE -> NO_PLUG
2022-10-28 18:48:55,339  Sending StatusNotification.req: Status Preparing for connector 1
2022-10-28 18:49:55,364  Cable timeout!
2022-10-28 18:49:55,364  NO_PLUG -> IDLE
2022-10-28 18:49:55,364  Sending StatusNotification.req: Status Available for connector 1

 

Allerdings hilft auch dieser neue Startversuch nicht, das OCPP-Paket loszuwerden, d. h. auch nach einem weiteren Reboot wird es wieder geschickt, sodass die Heartbeats weiterhin ausbleiben.

Evtl. machen ich morgen mal einen Factory Reset...

Gruß und ein schönes Wochenende
Thomas

Geschrieben

So, ich bin nun einen Schritt weiter (am Abgrund).

Ich habe den CommandHandler wie folgt umgebaut und festgestellt, dass die Datei "txn_msg" im Directory /ocpp nicht gelöscht werden kann:

    api.addCommand("ocpp/reset", &reset, {}, [](){
        logger.printfln("Reset OCPP...");
        int i = 0;

        File root = LittleFS.open("/ocpp");
        File file;

        while (file = root.openNextFile()) {
            i++;
            String filename = file.path();
            file.close();
            logger.printfln("Found file '%s' ...", filename.c_str());

            bool result = LittleFS.remove(filename);
            logger.printfln("File %s removed.", result ? "successfully" : "NOT");
        }

        logger.printfln("No of files: %d", i);
    }

 

Und das ist das Ergebnis:

                 20,128  Reset OCPP...
                 20,140  Found file '/ocpp/txn_msg' ...
                 20,144  File NOT removed.
                 20,155  No of files: 1
2022-10-28 20:41:34,310  NTP synchronized at 25,137!
2022-10-28 20:41:56,679  Reset OCPP...
2022-10-28 20:41:56,691  Found file '/ocpp/txn_msg' ...
2022-10-28 20:41:56,695  File NOT removed.
2022-10-28 20:41:56,706  No of files: 1

 

Hast du irgendeine Idee, warum die Datei nicht gelöscht werden kann? Ist sie vielleicht noch durch irgendetwas im Hintergrund geöffnet?

Danke & Gruß Thomas

Geschrieben (bearbeitet)

So, habe gerade einen Factory Reset durchgeführt und nun funktioniert's (erstmal) wieder:

                  7,292  MQTT: Connected to broker.
                 16,601  OCPP WEBSOCKET CONNECTED
                 16,654  Sending BootNotification.req. 16654 0 60000 60000
                 16,812  Received message [3, "1", {"status":"Accepted","currentTi (len 86)
                 16,814  Received BootNotification.conf for connector 0. Interval 60
2022-10-29 14:06:44,000  Sending StatusNotification.req: Status Available for charge point
2022-10-29 14:06:44,011  Sending StatusNotification.req: Status Available for connector 1
2022-10-29 14:06:44,143  Received message [3, "2", {}] (len 12)
2022-10-29 14:06:44,144  Received StatusNotification.conf for connector 0
2022-10-29 14:06:44,341  Received message [3, "3", {}] (len 12)
2022-10-29 14:06:44,342  Received StatusNotification.conf for connector 1
2022-10-29 14:06:49,514  NTP synchronized at 22,316!
2022-10-29 14:07:33,579  This is warp2-XSS (warp2-XSS), a WARP2 Charger Pro 11kW
2022-10-29 14:07:43,927  Sending Heartbeat.req. 76729 76729 136729 60000
2022-10-29 14:07:44,022  Received message [3, "4", {"currentTime":"2022-10-29T12:0 (len 52)
2022-10-29 14:07:44,023  Received Heartbeat.conf for connector 0

 

Mal schau'n, ob ich das ursprüngliche Problem in den nächsten Tagen reproduziert bekomme. Bliebe nur die Frage offen, warum die Datei "/ocpp/txn_msg" nicht gelöscht werden konnte.

 

22 hours ago, rtrbt said:
On 10/28/2022 at 12:32 PM, poohnet said:

Baut ihr auch eine regelmäßige Übertragung des Zählerstands mit ein, z. B. alle fünf Minuten?

Gibt es rein technisch gesehen schon, habe aber noch nicht rausgefunden wie eCarUp das konfigurieren will.

Wie funktioniert die Übertragung des Zählerstands denn grundsätzlich? Wenn ich meinen Wagen unterwegs über die eCharge-App lade, dann erhalte ich auch regelmäßige Updates des Zählerstands...

 

Gruß Thomas

bearbeitet von poohnet
Geschrieben
On 10/28/2022 at 9:12 PM, poohnet said:

Hast du irgendeine Idee, warum die Datei nicht gelöscht werden kann? Ist sie vielleicht noch durch irgendetwas im Hintergrund geöffnet?

Nein ich habe nur Freitag Nachmittag Dinge programmiert und nicht richtig getestet. ocpp/txn_msg ist ein Ordner und die remove_directory-Funktion löscht nicht rekursiv Unterordner. Habe das gerade gefixt:https://github.com/Tinkerforge/esp32-firmware/commit/8d50f811239842b5a9df0dac577efca8a7027177

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...