OCPP

Referenz zum Treiber OCPP: das eingebettete Zentralsystem, Zertifikate der Ladestationen, Tags je Ladepunkt und die Namensregel Meter, Status und Transaction.

Als Markdown ansehen

Der Treiber OCPP macht Ganter Lab zum Zentralsystem für Ladestationen für Elektrofahrzeuge, die das Open Charge Point Protocol sprechen. Wie bei LoRaWAN ist die Richtung umgekehrt: Die Station verbindet sich nicht mit der Ladestation, sondern die Ladestation verbindet sich mit Ganter Lab über einen WebSocket, meldet sich an und sendet ihre Messdaten von sich aus.

Das eingebettete Zentralsystem startet, sobald das erste aktivierte OCPP-Gerät in den laufenden Connector geladen wird, und hört auf, sobald das letzte entfernt oder deaktiviert wird: Ist keine Ladestation eingerichtet, lauscht überhaupt nichts auf dem Port. Eine hinzuzufügen holt es zurück, ohne die Anwendung neu zu starten. Jedes Gerät, das Sie einrichten, steht für eine Ladestation, erkannt an der Kennung, unter der sie sich verbindet.

Ladestation vorbereiten

Die Ladestation wählt sich bei dieser Station ein und weiß ab Werk nicht, wo die Station ist. Die Seite jedes OCPP-Geräts trägt die Karte Ladestation vorbereiten mit dem, was in den OCPP-Einstellungen der Ladestation einzutragen ist, für diese Station geschrieben:

Was an der Ladestation einzustellen ist Was die Karte angibt
Adresse des Zentralsystems wss://<Adresse>:19521/<Kennung-der-Ladestation>, zuerst mit der Adresse über den Namen dieser Station (der "Netzwerkname" in der Konfiguration des eingebetteten OPC UA-Servers, solange er leer ist der Computername), dann einmal für jede IPv4-Adresse, die diese Station in einem Netz hat, jede mit einer Kopierschaltfläche. Eine Ladestation, die den Namen des Servers prüft, braucht die Adresse über den Namen; eine, die ihn nicht prüft, nimmt jede dieser Adressen an, und dann genügt die aus ihrem eigenen Netz.
Kennung der Ladestation Die Kennung des Geräts oder, solange sie leer ist, der Name, den die Station dem Gerät gibt. Viele Ladestationen hängen ihre Kennung selbst an die Adresse an: Tragen Sie dort die Adresse nur bis zum Port ein und die Kennung in ihr eigenes Feld.
Sicherheit TLS mit Client-Zertifikat, bei OCPP Sicherheitsprofil 3. Die Profile 1 und 2, die kein Client-Zertifikat haben, werden nicht angenommen. Das Zertifikat der Ladestation nennt ihre Kennung im Common Name oder in einem alternativen DNS-Namen (siehe Zertifikate).
Stammzertifikat des Zentralsystems Der vollständige Pfad von GanterLabConnector-<station>.pem, dem Stammzertifikat dieser Station, das die Ladestation installiert, um dem Zentralsystem zu vertrauen, mit der Schaltfläche Ordner öffnen, die die Datei im Datei-Explorer von Windows zeigt. Die Schaltfläche wirkt im eigenen Fenster der Station; in einem Browser auf einem anderen Gerät bleibt sie ausgegraut und sagt, warum.

Die Karte ist aufgeklappt, solange sich die Ladestation seit dem Öffnen der Station nicht verbunden hat, und klappt ein, sobald sie sich verbunden hat: Sie bleibt auf der Seite für das nächste Mal, dass die Ladestation eingerichtet wird. Eine Ladestation, für deren Zertifikat keine in Windows installierte Stammzertifizierungsstelle bürgt, wird bei der ersten Verbindung abgewiesen und wartet unter Anlagenzugriff.

Die Datei wird beim ersten Start des Zentralsystems geschrieben, sobald eine Ladestation registriert ist, und bis dahin sagt die Karte das. Es ist dieselbe Datei für alle Ladestationen dieser Station, und sie ändert sich nicht, wenn sich Name oder Adressen der Station ändern (siehe Das Stammzertifikat der Station).

Jede Ladestation, die von einer früheren Version eine Datei erhalten hat, braucht diese, einmal installiert. Beim ersten Start dieser Version zeigt eine Station, deren Ladestationen eine frühere Datei haben können, auf der Karte einen Hinweis, Die Datei dieser Station hat sich geändert, nur in diesem Lauf. Der Hinweis ist eine Erinnerung, nicht die Anweisung: Installieren Sie die neue Datei einmal auf jeder Ladestation einer Station, die schon Ladestationen hatte, ob die Karte den Hinweis zeigt oder nicht. Eine Ladestation, die den Namen des Servers prüft, akzeptiert die Station dann.

Zentralsystem und Ports

Was Wert
Versionen des Protokolls OCPP 1.6, 2.0, 2.0.1 und 2.1 (Aushandlung des WebSocket-Unterprotokolls; JSON)
Lauscher Alle Schnittstellen, TCP-Port 19521, nur TLS
Adresse der Ladestation wss://<station-address>:19521/<charge-point-id>
Identität Der letzte Teil des WebSocket-Pfades ist die Kennung der Ladestation

Der Lauscher ist immer mit TLS; ein Lauscher mit einfachem HTTP wird überall abgelehnt außer auf Loopback, das es nur für Tests im selben Prozess gibt. Eine Ladestation meldet sich mit ihrer BootNotification an (beantwortet mit einem Herzschlagintervall von 60 Sekunden), und jede zur Autorisierung vorgelegte Karte wird angenommen: Ganter Lab beobachtet das Laden, es verwaltet weder Tarife noch Zutritt.

Zertifikate

Die Serverseite des TLS-Handschlags weist ein Zertifikat vor, das vom eigenen Stammzertifikat dieser Station signiert ist (siehe Das Stammzertifikat der Station). Jede Ladestation muss ein Client-Zertifikat vorweisen:

  1. Es muss auf eine von zwei Arten vertrauenswürdig sein: Es bildet auf diesem Windows-Rechner eine gültige Kette bis zu einer dort installierten Wurzel, ohne Verstöße gegen die TLS-Richtlinie; oder Sie haben genau dieses Zertifikat unter Anlagenzugriff auf der Seite dieses Treibers freigegeben (siehe unten). In beiden Fällen muss es innerhalb seiner Gültigkeitsdaten liegen. Eine fehlgeschlagene Prüfung weist die Verbindung ab, und das Journal hält fest, welche Prüfung fehlschlug.
  2. Sein Common Name im Antragsteller oder ein alternativer DNS-Name muss die Kennung der Ladestation nennen, unter der sie sich verbindet. Ein Zertifikat, das eine andere Ladestation nennt als der Pfad der Verbindung, wird abgewiesen, auch ein freigegebenes.

Ein Handschlag ohne Client-Zertifikat wird verworfen, bevor Daten fließen.

Das Stammzertifikat der Station

Was Wert
Das Stammzertifikat Wird einmal pro Profil angelegt, beim ersten Start des Zentralsystems oder des LoRaWAN-Netzwerkservers. Sein Subject ist Ganter Lab Connector (<station>), wobei <station> der Netzwerkname an diesem Tag ist. Es läuft nie ab und wird nie von selbst ersetzt: Den Computer umzubenennen, den Netzwerknamen oder die Adressen der Station zu ändern, lässt es unberührt.
Die Datei GanterLabConnector-<station>.pem, nur der öffentliche Teil, im Datenordner unter ua\pki\station. Es ist dieselbe Datei für eine Ladestation und für ein LoRaWAN-Gateway, das sie als tc.trust installiert.
Das Zertifikat, das das Zentralsystem vorweist Von diesem Stammzertifikat signiert. Es nennt den Netzwerknamen der Station (der "Netzwerkname" in der Konfiguration des eingebetteten OPC UA-Servers, solange er leer ist der Computername), localhost und jede IPv4-Adresse der Station; deshalb akzeptiert es eine Ladestation, die den Namen des Servers prüft (Sicherheitsprofil 3). Ändern sich der Netzwerkname oder eine Adresse, wird nur dieses Zertifikat von selbst neu ausgestellt, ohne dass an der Ladestation etwas zu tun ist.
Das Zertifikat des OPC UA-Servers Wird hier nicht verwendet. Der eingebettete OPC UA-Server behält sein eigenes Zertifikat für OPC UA-Clients.

Ein gespeichertes Stammzertifikat, das sich nicht mehr öffnen lässt, etwa weil es von einem anderen Windows-Konto geschrieben wurde, wird durch ein neues ersetzt. Jede Ladestation braucht dann die neue Datei, einmal, und die Karte sagt das.

Anlagenzugriff

Eine Ladestation, für deren Zertifikat keine in Windows installierte Wurzel bürgt, weil es selbstsigniert oder von der eigenen Zertifizierungsstelle des Herstellers ausgestellt ist, braucht diese Wurzel auf diesem Rechner nicht. Ihre erste Verbindung wird abgewiesen, und ihr Zertifikat wartet unter Anlagenzugriff am Ende der Seite des OCPP-Treibers, derselben Karte wie auf der Seite des OPC UA-Treibers, bis Sie entscheiden:

Gruppe Was sie zeigt Was Sie tun können
Wartet auf Freigabe Jedes abgewiesene Zertifikat unter der Kennung der Ladestation, mit der sie sich verbunden hat: sein SHA-256-Fingerabdruck, wann sie es zuletzt versucht hat und wie oft, und seine Details (Antragsteller, Aussteller, Domänennamen, Gültigkeitsdaten). Freigeben lässt das Zertifikat ab der nächsten Verbindung der Ladestation zu. Sperren weist es weiter ab, ohne es hier erneut aufzuführen. Alle ausstehenden Zertifikate verwerfen leert die Liste, ohne etwas freizugeben oder zu sperren.
Freigegebene Anlagen Die Zertifikate, die Sie freigegeben oder importiert haben, mit der Angabe, wer wann entschieden hat. Freigabe zurücknehmen schließt die Verbindung der Ladestation und bringt ihr Zertifikat in die Liste zurück. Zertifikat importieren gibt das öffentliche Zertifikat einer Ladestation vor ihrer ersten Verbindung frei.
Gesperrte Anlagen Die Zertifikate, die Sie gesperrt haben. Ein gesperrtes Zertifikat wird abgewiesen, auch wenn Windows ihm vertraut. Entsperren bringt das Zertifikat in die Liste zurück, ohne es freizugeben.

Jedes Zertifikat wird einzeln freigegeben, nie die Zertifizierungsstelle, die es signiert hat; eine zweite Ladestation desselben Herstellers wartet also auf ihre eigene Freigabe. Vergleichen Sie den Fingerabdruck mit dem, den die Ladestation angibt, bevor Sie es freigeben. Die Freigabe ändert nicht, welche Ladestation das Zertifikat ist: Es wird weiterhin nur unter der Kennung der Ladestation zugelassen, die es nennt, und nur innerhalb seiner Gültigkeitsdaten. Ein Zertifikat, dem Windows bereits vertraut, wird wie bisher zugelassen und erscheint hier nie; nichts wird automatisch freigegeben.

Die Entscheidungen liegen im Datenordner der Station unter ua\pki\ocpp und überstehen einen Neustart. Die Befehle werden nur einer Rolle gezeichnet, die den Connector konfigurieren darf, und sie wirken nur im eigenen Fenster der Station: Ein Browser auf einem anderen Gerät liest die Karte, ohne sie zu ändern, und kein Werkzeug eines Agenten gibt ein Zertifikat frei. Die Liste hält bis zu 100 Zertifikate, die auf Freigabe warten; ist sie voll, wird ein neues weiter abgewiesen, aber nicht aufgeführt, und die Karte sagt das.

Verbindungsfelder

Feld Was es ist Format Standard
Kennung Die Kennung der Ladestation, für die dieses Gerät steht: dieselbe Kennung, die die Ladestation ans Ende ihrer Verbindungs-URL setzt und in ihrem Zertifikat trägt. Freitext, ohne Rücksicht auf Groß- und Kleinschreibung verglichen. Leer fällt auf den bereinigten Namen des Geräts zurück. leer

Es gibt keine Felder für Host, Port oder Anmeldedaten: Die Ladestation hält die Einzelheiten der Verbindung, und diese Station muss nur wissen, welche Ladestation das Gerät meint. Es gibt auch keine Felder für das Abfrageintervall. OCPP sendet von sich aus, die Ladestation schickt MeterValues und StatusNotification nach ihrem eigenen Takt, und die Tags frischen sich aus den zuletzt empfangenen Daten in einem festen Ein-Sekunden-Takt auf.

Eine Ladestation, die sich noch nicht verbunden hat, oder ein Ladepunkt, der noch nichts gemeldet hat, hat daher keinen Messwert, keinen fehlgeschlagenen. Ihre Tags bleiben leer, und es wird kein Fehlschlag protokolliert: Ein Datenpunkt, den die Ladestation noch nicht gesendet hat, ist das Protokoll bei der Arbeit.

Der Zustand der Ladestation

Da eine Ladestation ihre Datenpunkte sendet, wenn sie welche hat, kann das Schweigen ihrer Tags eine Ladestation, die noch nichts gemeldet hat, nicht von einer unterscheiden, die weg ist. Ihr Zustand, der Punkt auf ihrer Zeile im Baum und die Spalte Zustand auf der Seite des Treibers, folgt stattdessen ihrer Verbindung zum Zentralsystem dieser Station:

Situation Zustand
Eingerichtet, und sie hat sich seit dem Öffnen der Station nicht verbunden Getrennt
Verbunden, noch nichts gesendet Verbunden
Verbunden und sendend Verbunden, oder Teilweise verbunden, wenn einige der gesendeten Datenpunkte sich nicht lesen lassen
Abgefallen: angehalten, ausgesteckt oder vom Netz abgeschnitten Getrennt, bis sie sich wieder verbindet
Das Zentralsystem lauscht nicht Getrennt
Deaktiviert Deaktiviert

Solange die Ladestation verbunden ist, zählt ein Ladepunkt, der noch nichts gemeldet hat, nicht gegen sie. Bis zu zehn Sekunden, nachdem eine Änderung an der Ladestation gespeichert wurde oder der Connector startet, liest sie sich Noch unbekannt: Das Gerät neu einzusetzen kann das Zentralsystem neu starten, und die Ladestation braucht einen Moment, um sich wieder zu verbinden.

Tags

Ein OCPP-Tag liest einen Ladepunkt der Ladestation (den connector im Sinne von OCPP: eine Steckerposition, ab 1 nummeriert). Unter OCPP 2.0, 2.0.1 und 2.1 ist es die Nummer des EVSE, weil die Ladepunkte dort in jedem EVSE wieder ab 1 zählen. Es gibt drei Arten von Tags, die am Namensende des Tags unterschieden werden, das geprüft wird:

Name des Tags endet auf Was das Tag liest Sinnvoller Typ
Meter Den jüngsten abgetasteten Zählerwert, den der Ladepunkt gemeldet hat (OCPP MeterValues; unter OCPP 2.x auch die Werte, die ein TransactionEvent während eines Ladevorgangs mitbringt). Die Einheit ist die, die die Ladestation sendet, üblicherweise Wh. Der Server behält die letzten 10 Abtastwerte, und das Tag liest die neueste. Ein Ladepunkt, der nie gemeldet hat, liest als leerer Wert, nicht als null. Float oder Double
Status Den Zustandstext des Ladepunkts aus der letzten StatusNotification (zum Beispiel Available, Faulted). Unter OCPP 2.x liest ein EVSE mit mehr als einem Ladepunkt den aussagekräftigsten Zustand unter ihnen: Faulted geht vor Occupied, Occupied vor Reserved, Reserved vor Available und Available vor Unavailable. Wer noch keinen Zustand gemeldet hat, liest als leerer Wert. String
Transaction Die Nummer der Transaktion, die gerade auf dem Ladepunkt läuft, also das, was die Befehle RemoteStopTransaction und GetTransactionStatus verlangen: unter OCPP 1.6 die Nummer, die diese Station beim Start der Transaktion vergeben hat, unter OCPP 2.x die eigene Kennung der Ladestation, genau so, wie sie sie gesendet hat. Sie wird gesetzt, wenn eine Transaktion beginnt, und geleert, wenn sie endet; läuft keine, liest das Tag einen leeren Text. Bis nach dem Verbinden der Ladestation eine Transaktion beginnt oder endet, liest es einen leeren Wert, weil schon eine laufen könnte. String

Ein Name ohne eines dieser Enden wird von der Prüfung abgelehnt: Benennen Sie Tags wie Connector1Meter, Connector1Status und Connector1Transaction.

Feld Wirkung Werte Standard
Ladepunkt Die Nummer, die dieses Tag liest: unter OCPP 1.6 die des Ladepunkts, unter OCPP 2.x die des EVSE. 1 oder größer 1
Datentyp Der OPC UA-Typ, unter dem der Wert veröffentlicht wird. Int32, Float, Double, String Float

OCPP-Tags sind nur lesend: Das Feld für den Zugriff bietet keine schreibbare Wahl an, und ein Schreibvorgang wird abgelehnt, statt vorgetäuscht. Eine Ladestation zu befehlen ist ein Befehl für sich, gleich beschrieben, und kein Wert, der auf ein Tag geschrieben wird.

Befehle

Eine Ladestation wird nicht nur gelesen, sondern auch befehligt. Jedes OCPP-Gerät trägt die Befehle unten als Methoden am Gerät im eigenen OPC UA-Adressraum dieser Station, sodass ein mit dieser Station verbundener OPC UA-Client einen Befehl erteilt, indem er die Methode aufruft.

Jeder Befehl nimmt als erstes Argument die Kennung der Ladestation und gibt als Ergebnis die eigene Antwort der Ladestation zurück.

Befehl Weitere Argumente Wirkung
ChangeAvailability ConnectorId, Type (Operative oder Inoperative) Nimmt einen Ladepunkt in oder außer Betrieb.
ChangeConfiguration Key, Value Setzt einen Konfigurationsschlüssel an der Ladestation (OCPP 1.6).
ClearCache keine Leert den Autorisierungsspeicher der Ladestation.
GetConfiguration Key Liest einen Konfigurationsschlüssel (OCPP 1.6).
RemoteStartTransaction IdTag Startet einen Ladevorgang für ein Zeichen.
RemoteStopTransaction TransactionId Beendet einen laufenden Ladevorgang.
GetTransactionStatus TransactionId Fragt, ob eine Transaktion noch läuft (OCPP 2.x).
Reset keine Startet die Ladestation neu.
UnlockConnector ConnectorId Gibt das Kabel an einem Ladepunkt frei.
SetChargingProfile ConnectorId, Limit, NumberOfPhases Setzt eine Grenze für die Ladeleistung, in Watt. ConnectorId 0 begrenzt die ganze Ladestation; eine andere Nummer setzt die Standardgrenze für die Ladevorgänge an diesem Ladepunkt.
SetVariables ComponentName, VariableName, AttributeType, AttributeValue Setzt eine Variable einer Komponente (OCPP 2.x).
GetVariables ComponentName, VariableName, AttributeType Liest eine Variable einer Komponente (OCPP 2.x).

AttributeType ist eines von Actual, Target, MinSet, MaxSet.

Woher die TransactionId kommt. RemoteStopTransaction und GetTransactionStatus wirken auf eine Transaktion, die über ihre Nummer benannt wird. Lesen Sie sie aus dem Tag Transaction des Ladepunkts, an dem der Ladevorgang läuft (unter OCPP 2.x des EVSE), zum Beispiel Connector1Transaction, und geben Sie sie so weiter, wie sie dort steht. Ein leerer Text dort bedeutet, dass auf diesem Ladepunkt keine Transaktion läuft.

Ein Katalog für jede Version. Die Befehle behalten die Namen oben, gleich welche Version die Ladestation spricht, und die Station sendet jeden in der Form, die diese Version festlegt. In OCPP 2.0, 2.0.1 und 2.1 sind die Ladepunkte unter EVSEs gruppiert, und die als ConnectorId übergebene Nummer bezeichnet das EVSE.

Befehl Unter OCPP 1.6 Unter OCPP 2.0, 2.0.1 und 2.1
ChangeAvailability Wirkt auf den angegebenen Ladepunkt; 0 ist die ganze Ladestation. Wirkt auf das angegebene EVSE; 0 ist die ganze Ladestation.
RemoteStartTransaction Sendet den IdTag, und die Ladestation wählt den Ladepunkt. Geht als RequestStartTransaction hinaus, mit dem IdTag als zentralem Zeichen und einer eigenen Startkennung; die Ladestation wählt das EVSE.
RemoteStopTransaction Die TransactionId ist die Nummer, die diese Station dem Ladevorgang beim Start gegeben hat. Geht als RequestStopTransaction hinaus; die TransactionId ist die eigene Kennung der Ladestation und wird als Text weitergegeben.
Reset Ein harter Neustart. Ein sofortiger Neustart.
UnlockConnector Gibt den angegebenen Ladepunkt frei. Gibt den ersten Ladepunkt des angegebenen EVSE frei.
SetChargingProfile 0 setzt das Höchstprofil der Ladestation; ein anderer Ladepunkt erhält ein Standardprofil. 0 setzt das Höchstprofil der Ladestation; ein anderes EVSE erhält ein Standardprofil.
ChangeConfiguration, GetConfiguration Wie in der Tabelle oben. Nicht Teil dieser Versionen: Die Ladestation antwortet mit einem Fehler, und der Befehl schlägt fehl.
GetTransactionStatus, SetVariables, GetVariables Nicht Teil dieser Version: Die Ladestation antwortet mit einem Fehler, und der Befehl schlägt fehl. Wie in der Tabelle oben.

Auf die Antwort warten. Ein Befehl ist nicht fertig, wenn die Station ihn gesendet hat. Die Station hält den Aufruf offen, bis die Ladestation genau den Auftrag beantwortet, den sie gesendet hat, zugeordnet über die Korrelationskennung, die mitreist, und meldet erst dann Erfolg und gibt die Antwort zurück. Drei Dinge beenden ihn anders, jedes als Fehlschlag mit seinem Grund gemeldet:

  • Die Ladestation ist nicht verbunden, oder ihre Verbindung ist nicht offen. Es wird nichts gesendet.
  • Die Ladestation antwortet mit einem OCPP-Fehler, zum Beispiel bei einem Befehl, den sie nicht umsetzt. Der Fehlercode ist der Grund.
  • 30 Sekunden vergehen ganz ohne Antwort. Ein Befehl, den niemand beantwortet hat, ist ein Fehlschlag, nie ein Erfolg.

Ein Befehl für eine Ladestation, die ein Gerät nicht trägt oder die nicht verbunden ist, wird sofort abgelehnt, statt in eine Warteschlange gestellt zu werden.

Gerätesuche

Geräte suchen führt beim Treiber OCPP die Ladestationen auf, die gerade mit dem Zentralsystem verbunden sind, und die Kanäle eines Kandidaten zu lesen schlägt je ein Tag Meter, Status und Transaction für jeden Ladepunkt vor, den die Ladestation bisher gemeldet hat.

Die erste Ladestation wird immer von Hand eingerichtet. Nichts kann sich verbinden, bevor das Zentralsystem lauscht, und es lauscht erst, wenn es hier ein OCPP-Gerät gibt, ein Suchlauf in einer Anlage ohne eingerichtete Ladestation findet also nichts und sagt es. Legen Sie dieses erste Gerät mit der Kennung an, unter der sich die Ladestation verbinden wird; danach lässt sich eine Ladestation, die sich verbunden hat, finden. Der allgemeine Ablauf der Gerätesuche steht auf der Seite Connector.

Die Kennung wird ohne Rücksicht auf Groß- und Kleinschreibung verglichen, im Zertifikat, im Pfad der Verbindung und gegen das Gerät: Eine Ladestation, die sich als cp-a mit einem Zertifikat auf CP-A verbindet, ist dieselbe Ladestation wie ein Gerät, dessen Kennung CP-A lautet.

Eine Ladestation, die Sie schon haben, liest ihre Ladepunkte von ihrer eigenen Seite aus erneut: Tags suchen im Kopf ihrer Karte der Tags bietet die Tags Meter, Status und Transaction jedes Ladepunkts an, den sie verbunden gemeldet hat und für den das Gerät noch kein Tag hat (siehe Die Tags eines Geräts suchen).