OCPP-foutcodes en statussen: complete referentie
OCPP kent vier soorten codes die je uit elkaar moet houden: connectorstatussen (wat doet de paal), foutcodes (wat is er stuk), autorisatiestatussen (mag deze pas laden) en RPC-fouten (wat ging er mis in het berichtenverkeer). Deze pagina geeft alle waarden met hun praktische betekenis.
OCPP kent vier verschillende soorten codes, en ze door elkaar halen is de meest voorkomende oorzaak van verkeerde diagnoses. Een connectorstatus zegt wat de paal aan het doen is, een foutcode zegt wat er kapot is, een autorisatiestatus zegt of een pas mag laden, en een RPC-fout zegt dat er iets mis is met het bericht zelf.
Deze pagina geeft alle waarden uit OCPP 1.6 en 2.0.1, met per code wat je in de praktijk moet controleren. De codes komen uit de officiële specificaties van de Open Charge Alliance; de praktijkduiding komt uit onze eigen implementaties.
Connectorstatussen (StatusNotification)
De connectorstatus beschrijft de toestand van één laadpunt op een moment. OCPP 1.6 kent negen statussen; 2.0.1 heeft dat teruggebracht naar vijf, waarbij de details over het laadproces naar de transactiegebeurtenissen zijn verhuisd.
| Status | Betekenis | Wat dit meestal betekent |
|---|---|---|
| Available | Vrij en beschikbaar | Normale ruststand, geen actie nodig |
| Preparing | Kabel of pas aangeboden, nog niet gestart | Blijft hier hangen? Autorisatie komt niet rond |
| Charging | Er wordt energie geleverd | Normale laadtoestand |
| SuspendedEV | Pauze op verzoek van de auto | Accu vol of accumanagement pauzeert; geen storing |
| SuspendedEVSE | Pauze op verzoek van de laadpaal | Vaak load balancing of een tariefvenster |
| Finishing | Sessie beëindigd, kabel nog aangesloten | Wacht op loskoppelen; ruimt zichzelf op |
| Reserved | Gereserveerd voor een specifieke gebruiker | Alleen bij gebruik van het Reservation-profiel |
| Unavailable | Bewust buiten gebruik gesteld | Meestal via ChangeAvailability gezet, niet stuk |
| Faulted | Storing, laden niet mogelijk | Kijk naar de meegestuurde errorCode |
| Status | Betekenis |
|---|---|
| Available | Vrij en bruikbaar |
| Occupied | In gebruik — dekt Preparing, Charging, Suspended en Finishing uit 1.6 |
| Reserved | Gereserveerd |
| Unavailable | Buiten gebruik |
| Faulted | Storing |
Foutcodes (ChargePointErrorCode)
De foutcode wordt meegestuurd met StatusNotification en zegt wat er precies mis is. Let op: een paal stuurt vaak NoError mee terwijl de status Available is — dat is geen fout maar de normale bevestiging dat er niets aan de hand is.
| Foutcode | Betekenis | Eerste controle |
|---|---|---|
| NoError | Geen fout | Normale melding, geen actie |
| ConnectorLockFailure | Kabelvergrendeling werkt niet | Vuil of mechanische slijtage in de connector |
| EVCommunicationError | Communicatie met de auto mislukt | Kabel, laadpaalzijde of het voertuig zelf |
| GroundFailure | Aardfout gedetecteerd | Direct elektricien inschakelen; laadpaal niet resetten |
| HighTemperature | Te hoge temperatuur | Ventilatie, directe zon of overbelasting |
| InternalError | Interne fout in de laadpaal | Firmwareversie controleren, daarna hard reset |
| LocalListConflict | Lokale autorisatielijst wijkt af van CSMS | Lijst opnieuw synchroniseren via SendLocalList |
| OverCurrentFailure | Te hoge stroom | Aangesloten belasting en instelling maximale stroom |
| OverVoltage | Te hoge spanning | Netspanning laten meten door netbeheerder |
| UnderVoltage | Te lage spanning | Spanningsval op de toevoer, vaak lange kabel of overbelasting |
| PowerMeterFailure | Kilowattuurmeter reageert niet | Meetmodule defect; sessies zijn niet betrouwbaar te factureren |
| PowerSwitchFailure | Schakelaar of relais schakelt niet | Relais defect; laadpaal buiten gebruik stellen |
| ReaderFailure | Paslezer werkt niet | RFID-module; controleer of lokale lijst laden nog mogelijk maakt |
| ResetFailure | Reset is mislukt | Paal reageert niet op afstand; ter plaatse spanningsloos maken |
| WeakSignal | Slechte mobiele of netwerkverbinding | Signaalsterkte; overweeg externe antenne of bekabeld netwerk |
| OtherError | Overige fout | Fabrikantspecifiek; vaak toegelicht via vendorErrorCode |
Bij OtherError en InternalError loont het om naar de velden vendorId en vendorErrorCode te kijken. Fabrikanten stoppen daar hun eigen, veel specifiekere foutcodes in, die je bij hun support kunt opzoeken.
Autorisatiestatussen (idTagInfo)
De autorisatiestatus is het antwoord van het CSMS op de vraag of een pas mag laden. Deze status verklaart vrijwel alle gevallen waarin een gebruiker meldt dat de paal niet start terwijl er niets kapot is.
| Status | Betekenis | Wat de gebruiker ziet |
|---|---|---|
| Accepted | Pas is geldig, laden mag | Sessie start normaal |
| Blocked | Pas is geblokkeerd | Paal weigert; pas is bewust uitgezet in het beheersysteem |
| Expired | Pas is verlopen | Paal weigert; einddatum van de pas is verstreken |
| Invalid | Pas is onbekend | Paal weigert; pas staat niet in de lijst of is verkeerd ingelezen |
| ConcurrentTx | Pas is al bezig met een andere sessie | Paal weigert; eerdere sessie is niet correct afgesloten |
Redenen voor het stoppen van een sessie
Bij StopTransaction geeft de laadpaal een reden mee. Die reden is de snelste manier om onderscheid te maken tussen een normale afsluiting en een afgebroken sessie.
| Reden | Betekenis | Normaal? |
|---|---|---|
| EVDisconnected | Stekker uit de auto getrokken | Ja — de normale afsluiting |
| Local | Gestopt aan de paal, bijvoorbeeld met een pas | Ja |
| Remote | Gestopt vanuit het CSMS | Ja |
| DeAuthorized | Autorisatie is tijdens de sessie ingetrokken | Nee — controleer de paskoppeling |
| EmergencyStop | Noodstop ingedrukt | Nee — ter plaatse controleren |
| PowerLoss | Spanning weggevallen | Nee — netstoring of groep eruit |
| Reboot | Paal is opnieuw opgestart | Nee — herhaalt dit zich, dan firmware onderzoeken |
| HardReset | Harde reset opgedragen | Alleen bij bewust ingrijpen |
| SoftReset | Zachte reset opgedragen | Alleen bij bewust ingrijpen |
| UnlockCommand | Connector op afstand ontgrendeld | Alleen bij bewust ingrijpen |
| Other | Overige reden | Fabrikantafhankelijk |
Protocolfouten (CALLERROR)
Protocolfouten gaan niet over de laadpaal maar over het bericht. Ze verschijnen als een CALLERROR-bericht (type 4) en betekenen dat de ontvanger het verzoek niet kón verwerken, los van of er stroom loopt.
| Code | Betekenis | Wie moet het oplossen |
|---|---|---|
| NotImplemented | Bericht is niet geïmplementeerd | Ontvangende kant; vaak een optioneel profiel dat ontbreekt |
| NotSupported | Bericht bestaat wel maar wordt niet ondersteund | Ontvangende kant |
| InternalError | Interne fout bij de ontvanger | Ontvangende kant; check serverlogs |
| ProtocolError | Verplichte velden ontbreken | Verzendende kant |
| SecurityError | Onvoldoende rechten voor deze actie | Configuratie van authenticatie |
| FormationViolation | JSON is syntactisch onjuist (1.6) | Verzendende kant |
| FormatViolation | Zelfde als hierboven, hernoemd in 2.0.1 | Verzendende kant |
| PropertyConstraintViolation | Waarde valt buiten toegestaan bereik | Verzendende kant |
| OccurenceConstraintViolation | Veld komt te vaak of te weinig voor | Verzendende kant |
| TypeConstraintViolation | Datatype klopt niet | Verzendende kant |
| GenericError | Overige protocolfout | Beide kanten; logs vergelijken |
Systematisch een storing terugbrengen tot de oorzaak
Begin altijd bij de vraag welk soort code je ziet, niet bij de code zelf. Die volgorde scheelt de meeste tijd, omdat elk type code een ander onderzoeksspoor opent.
- 1Zie je een RPC-fout? Dan is er iets mis met het berichtenverkeer of de configuratie, niet met de hardware.
- 2Zie je Faulted met een foutcode? Dan is het hardware of elektra — gebruik de tabel met foutcodes.
- 3Zie je Preparing dat niet doorloopt? Dan is het autorisatie — kijk naar de idTagInfo-status.
- 4Zie je helemaal niets meer binnenkomen? Dan is het de verbinding — controleer heartbeat-interval en signaalsterkte.
- 5Blijft de oorzaak onduidelijk? Zet het loggen van ruwe OCPP-berichten aan en vergelijk paal en server naast elkaar.
Die laatste stap is de reden dat we bij elke implementatie ruwe berichtlogging inbouwen. Zonder de daadwerkelijke JSON aan beide kanten blijft elke diagnose een vermoeden.
Veelgestelde vragen
Wat betekent OCPP-status Faulted?
Faulted betekent dat de laadpaal een storing heeft gedetecteerd en niet kan laden. De bijbehorende ChargePointErrorCode geeft aan wat er precies mis is — van GroundFailure (aardfout) tot ReaderFailure (paslezer defect).
Waarom blijft mijn laadpaal in Preparing hangen?
Preparing dat niet doorloopt naar Charging is vrijwel altijd een autorisatieprobleem. Het Authorize-bericht is niet beantwoord of het antwoord was Invalid, Blocked, Expired of ConcurrentTx. Controleer eerst de verbinding met het CSMS en daarna de status van de pas.
Wat is het verschil tussen SuspendedEV en SuspendedEVSE?
SuspendedEV betekent dat de auto het laden pauzeert, meestal omdat de accu vol is. SuspendedEVSE betekent dat de laadpaal pauzeert, bijvoorbeeld door load balancing of een tariefvenster. Geen van beide is een storing.
Wat betekent ConcurrentTx?
ConcurrentTx betekent dat het CSMS denkt dat deze pas al een openstaande laadsessie heeft. In de praktijk is dat bijna altijd een sessie die door een verbindingsstoring nooit correct is afgesloten en die handmatig gesloten moet worden.
Hoeveel connectorstatussen kent OCPP 2.0.1?
OCPP 2.0.1 kent vijf connectorstatussen: Available, Occupied, Reserved, Unavailable en Faulted. Dat zijn er vier minder dan in 1.6, omdat de details van het laadproces in 2.0.1 uit de transactiegebeurtenissen komen.
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 →