Naar de inhoud

De naslag van het OCPP 1.6J-protocol.

Wat een lader en zijn backoffice tegen elkaar zeggen: alle 28 berichten met hun velden en een voorbeeld, de 43 configuratiesleutels, wat een lader kan meten en wat er in de praktijk misgaat.

BerichtenConfiguratiesleutelsMeasurandsVragen

Wat is OCPP 1.6J?

OCPP, het Open Charge Point Protocol, is een gratis en open standaard van de Open Charge Alliance. Het legt vast hoe een lader praat met de software die hem beheert: het Central System in de specificatie, de backoffice in de praktijk.

In versie 1.6J opent de lader een WebSocket naar de backoffice, en beide kanten sturen er JSON-berichten over. De lader meldt zijn status, zijn meterwaarden en zijn sessies. De backoffice start en stopt sessies, wijzigt instellingen en stelt laadlimieten in.

Omdat de standaard open is, kan een lader die hem spreekt ook verbinden met andere backoffices die hem spreken, afhankelijk van model, firmware en configuratie. Daardoor kun je merken mengen op één locatie en een lader naar een andere backoffice verhuizen. Wil je één lader tegelijk op meerdere backoffices laten draaien, gebruik dan de OCPP-proxy.

  • Een open standaardVrij te implementeren, beheerd door de Open Charge Alliance.
  • WebSocket en JSONEén verbinding die open blijft, met gestructureerde berichten.
  • 28 berichtenIn zes functieprofielen, van Core tot Remote Trigger.
  • Beide richtingenDe lader en de backoffice starten elk hun eigen berichten.

Alle 28 OCPP 1.6-berichten

Elk bericht is een verzoek van de ene kant en een antwoord van de andere, gekoppeld via een uniek bericht-ID.

Core

Verplicht. De basis van een lader: autorisatie, transacties, statusmeldingen, configuratie en eenvoudige bediening op afstand.

Vraagt autorisatie aan voor een idTag voordat het laden mag beginnen.

Verzoek
VeldTypeGebruikWat erin staat
idTagstringVerplichtDe identifier die geautoriseerd moet worden. Maximaal 20 tekens.
Antwoord
VeldTypeGebruikWat erin staat
idTagInfoobjectVerplichtAutorisatiegegevens voor de idTag.
statusstringVerplichtAutorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptioneelDatum en tijd waarna de idTag als verlopen geldt. Een datum en tijd.
parentIdTagstringOptioneelBovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens.
Voorbeeld
De lader stuurt
[2, "7f83df9c", "Authorize", {
  "idTag": "04A2B3C4D5E6F7"
}]
De backoffice antwoordt
[3, "7f83df9c", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

In OCPP 2.0.1: Authorize

Na het opstarten verstuurd om de lader bij de backoffice aan te melden.

Verzoek
VeldTypeGebruikWat erin staat
chargePointVendorstringVerplichtFabrikant van de lader. Maximaal 20 tekens.
chargePointModelstringVerplichtModel van de lader. Maximaal 20 tekens.
chargePointSerialNumberstringOptioneelSerienummer van de lader. Maximaal 25 tekens.
chargeBoxSerialNumberstringOptioneelSerienummer van de charge box. Maximaal 25 tekens.
firmwareVersionstringOptioneelFirmwareversie van de lader. Maximaal 50 tekens.
iccidstringOptioneelICCID van de simkaart. Maximaal 20 tekens.
imsistringOptioneelIMSI van de simkaart. Maximaal 20 tekens.
meterTypestringOptioneelType van de energiemeter. Maximaal 25 tekens.
meterSerialNumberstringOptioneelSerienummer van de energiemeter. Maximaal 25 tekens.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtRegistratiestatus. Eén van Accepted, Pending, Rejected.
currentTimestringVerplichtHuidige tijd van het Central System. Een datum en tijd.
intervalintegerVerplichtHeartbeat-interval in seconden.
Voorbeeld
De lader stuurt
[2, "392b5b40", "BootNotification", {
  "chargePointVendor": "ExampleVendor",
  "chargePointModel": "ExampleModel",
  "firmwareVersion": "1.4.2"
}]
De backoffice antwoordt
[3, "392b5b40", {
  "status": "Accepted",
  "currentTime": "2026-10-06T09:30:00Z",
  "interval": 300
}]

In OCPP 2.0.1: BootNotification

Wijzigt de beschikbaarheid van een connector.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtID van de connector (0 = de hele lader).
typestringVerplichtGevraagde wijziging van de beschikbaarheid. Eén van Inoperative, Operative.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van het verzoek om de beschikbaarheid te wijzigen. Eén van Accepted, Rejected, Scheduled.
Voorbeeld
De backoffice stuurt
[2, "be3dcf2e", "ChangeAvailability", {
  "connectorId": 1,
  "type": "Operative"
}]
De lader antwoordt
[3, "be3dcf2e", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ChangeAvailability

Wijzigt een configuratiesleutel op de lader.

Verzoek
VeldTypeGebruikWat erin staat
keystringVerplichtConfiguratiesleutel die gewijzigd moet worden. Maximaal 50 tekens.
valuestringVerplichtNieuwe waarde voor de configuratiesleutel. Maximaal 500 tekens.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van de configuratiewijziging. Eén van Accepted, Rejected, RebootRequired, NotSupported.
Voorbeeld
De backoffice stuurt
[2, "6fdf2255", "ChangeConfiguration", {
  "key": "MeterValueSampleInterval",
  "value": "60"
}]
De lader antwoordt
[3, "6fdf2255", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SetVariables

Wist de autorisatiecache op de lader.

Verzoek

Geen velden: het verzoek is leeg.

Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van het verzoek om de cache te wissen. Eén van Accepted, Rejected.
Voorbeeld
De backoffice stuurt
[2, "e993e844", "ClearCache", {}]
De lader antwoordt
[3, "e993e844", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ClearCache

Fabrikantspecifieke gegevensuitwisseling.

Verzoek
VeldTypeGebruikWat erin staat
vendorIdstringVerplichtIdentificeert de fabrikant. Maximaal 255 tekens.
messageIdstringOptioneelAanvullende identificatie van het bericht. Maximaal 50 tekens.
datastringOptioneelFabrikantspecifieke gegevens.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van de gegevensoverdracht. Eén van Accepted, Rejected, UnknownMessageId, UnknownVendorId.
datastringOptioneelFabrikantspecifieke antwoordgegevens.
Voorbeeld
De ene kant stuurt
[2, "e1a403d5", "DataTransfer", {
  "vendorId": "com.example"
}]
De andere kant antwoordt
[3, "e1a403d5", {
  "status": "Accepted"
}]

In OCPP 2.0.1: DataTransfer

Haalt configuratiesleutels op van de lader.

Verzoek
VeldTypeGebruikWat erin staat
keyarrayOptioneelLijst met configuratiesleutels die opgehaald moeten worden. Per item maximaal 50 tekens.
Antwoord
VeldTypeGebruikWat erin staat
configurationKeyarrayOptioneelLijst met bekende configuratiesleutels.
keystringVerplichtNaam van de configuratiesleutel. Maximaal 50 tekens.
readonlybooleanVerplichtOf de sleutel alleen-lezen is.
valuestringOptioneelHuidige waarde van de sleutel. Maximaal 500 tekens.
unknownKeyarrayOptioneelLijst met gevraagde sleutels die onbekend zijn. Per item maximaal 50 tekens.
Voorbeeld
De backoffice stuurt
[2, "02bd00f5", "GetConfiguration", {
  "key": [
    "MeterValueSampleInterval"
  ]
}]
De lader antwoordt
[3, "02bd00f5", {
  "configurationKey": [
    {
      "key": "MeterValueSampleInterval",
      "readonly": false,
      "value": "60"
    }
  ]
}]

In OCPP 2.0.1: GetBaseReport en GetVariables

Periodiek levensteken waarmee de backoffice weet dat de lader online is.

Verzoek

Geen velden: het verzoek is leeg.

Antwoord
VeldTypeGebruikWat erin staat
currentTimestringVerplichtHuidige tijd van het Central System. Een datum en tijd.
Voorbeeld
De lader stuurt
[2, "83622997", "Heartbeat", {}]
De backoffice antwoordt
[3, "83622997", {
  "currentTime": "2026-10-06T09:30:00Z"
}]

In OCPP 2.0.1: Heartbeat

Stuurt periodieke of opgevraagde meterstanden.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtID van de connector (0 = hoofdmeter).
meterValuearrayVerplichtEen of meer meterwaarden met tijdstempel.
timestampstringVerplichtTijdstempel van de meterwaarde. Een datum en tijd.
sampledValuearrayVerplichtEen of meer gemeten waarden.
valuestringVerplichtDe gemeten waarde.
contextstringOptioneelContext van de meting. Eén van Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOptioneelFormaat van de waarde. Eén van Raw, SignedData.
measurandstringOptioneelSoort meting. Eén van 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.
phasestringOptioneelFase waarop de meting betrekking heeft. Eén van L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1.
locationstringOptioneelPlaats van de meting. Eén van Cable, EV, Inlet, Outlet, Body.
unitstringOptioneelEenheid van de meting. Eén van Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
transactionIdintegerOptioneelTransactie waar deze meterwaarden bij horen.
Antwoord

Geen velden: het antwoord is leeg.

Voorbeeld
De lader stuurt
[2, "80a15023", "MeterValues", {
  "connectorId": 1,
  "meterValue": [
    {
      "timestamp": "2026-10-06T09:30:00Z",
      "sampledValue": [
        {
          "value": "19840",
          "measurand": "Energy.Active.Import.Register",
          "unit": "Wh"
        }
      ]
    }
  ],
  "transactionId": 4521
}]
De backoffice antwoordt
[3, "80a15023", {}]

In OCPP 2.0.1: MeterValues

Start een laadsessie op afstand.

Verzoek
VeldTypeGebruikWat erin staat
idTagstringVerplichtDe identifier voor deze sessie. Maximaal 20 tekens.
connectorIdintegerOptioneelConnector waarop de sessie start.
chargingProfileobjectOptioneelLaadprofiel dat voor deze sessie geldt.
chargingProfileIdintegerVerplichtUnieke identifier van dit laadprofiel.
stackLevelintegerVerplichtPrioriteitsniveau van het profiel (hoger = meer voorrang).
chargingProfilePurposestringVerplichtDoel van het laadprofiel. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringVerplichtSoort schema. Eén van Absolute, Recurring, Relative.
chargingScheduleobjectVerplichtHet laadschema.
chargingRateUnitstringVerplichtEenheid van het laadvermogen (ampère of watt). Eén van A, W.
chargingSchedulePeriodarrayVerplichtLijst met periodes in het schema.
startPeriodintegerVerplichtBegin van de periode, in seconden vanaf het begin van het schema.
limitnumberVerplichtVermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1.
numberPhasesintegerOptioneelAantal fasen waarmee geladen wordt.
durationintegerOptioneelDuur van het schema in seconden.
startSchedulestringOptioneelBegindatum en -tijd van het schema. Een datum en tijd.
minChargingRatenumberOptioneelLaagste laadvermogen dat ondersteund wordt. In stappen van 0,1.
transactionIdintegerOptioneelTransactie waarvoor dit profiel geldt.
recurrencyKindstringOptioneelHerhaling voor terugkerende profielen. Eén van Daily, Weekly.
validFromstringOptioneelDatum en tijd vanaf wanneer het profiel geldt. Een datum en tijd.
validTostringOptioneelDatum en tijd waarna het profiel niet meer geldt. Een datum en tijd.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de lader het verzoek heeft geaccepteerd. Eén van Accepted, Rejected.
Voorbeeld
De backoffice stuurt
[2, "b7e2ef8a", "RemoteStartTransaction", {
  "idTag": "04A2B3C4D5E6F7",
  "connectorId": 1
}]
De lader antwoordt
[3, "b7e2ef8a", {
  "status": "Accepted"
}]

In OCPP 2.0.1: RequestStartTransaction

Stopt een laadsessie op afstand.

Verzoek
VeldTypeGebruikWat erin staat
transactionIdintegerVerplichtID van de transactie die gestopt moet worden.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de lader het verzoek heeft geaccepteerd. Eén van Accepted, Rejected.
Voorbeeld
De backoffice stuurt
[2, "7fb0afb2", "RemoteStopTransaction", {
  "transactionId": 4521
}]
De lader antwoordt
[3, "7fb0afb2", {
  "status": "Accepted"
}]

In OCPP 2.0.1: RequestStopTransaction

Herstart de lader (hard of soft).

Verzoek
VeldTypeGebruikWat erin staat
typestringVerplichtSoort herstart. Eén van Hard, Soft.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de lader de herstart heeft geaccepteerd. Eén van Accepted, Rejected.
Voorbeeld
De backoffice stuurt
[2, "526d688f", "Reset", {
  "type": "Soft"
}]
De lader antwoordt
[3, "526d688f", {
  "status": "Accepted"
}]

In OCPP 2.0.1: Reset

Meldt de backoffice dat een laadsessie is gestart.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector waarop de transactie is gestart.
idTagstringVerplichtIdentifier waarmee de transactie is gestart. Maximaal 20 tekens.
meterStartintegerVerplichtMeterstand bij het begin van de transactie (Wh).
timestampstringVerplichtTijdstempel van het begin van de transactie. Een datum en tijd.
reservationIdintegerOptioneelID van de reservering die is gebruikt.
Antwoord
VeldTypeGebruikWat erin staat
idTagInfoobjectVerplichtAutorisatiegegevens voor de idTag.
statusstringVerplichtAutorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptioneelDatum en tijd waarna de idTag als verlopen geldt. Een datum en tijd.
parentIdTagstringOptioneelBovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens.
transactionIdintegerVerplichtTransactie-ID, toegekend door het Central System.
Voorbeeld
De lader stuurt
[2, "2410a6a5", "StartTransaction", {
  "connectorId": 1,
  "idTag": "04A2B3C4D5E6F7",
  "meterStart": 12500,
  "timestamp": "2026-10-06T09:30:00Z"
}]
De backoffice antwoordt
[3, "2410a6a5", {
  "idTagInfo": {
    "status": "Accepted"
  },
  "transactionId": 4521
}]

In OCPP 2.0.1: TransactionEvent

Meldt de huidige status en eventuele fouten van een connector.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector waarvan de status gemeld wordt.
errorCodestringVerplichtFoutcode (NoError als er geen fout is). Eén van ConnectorLockFailure, EVCommunicationError, GroundFailure, HighTemperature, InternalError, LocalListConflict, NoError, OtherError, OverCurrentFailure, PowerMeterFailure, PowerSwitchFailure, ReaderFailure, ResetFailure, UnderVoltage, OverVoltage, WeakSignal.
statusstringVerplichtHuidige status van de connector. Eén van Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted.
infostringOptioneelAanvullende vrije tekst over de status. Maximaal 50 tekens.
timestampstringOptioneelTijdstempel van de statuswijziging. Een datum en tijd.
vendorIdstringOptioneelFabrikantspecifieke identifier. Maximaal 255 tekens.
vendorErrorCodestringOptioneelFabrikantspecifieke foutcode. Maximaal 50 tekens.
Antwoord

Geen velden: het antwoord is leeg.

Voorbeeld
De lader stuurt
[2, "d9b0420e", "StatusNotification", {
  "connectorId": 1,
  "errorCode": "NoError",
  "status": "Available"
}]
De backoffice antwoordt
[3, "d9b0420e", {}]

In OCPP 2.0.1: StatusNotification

Meldt de backoffice dat een laadsessie is gestopt.

Verzoek
VeldTypeGebruikWat erin staat
transactionIdintegerVerplichtID van de transactie die stopt.
timestampstringVerplichtTijdstempel van het einde van de transactie. Een datum en tijd.
meterStopintegerVerplichtMeterstand aan het einde van de transactie (Wh).
idTagstringOptioneelIdentifier die om de stop vroeg. Maximaal 20 tekens.
reasonstringOptioneelReden waarom de transactie stopt. Eén van EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized.
transactionDataarrayOptioneelLijst met MeterValue-objecten (zelfde opbouw als MeterValues.meterValue).
timestampstringVerplichtTijdstempel van de meterwaarde. Een datum en tijd.
sampledValuearrayVerplichtEen of meer gemeten waarden.
valuestringVerplichtDe gemeten waarde.
contextstringOptioneelContext van de meting. Eén van Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOptioneelFormaat van de waarde. Eén van Raw, SignedData.
measurandstringOptioneelSoort meting. Eén van 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.
phasestringOptioneelFase waarop de meting betrekking heeft. Eén van L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1.
locationstringOptioneelPlaats van de meting. Eén van Cable, EV, Inlet, Outlet, Body.
unitstringOptioneelEenheid van de meting. Eén van Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
Antwoord
VeldTypeGebruikWat erin staat
idTagInfoobjectOptioneelAutorisatiegegevens voor de idTag.
statusstringVerplichtAutorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptioneelDatum en tijd waarna de idTag als verlopen geldt. Een datum en tijd.
parentIdTagstringOptioneelBovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens.
Voorbeeld
De lader stuurt
[2, "b380dc07", "StopTransaction", {
  "transactionId": 4521,
  "timestamp": "2026-10-06T09:30:00Z",
  "meterStop": 19840,
  "idTag": "04A2B3C4D5E6F7"
}]
De backoffice antwoordt
[3, "b380dc07", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

In OCPP 2.0.1: TransactionEvent

Ontgrendelt een connector op afstand.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector die ontgrendeld moet worden.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van het verzoek om te ontgrendelen. Eén van Unlocked, UnlockFailed, NotSupported.
Voorbeeld
De backoffice stuurt
[2, "882ccab0", "UnlockConnector", {
  "connectorId": 1
}]
De lader antwoordt
[3, "882ccab0", {
  "status": "Unlocked"
}]

In OCPP 2.0.1: UnlockConnector

Firmwarebeheer

Firmware-updates en het uploaden van diagnostiek, voor onderhoud op afstand van laders.

Vraagt de lader om diagnoselogs te uploaden.

Verzoek
VeldTypeGebruikWat erin staat
locationstringVerplichtURI waar de diagnostiek naartoe geüpload moet worden. Een adres (URI).
retriesintegerOptioneelAantal nieuwe pogingen voor het uploaden.
retryIntervalintegerOptioneelSeconden tussen twee pogingen.
startTimestringOptioneelBegin van de periode waarover logs verzameld worden. Een datum en tijd.
stopTimestringOptioneelEinde van de periode waarover logs verzameld worden. Een datum en tijd.
Antwoord
VeldTypeGebruikWat erin staat
fileNamestringOptioneelNaam van het diagnostiekbestand. Maximaal 255 tekens.
Voorbeeld
De backoffice stuurt
[2, "da7920cd", "GetDiagnostics", {
  "location": "ftp://files.example.com/diagnostics/"
}]
De lader antwoordt
[3, "da7920cd", {}]

In OCPP 2.0.1: GetLog

Meldt de status van een diagnostiekupload.

Verzoek
VeldTypeGebruikWat erin staat
statusstringVerplichtHuidige status van de diagnostiekupload. Eén van Idle, Uploaded, UploadFailed, Uploading.
Antwoord

Geen velden: het antwoord is leeg.

Voorbeeld
De lader stuurt
[2, "d1c853b4", "DiagnosticsStatusNotification", {
  "status": "Uploaded"
}]
De backoffice antwoordt
[3, "d1c853b4", {}]

In OCPP 2.0.1: LogStatusNotification

Meldt de status van een firmware-update.

Verzoek
VeldTypeGebruikWat erin staat
statusstringVerplichtHuidige status van de firmware-update. Eén van Downloaded, DownloadFailed, Downloading, Idle, InstallationFailed, Installing, Installed.
Antwoord

Geen velden: het antwoord is leeg.

Voorbeeld
De lader stuurt
[2, "dc9afcb2", "FirmwareStatusNotification", {
  "status": "Installed"
}]
De backoffice antwoordt
[3, "dc9afcb2", {}]

In OCPP 2.0.1: FirmwareStatusNotification

Geeft de lader opdracht nieuwe firmware te downloaden en te installeren.

Verzoek
VeldTypeGebruikWat erin staat
locationstringVerplichtURI waar de firmware gedownload kan worden. Een adres (URI).
retrieveDatestringVerplichtDatum en tijd waarna de lader de firmware moet ophalen. Een datum en tijd.
retriesintegerOptioneelAantal nieuwe pogingen voor het downloaden.
retryIntervalintegerOptioneelSeconden tussen twee pogingen.
Antwoord

Geen velden: het antwoord is leeg.

Voorbeeld
De backoffice stuurt
[2, "a57cc6a2", "UpdateFirmware", {
  "location": "ftp://files.example.com/fw-1.4.3.bin",
  "retrieveDate": "2026-10-07T02:00:00Z"
}]
De lader antwoordt
[3, "a57cc6a2", {}]

In OCPP 2.0.1: UpdateFirmware

Lokale autorisatielijst

Beheer een lokale autorisatielijst op de lader, voor authenticatie terwijl hij offline is.

Haalt het versienummer van de lokale autorisatielijst op.

Verzoek

Geen velden: het verzoek is leeg.

Antwoord
VeldTypeGebruikWat erin staat
listVersionintegerVerplichtHuidig versienummer van de lokale autorisatielijst.
Voorbeeld
De backoffice stuurt
[2, "ccf23a29", "GetLocalListVersion", {}]
De lader antwoordt
[3, "ccf23a29", {
  "listVersion": 1
}]

In OCPP 2.0.1: GetLocalListVersion

Stuurt een volledige of gedeeltelijke update van de lokale autorisatielijst.

Verzoek
VeldTypeGebruikWat erin staat
listVersionintegerVerplichtVersienummer van deze lijstupdate.
updateTypestringVerplichtOf dit een volledige vervanging is of een update met alleen de verschillen. Eén van Differential, Full.
localAuthorizationListarrayOptioneelLijst met autorisatie-items.
idTagstringVerplichtDe identifier die geautoriseerd moet worden. Maximaal 20 tekens.
idTagInfoobjectOptioneelAutorisatiegegevens voor de idTag.
statusstringVerplichtAutorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOptioneelDatum en tijd waarna de idTag als verlopen geldt. Een datum en tijd.
parentIdTagstringOptioneelBovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van de update van de lokale lijst. Eén van Accepted, Failed, NotSupported, VersionMismatch.
Voorbeeld
De backoffice stuurt
[2, "a23c9563", "SendLocalList", {
  "listVersion": 1,
  "updateType": "Full",
  "localAuthorizationList": [
    {
      "idTag": "04A2B3C4D5E6F7",
      "idTagInfo": {
        "status": "Accepted"
      }
    }
  ]
}]
De lader antwoordt
[3, "a23c9563", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SendLocalList

Reservering

Reserveer vooraf een connector voor een bepaalde gebruiker.

Annuleert een bestaande reservering.

Verzoek
VeldTypeGebruikWat erin staat
reservationIdintegerVerplichtID van de reservering die geannuleerd moet worden.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de reservering is geannuleerd. Eén van Accepted, Rejected.
Voorbeeld
De backoffice stuurt
[2, "63258356", "CancelReservation", {
  "reservationId": 7
}]
De lader antwoordt
[3, "63258356", {
  "status": "Accepted"
}]

In OCPP 2.0.1: CancelReservation

Maakt een reservering op een bepaalde connector.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector die gereserveerd wordt (0 = geen bepaalde connector).
expiryDatestringVerplichtDatum en tijd waarop de reservering verloopt. Een datum en tijd.
idTagstringVerplichtIdentifier waarvoor de reservering wordt gemaakt. Maximaal 20 tekens.
reservationIdintegerVerplichtUniek ID van deze reservering.
parentIdTagstringOptioneelBovenliggende idTag voor een groepsreservering. Maximaal 20 tekens.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtResultaat van het reserveringsverzoek. Eén van Accepted, Faulted, Occupied, Rejected, Unavailable.
Voorbeeld
De backoffice stuurt
[2, "62a25d78", "ReserveNow", {
  "connectorId": 1,
  "expiryDate": "2026-10-06T10:00:00Z",
  "idTag": "04A2B3C4D5E6F7",
  "reservationId": 7
}]
De lader antwoordt
[3, "62a25d78", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ReserveNow

Slim laden

Stel laadprofielen in en beheer ze, voor stroombegrenzing, laden op zon en gepland laden.

Verwijdert een of meer laadprofielen van de lader.

Verzoek
VeldTypeGebruikWat erin staat
idintegerOptioneelID van het laadprofiel dat gewist moet worden.
connectorIdintegerOptioneelConnector waarvoor profielen gewist worden.
chargingProfilePurposestringOptioneelDoel van de profielen die gewist worden. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile.
stackLevelintegerOptioneelStackniveau van de profielen die gewist worden.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf er profielen zijn gewist. Eén van Accepted, Unknown.
Voorbeeld
De backoffice stuurt
[2, "2c436739", "ClearChargingProfile", {}]
De lader antwoordt
[3, "2c436739", {
  "status": "Accepted"
}]

In OCPP 2.0.1: ClearChargingProfile

Vraagt het samengestelde laadschema van een connector op.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector waarvoor het schema opgevraagd wordt.
durationintegerVerplichtDuur in seconden van het gevraagde schema.
chargingRateUnitstringOptioneelGewenste eenheid voor het schema. Eén van A, W.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de lader het schema kan leveren. Eén van Accepted, Rejected.
connectorIdintegerOptioneelConnector waarvoor het schema geldt.
scheduleStartstringOptioneelBegindatum en -tijd van het samengestelde schema. Een datum en tijd.
chargingScheduleobjectOptioneelHet samengestelde laadschema.
chargingRateUnitstringVerplichtEenheid van het laadvermogen (ampère of watt). Eén van A, W.
chargingSchedulePeriodarrayVerplichtLijst met periodes in het schema.
startPeriodintegerVerplichtBegin van de periode, in seconden vanaf het begin van het schema.
limitnumberVerplichtVermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1.
numberPhasesintegerOptioneelAantal fasen waarmee geladen wordt.
durationintegerOptioneelDuur van het schema in seconden.
startSchedulestringOptioneelBegindatum en -tijd van het schema. Een datum en tijd.
minChargingRatenumberOptioneelLaagste laadvermogen dat ondersteund wordt. In stappen van 0,1.
Voorbeeld
De backoffice stuurt
[2, "50bc203f", "GetCompositeSchedule", {
  "connectorId": 1,
  "duration": 3600
}]
De lader antwoordt
[3, "50bc203f", {
  "status": "Accepted"
}]

In OCPP 2.0.1: GetCompositeSchedule

Stuurt een laadprofiel naar de lader.

Verzoek
VeldTypeGebruikWat erin staat
connectorIdintegerVerplichtConnector waarvoor het profiel geldt.
csChargingProfilesobjectVerplichtHet laadprofiel dat geïnstalleerd wordt.
chargingProfileIdintegerVerplichtUnieke identifier van dit laadprofiel.
stackLevelintegerVerplichtPrioriteitsniveau van het profiel (hoger = meer voorrang).
chargingProfilePurposestringVerplichtDoel van het laadprofiel. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringVerplichtSoort schema. Eén van Absolute, Recurring, Relative.
chargingScheduleobjectVerplichtHet laadschema.
chargingRateUnitstringVerplichtEenheid van het laadvermogen (ampère of watt). Eén van A, W.
chargingSchedulePeriodarrayVerplichtLijst met periodes in het schema.
startPeriodintegerVerplichtBegin van de periode, in seconden vanaf het begin van het schema.
limitnumberVerplichtVermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1.
numberPhasesintegerOptioneelAantal fasen waarmee geladen wordt.
durationintegerOptioneelDuur van het schema in seconden.
startSchedulestringOptioneelBegindatum en -tijd van het schema. Een datum en tijd.
minChargingRatenumberOptioneelLaagste laadvermogen dat ondersteund wordt. In stappen van 0,1.
transactionIdintegerOptioneelTransactie waarvoor dit profiel geldt.
recurrencyKindstringOptioneelHerhaling voor terugkerende profielen. Eén van Daily, Weekly.
validFromstringOptioneelDatum en tijd vanaf wanneer het profiel geldt. Een datum en tijd.
validTostringOptioneelDatum en tijd waarna het profiel niet meer geldt. Een datum en tijd.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf het profiel is geaccepteerd. Eén van Accepted, Rejected, NotSupported.
Voorbeeld
De backoffice stuurt
[2, "01be9b20", "SetChargingProfile", {
  "connectorId": 1,
  "csChargingProfiles": {
    "chargingProfileId": 10,
    "stackLevel": 0,
    "chargingProfilePurpose": "TxDefaultProfile",
    "chargingProfileKind": "Relative",
    "chargingSchedule": {
      "chargingRateUnit": "A",
      "chargingSchedulePeriod": [
        {
          "startPeriod": 0,
          "limit": 16.0
        }
      ]
    }
  }
}]
De lader antwoordt
[3, "01be9b20", {
  "status": "Accepted"
}]

In OCPP 2.0.1: SetChargingProfile

Trigger op afstand

Vraag de lader om op verzoek een bepaald bericht te sturen.

Vraagt de lader om meteen een bepaald bericht te sturen.

Verzoek
VeldTypeGebruikWat erin staat
requestedMessagestringVerplichtHet bericht dat de lader moet sturen. Eén van BootNotification, DiagnosticsStatusNotification, FirmwareStatusNotification, Heartbeat, MeterValues, StatusNotification.
connectorIdintegerOptioneelConnector waarvoor het bericht gestuurd moet worden.
Antwoord
VeldTypeGebruikWat erin staat
statusstringVerplichtOf de lader het bericht gaat sturen. Eén van Accepted, Rejected, NotImplemented.
Voorbeeld
De backoffice stuurt
[2, "4c736efd", "TriggerMessage", {
  "requestedMessage": "StatusNotification"
}]
De lader antwoordt
[3, "4c736efd", {
  "status": "Accepted"
}]

In OCPP 2.0.1: TriggerMessage

OCPP 1.6-configuratiesleutels

ChangeConfiguration zet één sleutel per keer op een lader, en GetConfiguration leest ze terug. Hier wordt het meeste gedrag van een lader in de praktijk bepaald: hoe vaak meterwaarden binnenkomen, wat erin staat, of een sessie een netwerkstoring overleeft, hoe een kabel ontgrendelt.

Hoe de aanroep zich gedraagt

  • Elke waarde is tekstOok getallen en booleans: "60", "true". Een JSON-getal breekt het schema van het bericht, en een lader die het schema controleert antwoordt met een CallError.
  • Schrijf sleutelnamen zoals de specificatieVolgens de specificatie maken hoofdletters in sleutelnamen niet uit, maar niet elke lader volgt dat. Schrijf dus MeterValuesSampledData en niet metervaluessampleddata.
  • Sommige sleutels vragen een herstartDe lader antwoordt RebootRequired, en dan stuur je zelf een Reset.
  • Fabrikanten voegen eigen sleutels toeGetConfiguration met een lege sleutellijst geeft elke sleutel terug die een lader ondersteunt, ook die van de fabrikant zelf. Sleutels die je bij naam opvraagt en die hij niet kent, komen terug in unknownKey.

De vier antwoorden

Accepted
De sleutel is ingesteld en nu actief.
Rejected
De sleutel bestaat, maar de waarde is geweigerd: buiten bereik, verkeerd formaat of alleen-lezen op deze lader.
RebootRequired
De waarde is opgeslagen, maar geldt pas na een herstart van de lader.
NotSupported
De lader kent deze sleutel helemaal niet.

Alle 43 sleutels, per functieprofiel

SleutelTypeToegangWat het doet
Core34
AllowOfflineTxForUnknownIdOptioneel in de specificatiebooleanLezen en schrijvenOf de lader een transactie start voor een onbekende idTag terwijl hij offline is.Met true blijft een locatie laden tijdens een netwerkstoring, ten koste van sessies die je misschien bij niemand kunt factureren.
AuthorizationCacheEnabledOptioneel in de specificatiebooleanLezen en schrijvenOf de lader de uitkomst van eerdere Authorize-aanroepen bewaart.Iets anders dan de lokale autorisatielijst: de cache vult zichzelf met echte autorisaties, de lijst stuurt de backend.
AuthorizeRemoteTxRequestsbooleanLezenOf de lader de idTag in een RemoteStartTransaction autoriseert voordat hij start.Bij true heeft een start op afstand vanuit de app nog steeds een Authorize-rondje nodig, dus een verkeerde idTag laat de start mislukken.
BlinkRepeatOptioneel in de specificatieintegerLezen en schrijvenHoe vaak de lader de lamp laat knipperen tijdens een knipperreeks.
ClockAlignedDataIntervalintegerLezen en schrijvenInterval voor meterwaarden op vaste kloktijden, gerekend vanaf middernacht. 0 zet ze uit.900 geeft een meting op elk kwartier. Dit is de sleutel die MeterValuesAlignedData voedt, en hij loopt door, of er nu een auto is aangesloten of niet.
ConnectionTimeOutintegerLezen en schrijvenHoe lang de lader na de autorisatie wacht tot de bestuurder de stekker insteekt, voordat hij de connector weer vrijgeeft.
ConnectorPhaseRotationCSLLezen en schrijvenFasevolgorde per connector, in de notatie connectorId.RST, bijvoorbeeld 0.RST, 1.RST, 2.RTS.Een fout hier geeft verkeerde meterwaarden per fase en verkeerde stroombegrenzing bij eenfasig laden. Controleer het op elke driefasige locatie.
ConnectorPhaseRotationMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal items in ConnectorPhaseRotation.
GetConfigurationMaxKeysintegerLezenMaximaal aantal sleutels dat één GetConfiguration-verzoek mag opvragen.Vraag je er meer, dan kan de lader met een fout antwoorden. Stuur GetConfiguration zonder sleutels om alles te krijgen wat hij ondersteunt.
HeartbeatIntervalintegerLezen en schrijvenHoe vaak de lader een Heartbeat stuurt als er verder niets gebeurt.Het antwoord op BootNotification kan dit overschrijven. Op een simkaart met databundel is een korte heartbeat de stille datakost die oploopt.
LightIntensityOptioneel in de specificatieintegerLezen en schrijvenHelderheid van de verlichting van de lader, als percentage.
LocalAuthorizeOfflinebooleanLezen en schrijvenOf de lader offline autoriseert vanuit zijn lokale lijst of cache.
LocalPreAuthorizebooleanLezen en schrijvenOf de lader online een transactie start vanuit de lokale lijst of cache, zonder op de backend te wachten.Dat scheelt wachten bij de lader, maar de backend heeft dan niet bij elke start het laatste woord.
MaxEnergyOnInvalidIdOptioneel in de specificatieintegerLezen en schrijvenEnergie die de lader nog levert nadat een autorisatie ongeldig blijkt.
MeterValuesAlignedDataCSLLezen en schrijvenMeasurands die op vaste kloktijden in MeterValues worden verstuurd, op het ClockAlignedDataInterval.Dezelfde set measurands als MeterValuesSampledData, een andere trigger: de klok in plaats van de sessie.
MeterValuesAlignedDataMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal measurands in MeterValuesAlignedData.
MeterValuesSampledDataCSLLezen en schrijvenMeasurands die tijdens een transactie worden gemeten en in MeterValues verstuurd, op het MeterValueSampleInterval.De nuttigste sleutel op deze pagina. Zie de uitleg hieronder.
MeterValuesSampledDataMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal measurands in MeterValuesSampledData.Lees dit voordat je een lange lijst maakt: ga je erover, dan weigert de lader de hele lijst.
MeterValueSampleIntervalintegerLezen en schrijvenHoe vaak de lader tijdens een transactie MeterValuesSampledData meet. 0 zet het meten uit.60 is een verstandige standaard. Onder de 30, met een lange lijst measurands, maak je veel verkeer voor heel weinig extra inzicht.
MinimumStatusDurationOptioneel in de specificatieintegerLezen en schrijvenMinimale tijd dat de lader in een status blijft voordat hij de volgende meldt.Handig tegen statussen die heen en weer springen, bij laders die wisselen tussen Preparing en Available.
NumberOfConnectorsintegerLezenAantal fysieke connectors op deze lader.
ResetRetriesintegerLezen en schrijvenHoe vaak de lader een mislukte herstart opnieuw probeert.
StopTransactionOnEVSideDisconnectbooleanLezen en schrijvenOf loskoppelen aan de kant van de auto de lopende transactie stopt.Bij false blijft de sessie open nadat de kabel is uitgetrokken, en zo krijg je sessies die nooit eindigen.
StopTransactionOnInvalidIdbooleanLezen en schrijvenOf de lader de transactie stopt als de backend de idTag weigert.
StopTxnAlignedDataCSLLezen en schrijvenMeasurands op vaste kloktijden die worden toegevoegd aan de transactionData van StopTransaction.
StopTxnAlignedDataMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal measurands in StopTxnAlignedData.
StopTxnSampledDataCSLLezen en schrijvenGemeten measurands die worden toegevoegd aan de transactionData van StopTransaction.Houd deze kort. Alles erin wordt herhaald voor elke meting van de hele sessie, in één StopTransaction-payload, en zo maken laders stopberichten van megabytes die backends weigeren.
StopTxnSampledDataMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal measurands in StopTxnSampledData.
SupportedFeatureProfilesCSLLezenFunctieprofielen die deze lader implementeert, bijvoorbeeld Core, FirmwareManagement, SmartCharging.Het eerlijke antwoord op wat een lader kan. Lees het voordat je een klant slim laden belooft.
SupportedFeatureProfilesMaxLengthOptioneel in de specificatieintegerLezenMaximaal aantal items in SupportedFeatureProfiles.
TransactionMessageAttemptsintegerLezen en schrijvenHoe vaak de lader een transactiebericht opnieuw stuurt als de backend het niet heeft bevestigd.
TransactionMessageRetryIntervalintegerLezen en schrijvenBasiswachttijd tussen die pogingen. De lader vermenigvuldigt hem met het nummer van de poging.
UnlockConnectorOnEVSideDisconnectbooleanLezen en schrijvenOf de kabel aan de kant van de lader ontgrendelt als hij aan de kant van de auto wordt losgekoppeld.
WebSocketPingIntervalOptioneel in de specificatieintegerLezen en schrijvenInterval voor WebSocket-pingframes op de OCPP-J-verbinding.De stille oplossing voor laders die steeds offline vallen achter een NAT of firewall die inactieve verbindingen sluit.
Lokale autorisatielijst3
LocalAuthListEnabledbooleanLezen en schrijvenOf de lokale autorisatielijst in gebruik is.
LocalAuthListMaxLengthintegerLezenHoeveel items de lokale autorisatielijst kan bevatten.
SendLocalListMaxLengthintegerLezenHoeveel items er in één SendLocalList-bericht passen.Een grotere lijst moet je versturen in meerdere updates met alleen de verschillen.
Reservering1
ReserveConnectorZeroSupportedOptioneel in de specificatiebooleanLezenOf de lader een reservering op connector 0 accepteert, dus op welke connector dan ook.
Slim laden5
ChargeProfileMaxStackLevelintegerLezenHoogste stackniveau dat de lader accepteert op een laadprofiel. Een hoger niveau wint.
ChargingScheduleAllowedChargingRateUnitCSLLezenWelke eenheden de lader accepteert in een laadschema: Current (A), Power (W) of beide.Stuur je een profiel in watt naar een lader die alleen ampère accepteert, dan wordt het geweigerd. Deze sleutel vertelt je welke je gebruikt.
ChargingScheduleMaxPeriodsintegerLezenMaximaal aantal periodes in één laadschema.
ConnectorSwitch3to1PhaseSupportedOptioneel in de specificatiebooleanLezenOf de lader kan wisselen tussen driefasig en eenfasig laden.Bepaalt of je onder het driefasige minimum kunt terugregelen in plaats van helemaal te pauzeren.
MaxChargingProfilesInstalledintegerLezenHoeveel laadprofielen er tegelijk geïnstalleerd kunnen zijn.

MeterValuesSampledData: wat een lader meet

Eén sleutel, MeterValuesSampledData, bepaalt welke telemetrie je uit een laadsessie krijgt. Het is een lijst measurands, gescheiden door komma's, en de lader meet elk item erop met het interval uit MeterValueSampleInterval en stuurt ze daarna in een MeterValues-bericht. Laat je hem op de standaardwaarde staan, dan krijg je één cumulatieve energiestand, genoeg om te factureren, en verder niets: geen vermogenscurve, geen stroom per fase, geen spanning, geen manier om te zien of een limiet voor slim laden is aangekomen.

Hij werkt nooit alleen. MeterValueSampleInterval bepaalt hoe vaak de lader meet, MeterValuesSampledDataMaxLength begrenst hoeveel measurands je mag opgeven, StopTxnSampledData bepaalt welke daarvan herhaald worden in StopTransaction, en MeterValuesAlignedData is dezelfde set op een klokschema in plaats van per sessie.

De measurands

Elk hiervan mag in de lijst staan. Welke een lader ondersteunt, hangt af van zijn hardware: een AC-wallbox meldt meestal geen laadtoestand, en een eenvoudige lader heeft misschien alleen de energiestand.

MeasurandEenheidMeestal opWat het je geeft
Energy.Active.Import.RegisterWhAC en DCCumulatieve energie uit het net, direct van de meterstand afgelezen. De standaard als MeterValuesSampledData leeg is, en de waarde waarop bijna elke facturatie is gebouwd.
Energy.Active.Export.RegisterWhV2G-geschiktCumulatieve energie die is teruggeleverd, bij bidirectionele opstellingen.
Energy.Active.Import.IntervalWhAC en DCEnergie die sinds de vorige meting is afgenomen, in plaats van een lopend totaal.
Energy.Reactive.Import.RegistervarhAfhankelijk van de meterCumulatieve afgenomen blindenergie.
Power.Active.ImportWAC en DCMomentaan actief vermogen. Hiermee teken je een laadcurve, en hierop reageert het energiebeheer.
Power.OfferedWAC en DCVermogen dat de lader de auto nu aanbiedt. Vergelijk het met Power.Active.Import om te zien of een limiet echt wordt toegepast.
Power.Reactive.ImportvarAfhankelijk van de meterMomentaan blindvermogen.
Power.FactorverhoudingAfhankelijk van de meterVerhouding tussen actief en schijnbaar vermogen.
Current.ImportAAC en DCAfgenomen stroom. Meestal per fase gemeld, dus deze ene measurand kan drie waarden per meting worden.
Current.OfferedAAC en DCStroomlimiet die de lader aan de auto doorgeeft. Hier lees je direct af of je laadprofiel voor slim laden is aangekomen.
Current.ExportAV2G-geschiktTeruggeleverde stroom, bij bidirectionele opstellingen.
VoltageVAC en DCNetspanning, per fase op driefasige laders. Handig om een weggevallen fase of een slechte verbinding te vinden.
FrequencyHzAfhankelijk van de meterNetfrequentie. De specificatie geeft er geen unit-veld voor.
TemperatureCelsiusAfhankelijk van de laderTemperatuur bij de lader of connector. Verklaart terugregelen op een warme dag, voordat iemand het een storing noemt.
SoC%DC, of ISO 15118 op ACLaadtoestand van de accu van de auto. Alleen aanwezig als de auto hem echt meldt, en bij gewoon AC-laden doet hij dat meestal niet.
RPMrpmZeldenVentilatortoerental, bij laders die het melden.

Lijsten die werken

Kopieer er een naar de waarde van een ChangeConfiguration-aanroep. Begin klein en voeg measurands toe zodra de lader ze accepteert.

  • Alleen facturatie

    Het minimum dat nog een correcte factuur oplevert. De standaard op de meeste laders.

    Energy.Active.Import.Register
  • Standaardtelemetrie

    Verstandige basis voor een beheerde AC-locatie: een vermogenscurve, stroom per fase en spanning om storingen te zoeken.

    Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage
  • Slim laden

    Voegt de aangeboden waarden toe, zodat je ziet of een profiel echt wordt toegepast, in plaats van dat aan te nemen.

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

    Voegt laadtoestand en temperatuur toe, die DC-laders wel melden en die het meeste terugregelen verklaren.

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

Wat er misgaat

  • Eén verkeerde measurand laat de hele lijst weigeren

    Laders controleren de lijst als geheel. Wordt één item niet ondersteund, dan krijg je Rejected of NotSupported voor alles, zonder te horen welke het was. Zet de lijst measurand voor measurand om de boosdoener te vinden, of lees eerst MeterValuesSampledDataMaxLength en de documentatie van de fabrikant.

  • Eén measurand kan drie waarden zijn

    Current.Import en Voltage worden per fase gemeld, dus op een driefasige lader komen ze elk binnen als drie sampledValue-items, gemarkeerd L1, L2, L3 of L1-N enzovoort. Een lijst van zes measurands kan zo een dozijn waarden per meting zijn. De payload groeit sneller dan de lengte van de lijst doet vermoeden.

  • Wh tegenover kWh

    De energiestand is standaard in Wh, maar het unit-veld kan kWh zeggen, en sommige firmware doet dat. Lees de eenheid in plaats van hem aan te nemen, anders krijg je een factuur die er een factor duizend naast zit.

  • Een kort interval is niet gratis

    MeterValueSampleInterval op 10 seconden met een lange lijst betekent honderden berichten per sessie. Op een simkaart met databundel is dat echt geld, en op een grote locatie echte belasting voor de backend. 60 seconden is een goede standaard, 300 voor locaties waar je alleen de vorm van de curve nodig hebt.

  • StopTxnSampledData is de payloadval

    Alles wat daar staat wordt herhaald, voor elke meting van de hele sessie, in één StopTransaction-bericht. Een lange lijst bij een lange sessie levert een payload op die groot genoeg is om door backends geweigerd of afgekapt te worden, en dan wordt de transactie niet netjes afgesloten. Houd het bij de energiestand, tenzij je een concrete reden hebt.

  • Laat de energiestand weg en de facturatie breekt

    Staat Energy.Active.Import.Register niet in de lijst, dan bevatten de periodieke meterwaarden geen cumulatief totaal. De meeste backends vallen dan terug op meterStart en meterStop uit de transactieberichten, en elke sessie waarvan de StopTransaction ontbreekt, valt niet meer te factureren. Houd hem altijd in de lijst.

  • SoC is op AC meestal niet beschikbaar

    De laadtoestand komt van de auto, via ISO 15118 of het DC-laadprotocol. Op een gewone AC-wallbox zonder Plug and Charge meldt de auto hem niet, dus SoC opvragen wordt geweigerd of levert niets bruikbaars op.

  • Lees het context-veld

    Elke sampledValue heeft een context: Sample.Periodic, Transaction.Begin, Transaction.End, Sample.Clock of Trigger. Een waarde bij Transaction.Begin is een beginstand, geen verbruik. Behandel je elke meting als periodiek, dan tel je sessies dubbel.

Vragen over OCPP 1.6J

OCPP 1.6J is versie 1.6 van het Open Charge Point Protocol in de JSON-vorm. De lader opent een WebSocket naar zijn backoffice, en beide kanten sturen er JSON-berichten over. De Open Charge Alliance publiceerde versie 1.6 in 2015, en de meeste laders ondersteunen hem nog: in onze laderdatabase ondersteunen 483 van de 495 laders met een bekende OCPP-versie 1.6.

Ze dragen dezelfde berichten op een andere manier. 1.6J stuurt JSON over een WebSocket die de lader openhoudt, dus de lader heeft alleen een uitgaande verbinding nodig. 1.6S stuurt SOAP over HTTP, en dan moet de backoffice de lader ook zelf kunnen bereiken.

2.0.1 is een nieuwere versie met een eigen set berichten. Hij beschrijft de instellingen van een lader in een device model, heeft beveiligingsprofielen ingebouwd, vervangt StartTransaction en StopTransaction door TransactionEvent en voegt berichten toe voor Plug and Charge (ISO 15118). De twee zijn niet te mengen: een lader en zijn backoffice spreken één versie af als de verbinding opent. In onze laderdatabase vermelden 102 laders 2.0.1, naast of in plaats van 1.6. Elk bericht van 2.0.1 en 2.1 staat in de naslag van OCPP 2.0.1 en 2.1.

De Open Charge Alliance publiceert hem gratis op haar website, met een JSON-schema voor elk bericht. Deze naslag volgt die specificatie. Waar de twee verschillen, heeft de specificatie gelijk.

Via het functieprofiel Smart Charging. De backoffice stuurt SetChargingProfile met een schema van limieten in ampère of watt. Een ChargePointMaxProfile begrenst de hele lader, een TxDefaultProfile geldt voor elke nieuwe sessie en een TxProfile voor één lopende sessie. Overlappen twee profielen met hetzelfde doel, dan wint het profiel met het hoogste stackLevel. Hoe Plugchoice dit gebruikt, lees je op de pagina over slim laden.

Zoek hem op in de laderdatabase: 775 laders, met de OCPP-versies die we kennen en waar elke versie vandaan komt. De datasheet van de lader zegt het meestal ook, vaak als OCPP 1.6J of OCPP 1.6 JSON.

Vul in de instellingen van de lader, vaak in de installateursapp of op zijn lokale webpagina, de WebSocket-URL van de backoffice in (die begint met ws:// of wss://) en het ID van de lader, de charge point identity. De lader opent de verbinding en stuurt een BootNotification. Zodra de backoffice Accepted antwoordt, is de lader online en stuurt hij een StatusNotification voor elke connector.

Plugchoice en OCPP

  • Een gratis backofficeVerbind een OCPP 1.6J-lader en beheer hem in het webportaal.
  • De appEigenaars en installateurs bedienen dezelfde lader vanaf hun telefoon.
  • De OCPP-proxyEén lader tegelijk op meerdere backoffices.
  • BackofficesDe backoffices die je uit een lijst kiest als je een lader verbindt.

Verder lezen

  1. Wat is OCPP?

    Blog | 3 min leestijd

  2. Wat is een OCPP-backoffice?

    Blog | 2 min leestijd

Deze pagina voor AI-assistenten

De hele naslag, elk bericht en elke configuratiesleutel, als één platte-tekstbestand dat een assistent in één keer kan lezen.

De naslag als platte tekst

Draai je OCPP-laders op Plugchoice

Verbind je OCPP 1.6J-laders gratis met Plugchoice en beheer ze in het webportaal en de app, en via de API.