OCPP Solutions

OCPP-berichten: complete referentie van 1.6 en 2.0.1

OCPP 1.6 kent 30 berichten verdeeld over zes profielen, waarvan alleen het Core-profiel verplicht is. OCPP 2.0.1 groepeert een veel groter aantal berichten in zestien functieblokken. Deze pagina geeft beide overzichten, met per bericht wie het verstuurt en waarvoor het dient.

Door Raphael Cornelis10 min lezen

OCPP 1.6 kent dertig berichten, verdeeld over zes profielen. Alleen het Core-profiel is verplicht; de andere vijf zijn optioneel, wat verklaart waarom twee laadpalen die allebei "OCPP 1.6" spreken toch verschillende dingen kunnen.

Die profielindeling is het eerste wat je moet controleren bij een koppeling. Een paal zonder het Smart Charging-profiel accepteert geen laadprofielen, en een paal zonder Reservation kan niet gereserveerd worden — ongeacht wat het beheersysteem stuurt.

In OCPP 2.0.1 zijn de profielen vervangen door zestien functieblokken, aangeduid met de letters A tot en met P. Het aantal berichten is fors toegenomen, vooral door certificaatbeheer, monitoring en het devicemodel.

Wie stuurt wat: richting van berichten

Elk OCPP-bericht heeft een vaste richting. Berichten van de laadpaal naar het beheersysteem melden iets dat gebeurd is; berichten van het beheersysteem naar de laadpaal geven een opdracht.

Dit onderscheid bepaalt hoe je een probleem onderzoekt. Krijg je geen StatusNotification meer binnen, dan zwijgt de paal. Wordt een Reset niet uitgevoerd, dan komt de opdracht niet aan of wordt hij geweigerd — twee heel verschillende sporen.

Opbouw van een OCPP-bericht over WebSocket
// [MessageTypeId, UniqueId, Action, Payload]
[2, "d3f1a8", "Heartbeat", {}]

// Antwoord: [MessageTypeId, UniqueId, Payload]
[3, "d3f1a8", { "currentTime": "2026-08-12T09:14:22Z" }]

// Fout: [MessageTypeId, UniqueId, ErrorCode, ErrorDescription, ErrorDetails]
[4, "d3f1a8", "NotSupported", "Onbekende actie", {}]

// 2 = CALL (verzoek)  ·  3 = CALLRESULT (antwoord)  ·  4 = CALLERROR (fout)

OCPP 1.6 — Core-profiel (verplicht)

Het Core-profiel bevat de zestien berichten die elke OCPP 1.6-laadpaal moet ondersteunen. Hiermee kun je laden, autoriseren, uitlezen en resetten.

OCPP 1.6 Core — zestien verplichte berichten
BerichtRichtingFunctie
BootNotificationPaal → CSMSAanmelden bij opstart, met merk, model en firmware
HeartbeatPaal → CSMSLevensteken op vast interval
StatusNotificationPaal → CSMSStatus van een connector, plus eventuele foutcode
AuthorizePaal → CSMSVragen of een laadpas mag laden
StartTransactionPaal → CSMSLaadsessie openen, levert transactionId op
StopTransactionPaal → CSMSLaadsessie sluiten, met eindmeterstand en reden
MeterValuesPaal → CSMSTussentijdse meterstanden
DataTransferBeideFabrikantspecifieke uitbreidingen
RemoteStartTransactionCSMS → paalSessie starten vanaf afstand
RemoteStopTransactionCSMS → paalSessie stoppen vanaf afstand
UnlockConnectorCSMS → paalKabel ontgrendelen
ResetCSMS → paalHerstarten, zacht of hard
ChangeAvailabilityCSMS → paalBeschikbaar of buiten gebruik zetten
ChangeConfigurationCSMS → paalConfiguratiesleutel wijzigen
GetConfigurationCSMS → paalConfiguratiesleutels uitlezen
ClearCacheCSMS → paalLokale autorisatiecache wissen

OCPP 1.6 — de vijf optionele profielen

De overige veertien berichten zitten in vijf optionele profielen. Welke een laadpaal ondersteunt, verschilt per merk, model en firmwareversie — vraag dit expliciet na voordat je functionaliteit belooft die erop leunt.

OCPP 1.6 — optionele profielen
ProfielBerichtenWaarvoor je het nodig hebt
Firmware ManagementUpdateFirmware, FirmwareStatusNotification, GetDiagnostics, DiagnosticsStatusNotificationFirmware op afstand bijwerken en logbestanden ophalen
Local Auth List ManagementSendLocalList, GetLocalListVersionLaadpassen lokaal opslaan, zodat laden doorgaat als de verbinding wegvalt
ReservationReserveNow, CancelReservationEen laadpunt vooraf vastleggen voor een specifieke gebruiker
Smart ChargingSetChargingProfile, ClearChargingProfile, GetCompositeScheduleLaadvermogen begrenzen en verdelen over meerdere punten
Remote TriggerTriggerMessageDe paal vragen om nu een bepaald bericht te sturen, bijvoorbeeld een statusupdate

OCPP 2.0.1 — de zestien functieblokken

OCPP 2.0.1 groepeert berichten in functieblokken A tot en met P. De indeling is fijnmaziger dan de profielen van 1.6, waardoor je preciezer kunt afspreken wat een implementatie moet kunnen.

OCPP 2.0.1 functieblokken
BlokNaamWat erin zit
ASecurityBeveiligde verbinding, SecurityEventNotification, wachtwoordrotatie
BProvisioningBootNotification, devicemodel uitlezen en instellen via GetBaseReport, SetVariables, GetVariables
CAuthorizationAuthorize met gestructureerde idToken-objecten, cachebeheer
DLocalAuthorizationListManagementLokale paslijsten synchroniseren
ETransactionsTransactionEvent met de types Started, Updated en Ended
FRemoteControlRequestStartTransaction, RequestStopTransaction, UnlockConnector, TriggerMessage
GAvailabilityChangeAvailability, StatusNotification
HReservationReserveNow, CancelReservation
ITariffAndCostTarieven tonen op het display, kosten tijdens de sessie bijwerken
JMeteringAndSamplingMeterstanden buiten transacties om
KSmartChargingLaadprofielen, samengestelde schema's, ISO 15118-onderhandeling
LFirmwareManagementUpdateFirmware, PublishFirmware, statusmeldingen
MISO 15118 CertificateManagementCertificaten voor Plug & Charge installeren en intrekken
NDiagnosticsLogbestanden ophalen, monitoring met SetVariableMonitoring, NotifyEvent
ODisplayMessageBerichten tonen op het scherm van de laadpaal
PDataTransferFabrikantspecifieke uitbreidingen, ongewijzigd uit 1.6

Blok B en N zijn de grootste verandering ten opzichte van 1.6. Blok B bevat het devicemodel, waarmee je een laadpaal kunt vragen welke componenten en variabelen hij heeft in plaats van dat per merk hard te coderen. Blok N maakt monitoring mogelijk waarbij de paal zelf meldt dat een waarde buiten de grenzen valt.

Wat je hiermee doet bij een koppeling

  1. 1Vraag per laadpaalmodel op welke profielen (1.6) of functieblokken (2.0.1) worden ondersteund, inclusief firmwareversie.
  2. 2Leg naast je functionele wensen welke berichten daarvoor nodig zijn. Load balancing zonder Smart Charging-profiel is niet te bouwen.
  3. 3Test de berichten die je nodig hebt daadwerkelijk op één paal per model, voordat je uitrolt. Ondersteuning op papier en ondersteuning in de praktijk lopen regelmatig uiteen.
  4. 4Log het ruwe berichtenverkeer aan beide kanten. Zonder de daadwerkelijke JSON blijft elke diagnose een vermoeden.
  5. 5Let op DataTransfer. Fabrikanten stoppen daar functionaliteit in die buiten de standaard valt; die moet je apart in kaart brengen en werkt niet zomaar met een ander beheersysteem.

Dat laatste punt is de meest onderschatte bron van leveranciersafhankelijkheid. Een paal kan volledig OCPP-compatibel zijn en tóch alleen alle functies bieden binnen het platform van de fabrikant, omdat de rest via DataTransfer loopt.

Veelgestelde vragen

Hoeveel berichten kent OCPP 1.6?

OCPP 1.6 kent dertig berichten, verdeeld over zes profielen. Alleen het Core-profiel met zestien berichten is verplicht; Firmware Management, Local Auth List Management, Reservation, Smart Charging en Remote Trigger zijn optioneel.

Wat is het verschil tussen StartTransaction en TransactionEvent?

StartTransaction en StopTransaction uit OCPP 1.6 zijn in 2.0.1 vervangen door één bericht: TransactionEvent, met de types Started, Updated en Ended. Dat maakt de afhandeling betrouwbaarder wanneer berichten in een andere volgorde binnenkomen of de verbinding tussendoor wegvalt.

Waarvoor dient het DataTransfer-bericht?

DataTransfer is de officiële ontsnappingsroute voor functionaliteit die niet in de standaard staat. Fabrikanten gebruiken het voor eigen uitbreidingen. Die functionaliteit werkt daardoor meestal niet met een ander beheersysteem, wat een verborgen vorm van leveranciersafhankelijkheid is.

Wat is het Local Auth List-profiel en waarom is het belangrijk?

Met dit profiel slaat de laadpaal een lijst met geldige laadpassen lokaal op. Valt de verbinding met het beheersysteem weg, dan kan de paal alsnog autoriseren. Zonder dit profiel ligt het laden stil zodra het internet eruit gaat.

Wat zijn de functieblokken in OCPP 2.0.1?

OCPP 2.0.1 verdeelt zijn berichten in zestien functieblokken, aangeduid met A tot en met P: van Security en Provisioning tot SmartCharging, certificaatbeheer voor ISO 15118 en Diagnostics. Ze vervangen de zes profielen uit OCPP 1.6.

Bronnen

Vragen over jouw specifieke situatie?

We bouwen OCPP-servers, CSMS-omgevingen en koppelingen voor bedrijven in heel Nederland. Een gesprek kost je een half uur en levert altijd een concreet antwoord op.

Gratis gesprek inplannen →