Zum Inhalt

Die Protokollreferenz für OCPP 1.6J.

Was eine Ladestation und ihr Backoffice einander sagen: alle 28 Nachrichten mit ihren Feldern und einem Beispiel, die 43 Konfigurationsschlüssel, was eine Ladestation messen kann und was in der Praxis schiefgeht.

NachrichtenKonfigurationsschlüsselMessgrößenFragen

Was ist OCPP 1.6J?

OCPP, das Open Charge Point Protocol, ist ein freier und offener Standard der Open Charge Alliance. Er legt fest, wie eine Ladestation mit der Software spricht, die sie verwaltet: in der Spezifikation das Central System, im Markt das Backoffice.

In Version 1.6J öffnet die Ladestation einen WebSocket zum Backoffice, und beide Seiten senden darüber JSON-Nachrichten. Die Ladestation meldet ihren Status, ihre Zählerwerte und ihre Ladevorgänge. Das Backoffice startet und stoppt Ladevorgänge, ändert Einstellungen und setzt Ladegrenzen.

Weil der Standard offen ist, kann sich eine Ladestation, die ihn spricht, auch mit anderen Backoffices verbinden, die ihn sprechen, abhängig von Modell, Firmware und Konfiguration. Deshalb können Sie an einem Standort Marken mischen und eine Ladestation zu einem anderen Backoffice umziehen. Um eine Ladestation gleichzeitig mit mehreren Backoffices zu betreiben, nutzen Sie den OCPP Proxy.

  • Ein offener StandardFrei implementierbar, gepflegt von der Open Charge Alliance.
  • WebSocket und JSONEine Verbindung, die offen bleibt, mit strukturierten Nachrichten.
  • 28 NachrichtenIn sechs Feature-Profilen, von Core bis Remote Trigger.
  • Beide RichtungenDie Ladestation und das Backoffice starten jeweils eigene Nachrichten.

Alle 28 Nachrichten von OCPP 1.6

Jede Nachricht ist eine Anfrage der einen Seite und eine Antwort der anderen, einander zugeordnet über eine eindeutige Nachrichten-ID.

Core

Erforderlich. Grundlegende Ladestationsoperationen: Autorisierung, Transaktionen, Statusmeldungen, Konfiguration und grundlegende Fernsteuerung.

Fragt die Autorisierung für einen idTag an, bevor das Laden erlaubt wird.

Request
FeldTypVerwendungInhalt
idTagstringPflichtfeldDie zu autorisierende Kennung. Höchstens 20 Zeichen.
Response
FeldTypVerwendungInhalt
idTagInfoobjectPflichtfeldAutorisierungsinformationen zum idTag.
statusstringPflichtfeldAutorisierungsstatus. Einer der Werte Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptionalZeitpunkt, nach dem der idTag als abgelaufen gilt. Datum und Uhrzeit.
parentIdTagstringOptionalÜbergeordneter idTag für die Gruppenautorisierung. Höchstens 20 Zeichen.
Beispiel
Die Ladestation sendet
[2, "7f83df9c", "Authorize", {
  "idTag": "04A2B3C4D5E6F7"
}]
Das Backoffice antwortet
[3, "7f83df9c", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

In OCPP 2.0.1: Authorize

Wird nach dem Start gesendet, um sich beim Backoffice anzumelden.

Request
FeldTypVerwendungInhalt
chargePointVendorstringPflichtfeldHersteller der Ladestation. Höchstens 20 Zeichen.
chargePointModelstringPflichtfeldModell der Ladestation. Höchstens 20 Zeichen.
chargePointSerialNumberstringOptionalSeriennummer der Ladestation. Höchstens 25 Zeichen.
chargeBoxSerialNumberstringOptionalSeriennummer der Charge Box. Höchstens 25 Zeichen.
firmwareVersionstringOptionalFirmwareversion der Ladestation. Höchstens 50 Zeichen.
iccidstringOptionalICCID der SIM-Karte. Höchstens 20 Zeichen.
imsistringOptionalIMSI der SIM-Karte. Höchstens 20 Zeichen.
meterTypestringOptionalTyp des Energiezählers. Höchstens 25 Zeichen.
meterSerialNumberstringOptionalSeriennummer des Energiezählers. Höchstens 25 Zeichen.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldRegistrierungsstatus. Einer der Werte Accepted, Pending, Rejected.
currentTimestringPflichtfeldAktuelle Zeit des Central System. Datum und Uhrzeit.
intervalintegerPflichtfeldHeartbeat-Intervall in Sekunden.
Beispiel
Die Ladestation sendet
[2, "392b5b40", "BootNotification", {
  "chargePointVendor": "ExampleVendor",
  "chargePointModel": "ExampleModel",
  "firmwareVersion": "1.4.2"
}]
Das Backoffice antwortet
[3, "392b5b40", {
  "status": "Accepted",
  "currentTime": "2026-10-06T09:30:00Z",
  "interval": 300
}]

In OCPP 2.0.1: BootNotification

Ändert die Verfügbarkeit eines Ladepunkts.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldID des Ladepunkts (0 = die gesamte Ladestation).
typestringPflichtfeldGewünschte Änderung der Verfügbarkeit. Einer der Werte Inoperative, Operative.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Anfrage zur Verfügbarkeitsänderung. Einer der Werte Accepted, Rejected, Scheduled.
Beispiel
Das Backoffice sendet
[2, "be3dcf2e", "ChangeAvailability", {
  "connectorId": 1,
  "type": "Operative"
}]
Die Ladestation antwortet
[3, "be3dcf2e", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ChangeAvailability

Ändert einen Konfigurationsschlüssel auf der Ladestation.

Request
FeldTypVerwendungInhalt
keystringPflichtfeldZu ändernder Konfigurationsschlüssel. Höchstens 50 Zeichen.
valuestringPflichtfeldNeuer Wert für den Konfigurationsschlüssel. Höchstens 500 Zeichen.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Konfigurationsänderung. Einer der Werte Accepted, Rejected, RebootRequired, NotSupported.
Beispiel
Das Backoffice sendet
[2, "6fdf2255", "ChangeConfiguration", {
  "key": "MeterValueSampleInterval",
  "value": "60"
}]
Die Ladestation antwortet
[3, "6fdf2255", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SetVariables

Leert den Autorisierungs-Cache auf der Ladestation.

Request

Keine Felder: Die Anfrage ist leer.

Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Anfrage zum Leeren des Cache. Einer der Werte Accepted, Rejected.
Beispiel
Das Backoffice sendet
[2, "e993e844", "ClearCache", {}]
Die Ladestation antwortet
[3, "e993e844", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ClearCache

Herstellerspezifischer Datenaustausch.

Request
FeldTypVerwendungInhalt
vendorIdstringPflichtfeldKennzeichnet den Hersteller. Höchstens 255 Zeichen.
messageIdstringOptionalZusätzliche Kennung der Nachricht. Höchstens 50 Zeichen.
datastringOptionalHerstellerspezifische Daten.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Datenübertragung. Einer der Werte Accepted, Rejected, UnknownMessageId, UnknownVendorId.
datastringOptionalHerstellerspezifische Antwortdaten.
Beispiel
Eine Seite sendet
[2, "e1a403d5", "DataTransfer", {
  "vendorId": "com.example"
}]
Die andere Seite antwortet
[3, "e1a403d5", {
  "status": "Accepted"
}]

In OCPP 2.0.1: DataTransfer

Liest Konfigurationsschlüssel aus der Ladestation aus.

Request
FeldTypVerwendungInhalt
keyarrayOptionalListe der abzufragenden Konfigurationsschlüssel. Je Eintrag höchstens 50 Zeichen.
Response
FeldTypVerwendungInhalt
configurationKeyarrayOptionalListe der bekannten Konfigurationsschlüssel.
keystringPflichtfeldName des Konfigurationsschlüssels. Höchstens 50 Zeichen.
readonlybooleanPflichtfeldOb der Schlüssel schreibgeschützt ist.
valuestringOptionalAktueller Wert des Schlüssels. Höchstens 500 Zeichen.
unknownKeyarrayOptionalListe der angefragten Schlüssel, die unbekannt sind. Je Eintrag höchstens 50 Zeichen.
Beispiel
Das Backoffice sendet
[2, "02bd00f5", "GetConfiguration", {
  "key": [
    "MeterValueSampleInterval"
  ]
}]
Die Ladestation antwortet
[3, "02bd00f5", {
  "configurationKey": [
    {
      "key": "MeterValueSampleInterval",
      "readonly": false,
      "value": "60"
    }
  ]
}]

In OCPP 2.0.1: GetBaseReport und GetVariables

Regelmäßiges Lebenszeichen, damit das Backoffice weiß, dass die Ladestation online ist.

Request

Keine Felder: Die Anfrage ist leer.

Response
FeldTypVerwendungInhalt
currentTimestringPflichtfeldAktuelle Zeit des Central System. Datum und Uhrzeit.
Beispiel
Die Ladestation sendet
[2, "83622997", "Heartbeat", {}]
Das Backoffice antwortet
[3, "83622997", {
  "currentTime": "2026-10-06T09:30:00Z"
}]

In OCPP 2.0.1: Heartbeat

Sendet regelmäßige oder angeforderte Zählerstände.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldID des Ladepunkts (0 = Hauptzähler).
meterValuearrayPflichtfeldEin oder mehrere Zählerwerte mit Zeitstempel.
timestampstringPflichtfeldZeitstempel des Zählerwerts. Datum und Uhrzeit.
sampledValuearrayPflichtfeldEin oder mehrere Messwerte.
valuestringPflichtfeldDer gemessene Wert.
contextstringOptionalKontext der Messung. Einer der Werte Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOptionalFormat des Werts. Einer der Werte Raw, SignedData.
measurandstringOptionalArt der Messung. Einer der Werte Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM.
phasestringOptionalPhase, auf die sich die Messung bezieht. Einer der Werte L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1.
locationstringOptionalOrt der Messung. Einer der Werte Cable, EV, Inlet, Outlet, Body.
unitstringOptionalMaßeinheit. Einer der Werte Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
transactionIdintegerOptionalTransaktion, zu der diese Zählerwerte gehören.
Response

Keine Felder: Die Antwort ist leer.

Beispiel
Die Ladestation sendet
[2, "80a15023", "MeterValues", {
  "connectorId": 1,
  "meterValue": [
    {
      "timestamp": "2026-10-06T09:30:00Z",
      "sampledValue": [
        {
          "value": "19840",
          "measurand": "Energy.Active.Import.Register",
          "unit": "Wh"
        }
      ]
    }
  ],
  "transactionId": 4521
}]
Das Backoffice antwortet
[3, "80a15023", {}]

In OCPP 2.0.1: MeterValues

Startet einen Ladevorgang aus der Ferne.

Request
FeldTypVerwendungInhalt
idTagstringPflichtfeldDie Kennung für diesen Ladevorgang. Höchstens 20 Zeichen.
connectorIdintegerOptionalLadepunkt, an dem gestartet wird.
chargingProfileobjectOptionalLadeprofil, das für diesen Ladevorgang gilt.
chargingProfileIdintegerPflichtfeldEindeutige Kennung dieses Ladeprofils.
stackLevelintegerPflichtfeldPrioritätsstufe des Profils (höher = höhere Priorität).
chargingProfilePurposestringPflichtfeldZweck des Ladeprofils. Einer der Werte ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringPflichtfeldArt des Ladeplans. Einer der Werte Absolute, Recurring, Relative.
chargingScheduleobjectPflichtfeldDer Ladeplan.
chargingRateUnitstringPflichtfeldEinheit der Laderate (Ampere oder Watt). Einer der Werte A, W.
chargingSchedulePeriodarrayPflichtfeldListe der Zeitabschnitte des Plans.
startPeriodintegerPflichtfeldBeginn des Abschnitts in Sekunden ab Planbeginn.
limitnumberPflichtfeldLeistungs- oder Stromgrenze in diesem Abschnitt. In Schritten von 0,1.
numberPhasesintegerOptionalAnzahl der Phasen, mit denen geladen wird.
durationintegerOptionalDauer des Plans in Sekunden.
startSchedulestringOptionalBeginn des Plans. Datum und Uhrzeit.
minChargingRatenumberOptionalUnterstützte minimale Laderate. In Schritten von 0,1.
transactionIdintegerOptionalTransaktion, für die dieses Profil gilt.
recurrencyKindstringOptionalWiederholungsrhythmus für wiederkehrende Profile. Einer der Werte Daily, Weekly.
validFromstringOptionalZeitpunkt, ab dem das Profil gilt. Datum und Uhrzeit.
validTostringOptionalZeitpunkt, nach dem das Profil nicht mehr gilt. Datum und Uhrzeit.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Ladestation die Anfrage angenommen hat. Einer der Werte Accepted, Rejected.
Beispiel
Das Backoffice sendet
[2, "b7e2ef8a", "RemoteStartTransaction", {
  "idTag": "04A2B3C4D5E6F7",
  "connectorId": 1
}]
Die Ladestation antwortet
[3, "b7e2ef8a", {
  "status": "Accepted"
}]

In OCPP 2.0.1: RequestStartTransaction

Beendet einen Ladevorgang aus der Ferne.

Request
FeldTypVerwendungInhalt
transactionIdintegerPflichtfeldID der zu beendenden Transaktion.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Ladestation die Anfrage angenommen hat. Einer der Werte Accepted, Rejected.
Beispiel
Das Backoffice sendet
[2, "7fb0afb2", "RemoteStopTransaction", {
  "transactionId": 4521
}]
Die Ladestation antwortet
[3, "7fb0afb2", {
  "status": "Accepted"
}]

In OCPP 2.0.1: RequestStopTransaction

Setzt die Ladestation zurück (hart oder weich).

Request
FeldTypVerwendungInhalt
typestringPflichtfeldArt des durchzuführenden Resets. Einer der Werte Hard, Soft.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Ladestation den Reset angenommen hat. Einer der Werte Accepted, Rejected.
Beispiel
Das Backoffice sendet
[2, "526d688f", "Reset", {
  "type": "Soft"
}]
Die Ladestation antwortet
[3, "526d688f", {
  "status": "Accepted"
}]

In OCPP 2.0.1: Reset

Meldet dem Backoffice, dass ein Ladevorgang begonnen hat.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldLadepunkt, an dem die Transaktion begann.
idTagstringPflichtfeldKennung, mit der die Transaktion gestartet wurde. Höchstens 20 Zeichen.
meterStartintegerPflichtfeldZählerstand zu Beginn der Transaktion (Wh).
timestampstringPflichtfeldZeitstempel des Transaktionsbeginns. Datum und Uhrzeit.
reservationIdintegerOptionalID der genutzten Reservierung.
Response
FeldTypVerwendungInhalt
idTagInfoobjectPflichtfeldAutorisierungsinformationen zum idTag.
statusstringPflichtfeldAutorisierungsstatus. Einer der Werte Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptionalZeitpunkt, nach dem der idTag als abgelaufen gilt. Datum und Uhrzeit.
parentIdTagstringOptionalÜbergeordneter idTag für die Gruppenautorisierung. Höchstens 20 Zeichen.
transactionIdintegerPflichtfeldTransaktions-ID, vergeben vom Central System.
Beispiel
Die Ladestation sendet
[2, "2410a6a5", "StartTransaction", {
  "connectorId": 1,
  "idTag": "04A2B3C4D5E6F7",
  "meterStart": 12500,
  "timestamp": "2026-10-06T09:30:00Z"
}]
Das Backoffice antwortet
[3, "2410a6a5", {
  "idTagInfo": {
    "status": "Accepted"
  },
  "transactionId": 4521
}]

In OCPP 2.0.1: TransactionEvent

Meldet den aktuellen Status und etwaige Fehler eines Ladepunkts.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldLadepunkt, für den der Status gemeldet wird.
errorCodestringPflichtfeldFehlercode (NoError, wenn kein Fehler vorliegt). Einer der Werte ConnectorLockFailure, EVCommunicationError, GroundFailure, HighTemperature, InternalError, LocalListConflict, NoError, OtherError, OverCurrentFailure, PowerMeterFailure, PowerSwitchFailure, ReaderFailure, ResetFailure, UnderVoltage, OverVoltage, WeakSignal.
statusstringPflichtfeldAktueller Status des Ladepunkts. Einer der Werte Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted.
infostringOptionalZusätzliche Freitextinformation zum Status. Höchstens 50 Zeichen.
timestampstringOptionalZeitstempel der Statusänderung. Datum und Uhrzeit.
vendorIdstringOptionalHerstellerspezifische Kennung. Höchstens 255 Zeichen.
vendorErrorCodestringOptionalHerstellerspezifischer Fehlercode. Höchstens 50 Zeichen.
Response

Keine Felder: Die Antwort ist leer.

Beispiel
Die Ladestation sendet
[2, "d9b0420e", "StatusNotification", {
  "connectorId": 1,
  "errorCode": "NoError",
  "status": "Available"
}]
Das Backoffice antwortet
[3, "d9b0420e", {}]

In OCPP 2.0.1: StatusNotification

Meldet dem Backoffice, dass ein Ladevorgang beendet wurde.

Request
FeldTypVerwendungInhalt
transactionIdintegerPflichtfeldID der Transaktion, die beendet wird.
timestampstringPflichtfeldZeitstempel des Transaktionsendes. Datum und Uhrzeit.
meterStopintegerPflichtfeldZählerstand am Ende der Transaktion (Wh).
idTagstringOptionalKennung, die das Beenden angefordert hat. Höchstens 20 Zeichen.
reasonstringOptionalGrund für das Beenden der Transaktion. Einer der Werte EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized.
transactionDataarrayOptionalArray von MeterValue-Objekten (gleiche Struktur wie MeterValues.meterValue).
timestampstringPflichtfeldZeitstempel des Zählerwerts. Datum und Uhrzeit.
sampledValuearrayPflichtfeldEin oder mehrere Messwerte.
valuestringPflichtfeldDer gemessene Wert.
contextstringOptionalKontext der Messung. Einer der Werte Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOptionalFormat des Werts. Einer der Werte Raw, SignedData.
measurandstringOptionalArt der Messung. Einer der Werte Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM.
phasestringOptionalPhase, auf die sich die Messung bezieht. Einer der Werte L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1.
locationstringOptionalOrt der Messung. Einer der Werte Cable, EV, Inlet, Outlet, Body.
unitstringOptionalMaßeinheit. Einer der Werte Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
Response
FeldTypVerwendungInhalt
idTagInfoobjectOptionalAutorisierungsinformationen zum idTag.
statusstringPflichtfeldAutorisierungsstatus. Einer der Werte Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptionalZeitpunkt, nach dem der idTag als abgelaufen gilt. Datum und Uhrzeit.
parentIdTagstringOptionalÜbergeordneter idTag für die Gruppenautorisierung. Höchstens 20 Zeichen.
Beispiel
Die Ladestation sendet
[2, "b380dc07", "StopTransaction", {
  "transactionId": 4521,
  "timestamp": "2026-10-06T09:30:00Z",
  "meterStop": 19840,
  "idTag": "04A2B3C4D5E6F7"
}]
Das Backoffice antwortet
[3, "b380dc07", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

In OCPP 2.0.1: TransactionEvent

Entriegelt einen Ladepunkt aus der Ferne.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldZu entriegelnder Ladepunkt.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Entriegelungsanfrage. Einer der Werte Unlocked, UnlockFailed, NotSupported.
Beispiel
Das Backoffice sendet
[2, "882ccab0", "UnlockConnector", {
  "connectorId": 1
}]
Die Ladestation antwortet
[3, "882ccab0", {
  "status": "Unlocked"
}]

In OCPP 2.0.1: UnlockConnector

Firmware-Management

Firmware-Updates und Diagnose-Upload für die Remote-Wartung von Ladestationen.

Fordert die Ladestation auf, Diagnoseprotokolle hochzuladen.

Request
FeldTypVerwendungInhalt
locationstringPflichtfeldURI, an die die Diagnosedaten hochgeladen werden sollen. Eine Adresse (URI).
retriesintegerOptionalAnzahl der Wiederholungsversuche beim Hochladen.
retryIntervalintegerOptionalSekunden zwischen den Wiederholungsversuchen.
startTimestringOptionalBeginn des Zeitraums für die Protokollerfassung. Datum und Uhrzeit.
stopTimestringOptionalEnde des Zeitraums für die Protokollerfassung. Datum und Uhrzeit.
Response
FeldTypVerwendungInhalt
fileNamestringOptionalName der Diagnosedatei. Höchstens 255 Zeichen.
Beispiel
Das Backoffice sendet
[2, "da7920cd", "GetDiagnostics", {
  "location": "ftp://files.example.com/diagnostics/"
}]
Die Ladestation antwortet
[3, "da7920cd", {}]

In OCPP 2.0.1: GetLog

Meldet den Status eines Diagnose-Uploads.

Request
FeldTypVerwendungInhalt
statusstringPflichtfeldAktueller Status des Diagnose-Uploads. Einer der Werte Idle, Uploaded, UploadFailed, Uploading.
Response

Keine Felder: Die Antwort ist leer.

Beispiel
Die Ladestation sendet
[2, "d1c853b4", "DiagnosticsStatusNotification", {
  "status": "Uploaded"
}]
Das Backoffice antwortet
[3, "d1c853b4", {}]

In OCPP 2.0.1: LogStatusNotification

Meldet den Status eines Firmware-Updates.

Request
FeldTypVerwendungInhalt
statusstringPflichtfeldAktueller Status des Firmware-Updates. Einer der Werte Downloaded, DownloadFailed, Downloading, Idle, InstallationFailed, Installing, Installed.
Response

Keine Felder: Die Antwort ist leer.

Beispiel
Die Ladestation sendet
[2, "dc9afcb2", "FirmwareStatusNotification", {
  "status": "Installed"
}]
Das Backoffice antwortet
[3, "dc9afcb2", {}]

In OCPP 2.0.1: FirmwareStatusNotification

Weist die Ladestation an, neue Firmware herunterzuladen und zu installieren.

Request
FeldTypVerwendungInhalt
locationstringPflichtfeldURI, unter der die Firmware heruntergeladen werden kann. Eine Adresse (URI).
retrieveDatestringPflichtfeldZeitpunkt, ab dem die Ladestation die Firmware abrufen soll. Datum und Uhrzeit.
retriesintegerOptionalAnzahl der Wiederholungsversuche beim Herunterladen.
retryIntervalintegerOptionalSekunden zwischen den Wiederholungsversuchen.
Response

Keine Felder: Die Antwort ist leer.

Beispiel
Das Backoffice sendet
[2, "a57cc6a2", "UpdateFirmware", {
  "location": "ftp://files.example.com/fw-1.4.3.bin",
  "retrieveDate": "2026-10-07T02:00:00Z"
}]
Die Ladestation antwortet
[3, "a57cc6a2", {}]

In OCPP 2.0.1: UpdateFirmware

Lokale Autorisierungsliste

Verwaltung einer lokalen Autorisierungsliste auf der Ladestation für die Offline-Authentifizierung.

Liest die Versionsnummer der lokalen Autorisierungsliste aus.

Request

Keine Felder: Die Anfrage ist leer.

Response
FeldTypVerwendungInhalt
listVersionintegerPflichtfeldAktuelle Versionsnummer der lokalen Autorisierungsliste.
Beispiel
Das Backoffice sendet
[2, "ccf23a29", "GetLocalListVersion", {}]
Die Ladestation antwortet
[3, "ccf23a29", {
  "listVersion": 1
}]

In OCPP 2.0.1: GetLocalListVersion

Sendet eine vollständige oder teilweise Aktualisierung der lokalen Autorisierungsliste.

Request
FeldTypVerwendungInhalt
listVersionintegerPflichtfeldVersionsnummer dieser Listenaktualisierung.
updateTypestringPflichtfeldOb es ein vollständiger Ersatz oder eine differenzielle Aktualisierung ist. Einer der Werte Differential, Full.
localAuthorizationListarrayOptionalListe der Autorisierungseinträge.
idTagstringPflichtfeldDie zu autorisierende Kennung. Höchstens 20 Zeichen.
idTagInfoobjectOptionalAutorisierungsinformationen zum idTag.
statusstringPflichtfeldAutorisierungsstatus. Einer der Werte Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptionalZeitpunkt, nach dem der idTag als abgelaufen gilt. Datum und Uhrzeit.
parentIdTagstringOptionalÜbergeordneter idTag für die Gruppenautorisierung. Höchstens 20 Zeichen.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Aktualisierung der lokalen Liste. Einer der Werte Accepted, Failed, NotSupported, VersionMismatch.
Beispiel
Das Backoffice sendet
[2, "a23c9563", "SendLocalList", {
  "listVersion": 1,
  "updateType": "Full",
  "localAuthorizationList": [
    {
      "idTag": "04A2B3C4D5E6F7",
      "idTagInfo": {
        "status": "Accepted"
      }
    }
  ]
}]
Die Ladestation antwortet
[3, "a23c9563", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SendLocalList

Reservierung

Einen Ladepunkt für einen bestimmten Nutzer im Voraus reservieren.

Storniert eine bestehende Reservierung.

Request
FeldTypVerwendungInhalt
reservationIdintegerPflichtfeldID der zu stornierenden Reservierung.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Reservierung storniert wurde. Einer der Werte Accepted, Rejected.
Beispiel
Das Backoffice sendet
[2, "63258356", "CancelReservation", {
  "reservationId": 7
}]
Die Ladestation antwortet
[3, "63258356", {
  "status": "Accepted"
}]

In OCPP 2.0.1: CancelReservation

Legt eine Reservierung für einen bestimmten Ladepunkt an.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldZu reservierender Ladepunkt (0 = kein bestimmter Ladepunkt).
expiryDatestringPflichtfeldZeitpunkt, zu dem die Reservierung abläuft. Datum und Uhrzeit.
idTagstringPflichtfeldKennung, für die die Reservierung gilt. Höchstens 20 Zeichen.
reservationIdintegerPflichtfeldEindeutige ID dieser Reservierung.
parentIdTagstringOptionalÜbergeordneter idTag für die Gruppenreservierung. Höchstens 20 Zeichen.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldErgebnis der Reservierungsanfrage. Einer der Werte Accepted, Faulted, Occupied, Rejected, Unavailable.
Beispiel
Das Backoffice sendet
[2, "62a25d78", "ReserveNow", {
  "connectorId": 1,
  "expiryDate": "2026-10-06T10:00:00Z",
  "idTag": "04A2B3C4D5E6F7",
  "reservationId": 7
}]
Die Ladestation antwortet
[3, "62a25d78", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ReserveNow

Intelligentes Laden

Ladeprofile für Lastmanagement, Solarintegration und geplantes Laden einrichten und verwalten.

Entfernt ein oder mehrere Ladeprofile von der Ladestation.

Request
FeldTypVerwendungInhalt
idintegerOptionalID des zu entfernenden Ladeprofils.
connectorIdintegerOptionalLadepunkt, für den Profile entfernt werden.
chargingProfilePurposestringOptionalZweck der zu entfernenden Profile. Einer der Werte ChargePointMaxProfile, TxDefaultProfile, TxProfile.
stackLevelintegerOptionalStack-Level der zu entfernenden Profile.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb Profile entfernt wurden. Einer der Werte Accepted, Unknown.
Beispiel
Das Backoffice sendet
[2, "2c436739", "ClearChargingProfile", {}]
Die Ladestation antwortet
[3, "2c436739", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ClearChargingProfile

Fragt den kombinierten Ladeplan für einen Ladepunkt an.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldLadepunkt, für den der Plan abgefragt wird.
durationintegerPflichtfeldDauer des angefragten Plans in Sekunden.
chargingRateUnitstringOptionalBevorzugte Einheit für den Plan. Einer der Werte A, W.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Ladestation den Plan liefern kann. Einer der Werte Accepted, Rejected.
connectorIdintegerOptionalLadepunkt, für den der Plan gilt.
scheduleStartstringOptionalBeginn des kombinierten Plans. Datum und Uhrzeit.
chargingScheduleobjectOptionalDer kombinierte Ladeplan.
chargingRateUnitstringPflichtfeldEinheit der Laderate (Ampere oder Watt). Einer der Werte A, W.
chargingSchedulePeriodarrayPflichtfeldListe der Zeitabschnitte des Plans.
startPeriodintegerPflichtfeldBeginn des Abschnitts in Sekunden ab Planbeginn.
limitnumberPflichtfeldLeistungs- oder Stromgrenze in diesem Abschnitt. In Schritten von 0,1.
numberPhasesintegerOptionalAnzahl der Phasen, mit denen geladen wird.
durationintegerOptionalDauer des Plans in Sekunden.
startSchedulestringOptionalBeginn des Plans. Datum und Uhrzeit.
minChargingRatenumberOptionalUnterstützte minimale Laderate. In Schritten von 0,1.
Beispiel
Das Backoffice sendet
[2, "50bc203f", "GetCompositeSchedule", {
  "connectorId": 1,
  "duration": 3600
}]
Die Ladestation antwortet
[3, "50bc203f", {
  "status": "Accepted"
}]

In OCPP 2.0.1: GetCompositeSchedule

Sendet ein Ladeprofil an die Ladestation.

Request
FeldTypVerwendungInhalt
connectorIdintegerPflichtfeldLadepunkt, für den das Profil gilt.
csChargingProfilesobjectPflichtfeldDas zu installierende Ladeprofil.
chargingProfileIdintegerPflichtfeldEindeutige Kennung dieses Ladeprofils.
stackLevelintegerPflichtfeldPrioritätsstufe des Profils (höher = höhere Priorität).
chargingProfilePurposestringPflichtfeldZweck des Ladeprofils. Einer der Werte ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringPflichtfeldArt des Ladeplans. Einer der Werte Absolute, Recurring, Relative.
chargingScheduleobjectPflichtfeldDer Ladeplan.
chargingRateUnitstringPflichtfeldEinheit der Laderate (Ampere oder Watt). Einer der Werte A, W.
chargingSchedulePeriodarrayPflichtfeldListe der Zeitabschnitte des Plans.
startPeriodintegerPflichtfeldBeginn des Abschnitts in Sekunden ab Planbeginn.
limitnumberPflichtfeldLeistungs- oder Stromgrenze in diesem Abschnitt. In Schritten von 0,1.
numberPhasesintegerOptionalAnzahl der Phasen, mit denen geladen wird.
durationintegerOptionalDauer des Plans in Sekunden.
startSchedulestringOptionalBeginn des Plans. Datum und Uhrzeit.
minChargingRatenumberOptionalUnterstützte minimale Laderate. In Schritten von 0,1.
transactionIdintegerOptionalTransaktion, für die dieses Profil gilt.
recurrencyKindstringOptionalWiederholungsrhythmus für wiederkehrende Profile. Einer der Werte Daily, Weekly.
validFromstringOptionalZeitpunkt, ab dem das Profil gilt. Datum und Uhrzeit.
validTostringOptionalZeitpunkt, nach dem das Profil nicht mehr gilt. Datum und Uhrzeit.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb das Profil angenommen wurde. Einer der Werte Accepted, Rejected, NotSupported.
Beispiel
Das Backoffice sendet
[2, "01be9b20", "SetChargingProfile", {
  "connectorId": 1,
  "csChargingProfiles": {
    "chargingProfileId": 10,
    "stackLevel": 0,
    "chargingProfilePurpose": "TxDefaultProfile",
    "chargingProfileKind": "Relative",
    "chargingSchedule": {
      "chargingRateUnit": "A",
      "chargingSchedulePeriod": [
        {
          "startPeriod": 0,
          "limit": 16.0
        }
      ]
    }
  }
}]
Die Ladestation antwortet
[3, "01be9b20", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SetChargingProfile

Remote Trigger

Die Ladestation auffordern, eine bestimmte Nachricht auf Anfrage zu senden.

Fordert die Ladestation auf, eine bestimmte Nachricht sofort zu senden.

Request
FeldTypVerwendungInhalt
requestedMessagestringPflichtfeldDie Nachricht, die die Ladestation senden soll. Einer der Werte BootNotification, DiagnosticsStatusNotification, FirmwareStatusNotification, Heartbeat, MeterValues, StatusNotification.
connectorIdintegerOptionalLadepunkt, für den die Nachricht gesendet werden soll.
Response
FeldTypVerwendungInhalt
statusstringPflichtfeldOb die Ladestation die Nachricht senden wird. Einer der Werte Accepted, Rejected, NotImplemented.
Beispiel
Das Backoffice sendet
[2, "4c736efd", "TriggerMessage", {
  "requestedMessage": "StatusNotification"
}]
Die Ladestation antwortet
[3, "4c736efd", {
  "status": "Accepted"
}]

In OCPP 2.0.1: TriggerMessage

Konfigurationsschlüssel von OCPP 1.6

ChangeConfiguration setzt jeweils einen Schlüssel auf einer Ladestation, und GetConfiguration liest sie aus. Hier entscheidet sich das meiste Verhalten einer Ladestation im Praxisbetrieb: wie oft Zählerwerte ankommen, was sie enthalten, ob ein Ladevorgang einen Netzwerkausfall übersteht, wie ein Kabel entriegelt.

Wie sich der Aufruf verhält

  • Jeder Wert ist ein StringAuch Zahlen und Booleans: "60", "true". Eine JSON-Zahl verletzt das Schema der Nachricht, und eine Ladestation, die das Schema prüft, antwortet mit einem CallError.
  • Schreiben Sie Schlüsselnamen wie in der SpezifikationLaut Spezifikation spielt Groß- und Kleinschreibung bei Schlüsselnamen keine Rolle, doch nicht jede Ladestation hält sich daran. Schreiben Sie also MeterValuesSampledData und nicht metervaluessampleddata.
  • Manche Schlüssel brauchen einen NeustartDie Ladestation antwortet mit RebootRequired, und dann liegt es an Ihnen, einen Reset zu senden.
  • Hersteller ergänzen eigene SchlüsselGetConfiguration mit leerer Schlüsselliste liefert alle Schlüssel, die eine Ladestation unterstützt, auch die des Herstellers. Schlüssel, die Sie namentlich abfragen und die die Ladestation nicht kennt, kommen in unknownKey zurück.

Die vier Antworten

Accepted
Der Schlüssel ist gesetzt und jetzt aktiv.
Rejected
Der Schlüssel existiert, aber der Wert wurde abgelehnt: außerhalb des Wertebereichs, falsches Format oder auf dieser Ladestation schreibgeschützt.
RebootRequired
Der Wert ist gespeichert, gilt aber erst nach einem Neustart der Ladestation.
NotSupported
Die Ladestation implementiert diesen Schlüssel überhaupt nicht.

Alle 43 Schlüssel, nach Feature-Profil

SchlüsselTypZugriffWas er bewirkt
Core34
AllowOfflineTxForUnknownIdOptional laut SpezifikationbooleanLesen und SchreibenOb die Ladestation offline eine Transaktion für einen unbekannten idTag startet.Mit true lädt ein Standort auch bei einem Netzwerkausfall weiter, mit dem Risiko von Ladevorgängen, die Sie womöglich niemandem in Rechnung stellen können.
AuthorizationCacheEnabledOptional laut SpezifikationbooleanLesen und SchreibenOb die Ladestation das Ergebnis früherer Authorize-Aufrufe zwischenspeichert.Nicht dasselbe wie die Local Auth List: Der Cache füllt sich aus echten Autorisierungen, die Liste schickt das Backend.
AuthorizeRemoteTxRequestsbooleanLesenOb die Ladestation den idTag in einer RemoteStartTransaction vor dem Start autorisiert.Bei true braucht auch ein Fernstart aus der App einen Authorize-Durchlauf, ein ungültiger idTag lässt den Start also scheitern.
BlinkRepeatOptional laut SpezifikationintegerLesen und SchreibenWie oft die Ladestation die Lampe während einer Blinksequenz blinken lässt.
ClockAlignedDataIntervalintegerLesen und SchreibenIntervall für uhrzeitsynchrone Zählerwerte, gemessen ab Mitternacht. 0 schaltet sie ab.900 ergibt einen Wert zu jeder Viertelstunde. Dieser Schlüssel speist MeterValuesAlignedData, und er läuft unabhängig davon, ob ein Auto angeschlossen ist.
ConnectionTimeOutintegerLesen und SchreibenWie lange die Ladestation nach der Autorisierung darauf wartet, dass der Fahrer einsteckt, bevor sie den Ladepunkt wieder freigibt.
ConnectorPhaseRotationCSLLesen und SchreibenPhasenfolge pro Ladepunkt, in der Notation connectorId.RST, zum Beispiel 0.RST, 1.RST, 2.RTS.Ein Fehler hier bedeutet falsche Zählerwerte pro Phase und falsches einphasiges Lastmanagement. Prüfen Sie das an jedem dreiphasigen Standort.
ConnectorPhaseRotationMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Einträge in ConnectorPhaseRotation.
GetConfigurationMaxKeysintegerLesenMaximale Anzahl der Schlüssel, die eine einzelne GetConfiguration-Anfrage abfragen darf.Fragen Sie mehr ab, antwortet die Ladestation womöglich mit einem Fehler. Senden Sie GetConfiguration ganz ohne Schlüssel, um alles zu erhalten, was sie unterstützt.
HeartbeatIntervalintegerLesen und SchreibenWie oft die Ladestation einen Heartbeat sendet, wenn sonst nichts passiert.Die Antwort auf BootNotification kann diesen Wert überschreiben. Auf einer SIM mit Volumentarif ist ein kurzer Heartbeat ein stiller Datenverbrauch, der sich summiert.
LightIntensityOptional laut SpezifikationintegerLesen und SchreibenHelligkeit der Beleuchtung der Ladestation, in Prozent.
LocalAuthorizeOfflinebooleanLesen und SchreibenOb die Ladestation offline über ihre lokale Liste oder ihren Cache autorisiert.
LocalPreAuthorizebooleanLesen und SchreibenOb die Ladestation online eine Transaktion aus der lokalen Liste oder dem Cache startet, ohne auf das Backend zu warten.Verkürzt die Wartezeit an der Ladestation, dafür hat das Backend nicht bei jedem Start das letzte Wort.
MaxEnergyOnInvalidIdOptional laut SpezifikationintegerLesen und SchreibenEnergie, die die Ladestation noch liefert, nachdem sich eine Autorisierung als ungültig herausstellt.
MeterValuesAlignedDataCSLLesen und SchreibenMessgrößen, die in den uhrzeitsynchronen MeterValues im Takt von ClockAlignedDataInterval gesendet werden.Dasselbe Vokabular an Messgrößen wie MeterValuesSampledData, anderer Auslöser: die Uhr, nicht der Ladevorgang.
MeterValuesAlignedDataMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Messgrößen in MeterValuesAlignedData.
MeterValuesSampledDataCSLLesen und SchreibenMessgrößen, die während einer Transaktion erfasst und im Takt von MeterValueSampleInterval in MeterValues gesendet werden.Der nützlichste Schlüssel auf dieser Seite. Die ausführliche Betrachtung steht weiter unten.
MeterValuesSampledDataMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Messgrößen in MeterValuesSampledData.Lesen Sie diesen Wert, bevor Sie eine lange Liste aufbauen: Wird er überschritten, lehnt die Ladestation die ganze Liste ab.
MeterValueSampleIntervalintegerLesen und SchreibenWie oft die Ladestation während einer Transaktion MeterValuesSampledData erfasst. 0 schaltet die Erfassung ab.60 ist ein vernünftiger Standard. Unter 30 erzeugen Sie mit einer langen Liste von Messgrößen viel Datenverkehr für sehr wenig zusätzliche Erkenntnis.
MinimumStatusDurationOptional laut SpezifikationintegerLesen und SchreibenMindestdauer, die die Ladestation in einem Status bleibt, bevor sie den nächsten meldet.Hilft gegen flatternde Statusmeldungen bei Ladestationen, die zwischen Preparing und Available hin- und herspringen.
NumberOfConnectorsintegerLesenAnzahl der physischen Ladepunkte an dieser Ladestation.
ResetRetriesintegerLesen und SchreibenWie oft die Ladestation einen fehlgeschlagenen Reset wiederholt.
StopTransactionOnEVSideDisconnectbooleanLesen und SchreibenOb das Ausstecken auf der Fahrzeugseite die laufende Transaktion beendet.Bei false bleibt der Ladevorgang offen, nachdem das Kabel gezogen wurde, und so entstehen Ladevorgänge, die nie enden.
StopTransactionOnInvalidIdbooleanLesen und SchreibenOb die Ladestation die Transaktion beendet, wenn das Backend den idTag ablehnt.
StopTxnAlignedDataCSLLesen und SchreibenUhrzeitsynchrone Messgrößen, die den transactionData von StopTransaction hinzugefügt werden.
StopTxnAlignedDataMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Messgrößen in StopTxnAlignedData.
StopTxnSampledDataCSLLesen und SchreibenErfasste Messgrößen, die den transactionData von StopTransaction hinzugefügt werden.Halten Sie diese Liste kurz. Alles darin wird für jede Messung des gesamten Ladevorgangs in einer einzigen StopTransaction-Payload wiederholt, und so erzeugen Ladestationen Stop-Nachrichten im Megabyte-Bereich, die Backends ablehnen.
StopTxnSampledDataMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Messgrößen in StopTxnSampledData.
SupportedFeatureProfilesCSLLesenFeature-Profile, die diese Ladestation implementiert, zum Beispiel Core, FirmwareManagement, SmartCharging.Die ehrliche Antwort darauf, was eine Ladestation kann. Lesen Sie sie, bevor Sie einem Kunden intelligentes Laden zusagen.
SupportedFeatureProfilesMaxLengthOptional laut SpezifikationintegerLesenMaximale Anzahl der Einträge in SupportedFeatureProfiles.
TransactionMessageAttemptsintegerLesen und SchreibenWie oft die Ladestation eine Transaktionsnachricht erneut sendet, die das Backend nicht bestätigt hat.
TransactionMessageRetryIntervalintegerLesen und SchreibenGrundwartezeit zwischen diesen Wiederholungen. Die Ladestation multipliziert sie mit der Nummer des Versuchs.
UnlockConnectorOnEVSideDisconnectbooleanLesen und SchreibenOb das Kabel an der Ladestation entriegelt, wenn es am Auto ausgesteckt wird.
WebSocketPingIntervalOptional laut SpezifikationintegerLesen und SchreibenIntervall für WebSocket-Ping-Frames auf der OCPP-J-Verbindung.Die unauffällige Lösung für Ladestationen, die hinter einem NAT oder einer Firewall, die inaktive Verbindungen schließt, immer wieder offline gehen.
Lokale Autorisierungsliste3
LocalAuthListEnabledbooleanLesen und SchreibenOb die lokale Autorisierungsliste genutzt wird.
LocalAuthListMaxLengthintegerLesenWie viele Einträge die lokale Autorisierungsliste fasst.
SendLocalListMaxLengthintegerLesenWie viele Einträge in eine einzelne SendLocalList-Nachricht passen.Eine größere Liste muss in mehreren differenziellen Aktualisierungen gesendet werden.
Reservierung1
ReserveConnectorZeroSupportedOptional laut SpezifikationbooleanLesenOb die Ladestation eine Reservierung für Ladepunkt 0 annimmt, also für einen beliebigen Ladepunkt.
Intelligentes Laden5
ChargeProfileMaxStackLevelintegerLesenHöchstes Stack-Level, das die Ladestation bei einem Ladeprofil annimmt. Höhere Level haben Vorrang.
ChargingScheduleAllowedChargingRateUnitCSLLesenWelche Einheiten die Ladestation in einem Ladeplan annimmt: Strom (A), Leistung (W) oder beide.Senden Sie ein Profil in Watt an eine Ladestation, die nur Ampere annimmt, wird es abgelehnt. Dieser Schlüssel sagt Ihnen, welche Einheit Sie verwenden.
ChargingScheduleMaxPeriodsintegerLesenMaximale Anzahl der Zeitabschnitte in einem Ladeplan.
ConnectorSwitch3to1PhaseSupportedOptional laut SpezifikationbooleanLesenOb die Ladestation zwischen dreiphasigem und einphasigem Laden umschalten kann.Entscheidet, ob Sie unter das dreiphasige Minimum drosseln können, statt ganz zu pausieren.
MaxChargingProfilesInstalledintegerLesenWie viele Ladeprofile gleichzeitig installiert sein können.

MeterValuesSampledData: was eine Ladestation misst

Ein einziger Schlüssel, MeterValuesSampledData, entscheidet, welche Telemetrie Sie aus einem Ladevorgang erhalten. Er ist eine kommagetrennte Liste von Messgrößen, und die Ladestation erfasst jeden Eintrag im Intervall, das MeterValueSampleInterval festlegt, und sendet sie dann in einer MeterValues-Nachricht. Belassen Sie ihn beim Standardwert, erhalten Sie einen kumulativen Energiewert, genug für die Abrechnung, und sonst nichts: keine Leistungskurve, keinen Strom pro Phase, keine Spannung, keine Möglichkeit zu sehen, ob ein Limit für intelligentes Laden angekommen ist.

Er wirkt nie allein. MeterValueSampleInterval legt fest, wie oft er auslöst, MeterValuesSampledDataMaxLength begrenzt, wie viele Messgrößen Sie auflisten dürfen, StopTxnSampledData entscheidet, welche davon in StopTransaction wiederholt werden, und MeterValuesAlignedData nutzt dasselbe Vokabular nach Uhrzeit statt pro Ladevorgang.

Die Messgrößen

Jede dieser Größen darf in der Liste stehen. Welche eine Ladestation unterstützt, hängt von ihrer Hardware ab: Eine AC-Ladestation meldet den Ladezustand meist nicht, und eine einfache Ladestation hat womöglich nur das Energieregister.

MessgrößeEinheitÜblich beiWas sie Ihnen liefert
Energy.Active.Import.RegisterWhAC und DCKumulative aus dem Netz bezogene Energie, direkt vom Zählerregister abgelesen. Der Standard, wenn MeterValuesSampledData leer ist, und der Wert, auf dem fast jede Abrechnung aufbaut.
Energy.Active.Export.RegisterWhV2G-fähigKumulative zurückgespeiste Energie, für bidirektionale Installationen.
Energy.Active.Import.IntervalWhAC und DCSeit der vorigen Messung bezogene Energie statt eines laufenden Gesamtwerts.
Energy.Reactive.Import.RegistervarhAbhängig vom ZählerKumulative bezogene Blindenergie.
Power.Active.ImportWAC und DCMomentane Wirkleistung. Daraus zeichnen Sie eine Ladekurve, und darauf reagiert das Lastmanagement.
Power.OfferedWAC und DCLeistung, die die Ladestation dem Auto gerade anbietet. Vergleichen Sie sie mit Power.Active.Import, um zu sehen, ob ein Limit tatsächlich angewendet wird.
Power.Reactive.ImportvarAbhängig vom ZählerMomentane Blindleistung.
Power.FactorVerhältnisAbhängig vom ZählerVerhältnis von Wirkleistung zu Scheinleistung.
Current.ImportAAC und DCBezogener Strom. Meist pro Phase gemeldet, sodass diese eine Messgröße drei Werte pro Messung ergeben kann.
Current.OfferedAAC und DCStromgrenze, die die Ladestation dem Auto signalisiert. Die direkte Anzeige, ob Ihr Profil für intelligentes Laden angekommen ist.
Current.ExportAV2G-fähigZurückgespeister Strom, für bidirektionale Installationen.
VoltageVAC und DCNetzspannung, bei dreiphasigen Ladestationen pro Phase. Nützlich, um eine ausgefallene Phase oder eine schlechte Verbindung zu erkennen.
FrequencyHzAbhängig vom ZählerNetzfrequenz. Die Spezifikation sieht dafür kein Feld unit vor.
TemperatureCelsiusAbhängig von der LadestationTemperatur an der Ladestation oder am Ladepunkt. Erklärt eine Leistungsreduzierung an einem heißen Tag, bevor jemand sie für eine Störung hält.
SoC%DC, oder ISO 15118 bei ACLadezustand der Batterie des Autos. Nur vorhanden, wenn das Auto ihn tatsächlich meldet, was es beim einfachen AC-Laden meist nicht tut.
RPMrpmSeltenLüfterdrehzahl, bei Ladestationen, die sie melden.

Listen, die funktionieren

Kopieren Sie eine davon in den Wert eines ChangeConfiguration-Aufrufs. Beginnen Sie mit wenigen Messgrößen und ergänzen Sie weitere, sobald die Ladestation sie annimmt.

  • Nur Abrechnung

    Das Minimum, das noch eine korrekte Rechnung ergibt. Der Standard auf den meisten Ladestationen.

    Energy.Active.Import.Register
  • Standard-Telemetrie

    Sinnvoller Standard für einen verwalteten AC-Standort: eine Leistungskurve, Strom pro Phase und Spannung für die Diagnose.

    Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage
  • Intelligentes Laden

    Ergänzt die angebotenen Werte, damit Sie sehen, ob ein Profil tatsächlich angewendet wird, statt es anzunehmen.

    Energy.Active.Import.Register, Power.Active.Import, Power.Offered, Current.Import, Current.Offered, Voltage
  • DC-Schnellladen

    Ergänzt Ladezustand und Temperatur, die DC-Ladestationen melden und die die meisten Leistungsreduzierungen erklären.

    Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage, SoC, Temperature

Was schiefgeht

  • Eine ungültige Messgröße führt zur Ablehnung der ganzen Liste

    Ladestationen prüfen die Liste als Ganzes. Wird ein einzelner Eintrag nicht unterstützt, erhalten Sie Rejected oder NotSupported für alles, ohne Hinweis darauf, welcher fehlgeschlagen ist. Setzen Sie die Liste Messgröße für Messgröße, um den Verursacher zu finden, oder lesen Sie zuerst MeterValuesSampledDataMaxLength und die Herstellerdokumentation.

  • Eine Messgröße kann drei Werte sein

    Current.Import und Voltage werden pro Phase gemeldet, auf einer dreiphasigen Ladestation kommen sie also als je drei sampledValue-Einträge an, gekennzeichnet mit L1, L2, L3 oder L1-N und so weiter. Eine Liste mit sechs Messgrößen ergibt leicht ein Dutzend Werte pro Messung. Die Payload wächst schneller, als die Länge der Liste vermuten lässt.

  • Wh oder kWh

    Das Energieregister ist standardmäßig in Wh, aber das Feld unit kann kWh angeben, und manche Firmware tut das auch. Lesen Sie die Einheit aus, statt sie anzunehmen, sonst erhalten Sie eine Rechnung, die um den Faktor tausend danebenliegt.

  • Ein kurzes Intervall hat seinen Preis

    MeterValueSampleInterval auf 10 Sekunden mit einer langen Liste bedeutet Hunderte Nachrichten pro Ladevorgang. Auf einer SIM mit Volumentarif kostet das echtes Geld, und an einem großen Standort ist es echte Last für das Backend. 60 Sekunden sind ein guter Standard, 300 für Standorte, an denen Sie nur den Verlauf der Kurve brauchen.

  • StopTxnSampledData ist die Payload-Falle

    Alles, was dort steht, wird für jede Messung des gesamten Ladevorgangs in einer einzigen StopTransaction-Nachricht wiederholt. Eine lange Liste bei einem langen Ladevorgang erzeugt eine Payload, die groß genug ist, dass Backends sie ablehnen oder abschneiden, und die Transaktion wird dann nicht sauber abgeschlossen. Beschränken Sie sie auf das Energieregister, sofern Sie keinen bestimmten Grund haben.

  • Ohne Energieregister funktioniert die Abrechnung nicht

    Steht Energy.Active.Import.Register nicht in der Liste, enthalten die periodischen Zählerwerte keinen kumulativen Gesamtwert. Die meisten Backends greifen dann auf meterStart und meterStop aus den Transaktionsnachrichten zurück, und jeder Ladevorgang, bei dem StopTransaction fehlt, lässt sich nicht abrechnen. Lassen Sie ihn immer in der Liste.

  • SoC ist bei AC meist nicht verfügbar

    Der Ladezustand kommt vom Auto, über ISO 15118 oder das DC-Ladeprotokoll. An einer einfachen AC-Ladestation ohne Plug and Charge meldet das Auto ihn nicht, eine Anfrage nach SoC wird also abgelehnt oder liefert nichts Brauchbares.

  • Lesen Sie das Feld context

    Jeder sampledValue hat einen context: Sample.Periodic, Transaction.Begin, Transaction.End, Sample.Clock oder Trigger. Ein Wert bei Transaction.Begin ist ein Anfangsstand des Registers, kein Verbrauch. Wer jede Messung als periodisch behandelt, zählt Ladevorgänge doppelt.

Fragen zu OCPP 1.6J

OCPP 1.6J ist Version 1.6 des Open Charge Point Protocol in der JSON-Variante. Die Ladestation öffnet einen WebSocket zu ihrem Backoffice, und beide Seiten senden darüber JSON-Nachrichten. Die Open Charge Alliance hat Version 1.6 im Jahr 2015 veröffentlicht, und die meisten Ladestationen unterstützen sie noch: In unserer Ladestationsdatenbank unterstützen 483 der 495 Ladestationen mit bekannter OCPP-Version 1.6.

Sie übertragen dieselben Nachrichten auf unterschiedliche Weise. 1.6J sendet JSON über einen WebSocket, den die Ladestation offen hält, die Ladestation braucht also nur eine ausgehende Verbindung. 1.6S sendet SOAP über HTTP, und dann muss auch das Backoffice die Ladestation erreichen können.

2.0.1 ist eine neuere Version mit eigenen Nachrichten. Sie beschreibt die Einstellungen einer Ladestation in einem Gerätemodell, hat Sicherheitsprofile eingebaut, ersetzt StartTransaction und StopTransaction durch TransactionEvent und ergänzt Nachrichten für Plug and Charge (ISO 15118). Die beiden lassen sich nicht mischen: Eine Ladestation und ihr Backoffice einigen sich beim Aufbau der Verbindung auf eine Version. In unserer Ladestationsdatenbank nennen 102 Ladestationen 2.0.1 zusätzlich zu 1.6 oder stattdessen. Jede Nachricht von 2.0.1 und 2.1 steht in der Referenz zu OCPP 2.0.1 und 2.1.

Die Open Charge Alliance veröffentlicht sie kostenlos auf ihrer Website, mit einem JSON-Schema für jede Nachricht. Diese Referenz folgt der Spezifikation. Wo beide voneinander abweichen, gilt die Spezifikation.

Über das Feature-Profil Smart Charging. Das Backoffice sendet SetChargingProfile mit einem Plan aus Grenzwerten in Ampere oder Watt. Ein ChargePointMaxProfile begrenzt die ganze Ladestation, ein TxDefaultProfile gilt für jeden neuen Ladevorgang und ein TxProfile für einen laufenden Ladevorgang. Überschneiden sich zwei Profile mit demselben Zweck, hat das mit dem höheren stackLevel Vorrang. Wie Plugchoice das nutzt, steht auf der Seite zu intelligentem Laden.

Sehen Sie in der Ladestationsdatenbank nach: 775 Ladestationen, mit den OCPP-Versionen, die wir kennen, und der Quelle jeder Angabe. Meist steht es auch im Datenblatt der Ladestation, oft als OCPP 1.6J oder OCPP 1.6 JSON.

Geben Sie in den Einstellungen der Ladestation, oft in der Installateur-App oder auf ihrer lokalen Webseite, die WebSocket-URL des Backoffice ein (sie beginnt mit ws:// oder wss://) und die ID der Ladestation, die Charge Point Identity. Die Ladestation baut die Verbindung auf und sendet eine BootNotification. Sobald das Backoffice mit Accepted antwortet, ist die Ladestation online und sendet für jeden Ladepunkt eine StatusNotification.

Plugchoice und OCPP

  • Ein kostenloses BackofficeVerbinden Sie eine OCPP-1.6J-Ladestation und verwalten Sie sie im Webportal.
  • Die AppEigentümer und Installateure steuern dieselbe Ladestation vom Smartphone aus.
  • Der OCPP ProxyEine Ladestation gleichzeitig an mehreren Backoffices.
  • BackofficesDie Backoffices, die Sie aus einer Liste wählen, wenn Sie eine Ladestation verbinden.

Weiterführende Lektüre

  1. Was ist OCPP?

    Blog | 3 Min. Lesezeit

  2. Was ist ein OCPP-Backoffice?

    Blog | 2 Min. Lesezeit

Diese Seite für KI-Assistenten

Die ganze Referenz, jede Nachricht und jeder Konfigurationsschlüssel, als eine Textdatei, die ein Assistent in einem Zug lesen kann.

Die Referenz als reiner Text

Betreiben Sie Ihre OCPP-Ladestationen mit Plugchoice

Verbinden Sie Ihre OCPP-1.6J-Ladestationen kostenlos mit Plugchoice und verwalten Sie sie im Webportal, in der App und über die API.