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.
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.
// [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.
| Bericht | Richting | Functie |
|---|---|---|
| BootNotification | Paal → CSMS | Aanmelden bij opstart, met merk, model en firmware |
| Heartbeat | Paal → CSMS | Levensteken op vast interval |
| StatusNotification | Paal → CSMS | Status van een connector, plus eventuele foutcode |
| Authorize | Paal → CSMS | Vragen of een laadpas mag laden |
| StartTransaction | Paal → CSMS | Laadsessie openen, levert transactionId op |
| StopTransaction | Paal → CSMS | Laadsessie sluiten, met eindmeterstand en reden |
| MeterValues | Paal → CSMS | Tussentijdse meterstanden |
| DataTransfer | Beide | Fabrikantspecifieke uitbreidingen |
| RemoteStartTransaction | CSMS → paal | Sessie starten vanaf afstand |
| RemoteStopTransaction | CSMS → paal | Sessie stoppen vanaf afstand |
| UnlockConnector | CSMS → paal | Kabel ontgrendelen |
| Reset | CSMS → paal | Herstarten, zacht of hard |
| ChangeAvailability | CSMS → paal | Beschikbaar of buiten gebruik zetten |
| ChangeConfiguration | CSMS → paal | Configuratiesleutel wijzigen |
| GetConfiguration | CSMS → paal | Configuratiesleutels uitlezen |
| ClearCache | CSMS → paal | Lokale 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.
| Profiel | Berichten | Waarvoor je het nodig hebt |
|---|---|---|
| Firmware Management | UpdateFirmware, FirmwareStatusNotification, GetDiagnostics, DiagnosticsStatusNotification | Firmware op afstand bijwerken en logbestanden ophalen |
| Local Auth List Management | SendLocalList, GetLocalListVersion | Laadpassen lokaal opslaan, zodat laden doorgaat als de verbinding wegvalt |
| Reservation | ReserveNow, CancelReservation | Een laadpunt vooraf vastleggen voor een specifieke gebruiker |
| Smart Charging | SetChargingProfile, ClearChargingProfile, GetCompositeSchedule | Laadvermogen begrenzen en verdelen over meerdere punten |
| Remote Trigger | TriggerMessage | De 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.
| Blok | Naam | Wat erin zit |
|---|---|---|
| A | Security | Beveiligde verbinding, SecurityEventNotification, wachtwoordrotatie |
| B | Provisioning | BootNotification, devicemodel uitlezen en instellen via GetBaseReport, SetVariables, GetVariables |
| C | Authorization | Authorize met gestructureerde idToken-objecten, cachebeheer |
| D | LocalAuthorizationListManagement | Lokale paslijsten synchroniseren |
| E | Transactions | TransactionEvent met de types Started, Updated en Ended |
| F | RemoteControl | RequestStartTransaction, RequestStopTransaction, UnlockConnector, TriggerMessage |
| G | Availability | ChangeAvailability, StatusNotification |
| H | Reservation | ReserveNow, CancelReservation |
| I | TariffAndCost | Tarieven tonen op het display, kosten tijdens de sessie bijwerken |
| J | MeteringAndSampling | Meterstanden buiten transacties om |
| K | SmartCharging | Laadprofielen, samengestelde schema's, ISO 15118-onderhandeling |
| L | FirmwareManagement | UpdateFirmware, PublishFirmware, statusmeldingen |
| M | ISO 15118 CertificateManagement | Certificaten voor Plug & Charge installeren en intrekken |
| N | Diagnostics | Logbestanden ophalen, monitoring met SetVariableMonitoring, NotifyEvent |
| O | DisplayMessage | Berichten tonen op het scherm van de laadpaal |
| P | DataTransfer | Fabrikantspecifieke 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
- 1Vraag per laadpaalmodel op welke profielen (1.6) of functieblokken (2.0.1) worden ondersteund, inclusief firmwareversie.
- 2Leg naast je functionele wensen welke berichten daarvoor nodig zijn. Load balancing zonder Smart Charging-profiel is niet te bouwen.
- 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.
- 4Log het ruwe berichtenverkeer aan beide kanten. Zonder de daadwerkelijke JSON blijft elke diagnose een vermoeden.
- 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
Verder lezen
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 →