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.
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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| idTag | string | Verplicht | De identifier die geautoriseerd moet worden. Maximaal 20 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| idTagInfo | object | Verplicht | Autorisatiegegevens voor de idTag. |
| status | string | Verplicht | Autorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Optioneel | Datum en tijd waarna de idTag als verlopen geldt. Een datum en tijd. |
| parentIdTag | string | Optioneel | Bovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens. |
Voorbeeld
[2, "7f83df9c", "Authorize", {
"idTag": "04A2B3C4D5E6F7"
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| chargePointVendor | string | Verplicht | Fabrikant van de lader. Maximaal 20 tekens. |
| chargePointModel | string | Verplicht | Model van de lader. Maximaal 20 tekens. |
| chargePointSerialNumber | string | Optioneel | Serienummer van de lader. Maximaal 25 tekens. |
| chargeBoxSerialNumber | string | Optioneel | Serienummer van de charge box. Maximaal 25 tekens. |
| firmwareVersion | string | Optioneel | Firmwareversie van de lader. Maximaal 50 tekens. |
| iccid | string | Optioneel | ICCID van de simkaart. Maximaal 20 tekens. |
| imsi | string | Optioneel | IMSI van de simkaart. Maximaal 20 tekens. |
| meterType | string | Optioneel | Type van de energiemeter. Maximaal 25 tekens. |
| meterSerialNumber | string | Optioneel | Serienummer van de energiemeter. Maximaal 25 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Registratiestatus. Eén van Accepted, Pending, Rejected. |
| currentTime | string | Verplicht | Huidige tijd van het Central System. Een datum en tijd. |
| interval | integer | Verplicht | Heartbeat-interval in seconden. |
Voorbeeld
[2, "392b5b40", "BootNotification", {
"chargePointVendor": "ExampleVendor",
"chargePointModel": "ExampleModel",
"firmwareVersion": "1.4.2"
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | ID van de connector (0 = de hele lader). |
| type | string | Verplicht | Gevraagde wijziging van de beschikbaarheid. Eén van Inoperative, Operative. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van het verzoek om de beschikbaarheid te wijzigen. Eén van Accepted, Rejected, Scheduled. |
Voorbeeld
[2, "be3dcf2e", "ChangeAvailability", {
"connectorId": 1,
"type": "Operative"
}][3, "be3dcf2e", {
"status": "Accepted"
}]In OCPP 2.0.1: ChangeAvailability
Wijzigt een configuratiesleutel op de lader.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| key | string | Verplicht | Configuratiesleutel die gewijzigd moet worden. Maximaal 50 tekens. |
| value | string | Verplicht | Nieuwe waarde voor de configuratiesleutel. Maximaal 500 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van de configuratiewijziging. Eén van Accepted, Rejected, RebootRequired, NotSupported. |
Voorbeeld
[2, "6fdf2255", "ChangeConfiguration", {
"key": "MeterValueSampleInterval",
"value": "60"
}][3, "6fdf2255", {
"status": "Accepted"
}]In OCPP 2.0.1: SetVariables
Wist de autorisatiecache op de lader.
Verzoek
Geen velden: het verzoek is leeg.
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van het verzoek om de cache te wissen. Eén van Accepted, Rejected. |
Voorbeeld
[2, "e993e844", "ClearCache", {}][3, "e993e844", {
"status": "Accepted"
}]In OCPP 2.0.1: ClearCache
Fabrikantspecifieke gegevensuitwisseling.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| vendorId | string | Verplicht | Identificeert de fabrikant. Maximaal 255 tekens. |
| messageId | string | Optioneel | Aanvullende identificatie van het bericht. Maximaal 50 tekens. |
| data | string | Optioneel | Fabrikantspecifieke gegevens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van de gegevensoverdracht. Eén van Accepted, Rejected, UnknownMessageId, UnknownVendorId. |
| data | string | Optioneel | Fabrikantspecifieke antwoordgegevens. |
Voorbeeld
[2, "e1a403d5", "DataTransfer", {
"vendorId": "com.example"
}][3, "e1a403d5", {
"status": "Accepted"
}]In OCPP 2.0.1: DataTransfer
Haalt configuratiesleutels op van de lader.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| key | array | Optioneel | Lijst met configuratiesleutels die opgehaald moeten worden. Per item maximaal 50 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| configurationKey | array | Optioneel | Lijst met bekende configuratiesleutels. |
| key | string | Verplicht | Naam van de configuratiesleutel. Maximaal 50 tekens. |
| readonly | boolean | Verplicht | Of de sleutel alleen-lezen is. |
| value | string | Optioneel | Huidige waarde van de sleutel. Maximaal 500 tekens. |
| unknownKey | array | Optioneel | Lijst met gevraagde sleutels die onbekend zijn. Per item maximaal 50 tekens. |
Voorbeeld
[2, "02bd00f5", "GetConfiguration", {
"key": [
"MeterValueSampleInterval"
]
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| currentTime | string | Verplicht | Huidige tijd van het Central System. Een datum en tijd. |
Voorbeeld
[2, "83622997", "Heartbeat", {}][3, "83622997", {
"currentTime": "2026-10-06T09:30:00Z"
}]In OCPP 2.0.1: Heartbeat
Stuurt periodieke of opgevraagde meterstanden.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | ID van de connector (0 = hoofdmeter). |
| meterValue | array | Verplicht | Een of meer meterwaarden met tijdstempel. |
| timestamp | string | Verplicht | Tijdstempel van de meterwaarde. Een datum en tijd. |
| sampledValue | array | Verplicht | Een of meer gemeten waarden. |
| value | string | Verplicht | De gemeten waarde. |
| context | string | Optioneel | Context van de meting. Eén van Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other. |
| format | string | Optioneel | Formaat van de waarde. Eén van Raw, SignedData. |
| measurand | string | Optioneel | Soort 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. |
| phase | string | Optioneel | Fase waarop de meting betrekking heeft. Eén van L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1. |
| location | string | Optioneel | Plaats van de meting. Eén van Cable, EV, Inlet, Outlet, Body. |
| unit | string | Optioneel | Eenheid van de meting. Eén van Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent. |
| transactionId | integer | Optioneel | Transactie waar deze meterwaarden bij horen. |
Antwoord
Geen velden: het antwoord is leeg.
Voorbeeld
[2, "80a15023", "MeterValues", {
"connectorId": 1,
"meterValue": [
{
"timestamp": "2026-10-06T09:30:00Z",
"sampledValue": [
{
"value": "19840",
"measurand": "Energy.Active.Import.Register",
"unit": "Wh"
}
]
}
],
"transactionId": 4521
}][3, "80a15023", {}]In OCPP 2.0.1: MeterValues
Start een laadsessie op afstand.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| idTag | string | Verplicht | De identifier voor deze sessie. Maximaal 20 tekens. |
| connectorId | integer | Optioneel | Connector waarop de sessie start. |
| chargingProfile | object | Optioneel | Laadprofiel dat voor deze sessie geldt. |
| chargingProfileId | integer | Verplicht | Unieke identifier van dit laadprofiel. |
| stackLevel | integer | Verplicht | Prioriteitsniveau van het profiel (hoger = meer voorrang). |
| chargingProfilePurpose | string | Verplicht | Doel van het laadprofiel. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| chargingProfileKind | string | Verplicht | Soort schema. Eén van Absolute, Recurring, Relative. |
| chargingSchedule | object | Verplicht | Het laadschema. |
| chargingRateUnit | string | Verplicht | Eenheid van het laadvermogen (ampère of watt). Eén van A, W. |
| chargingSchedulePeriod | array | Verplicht | Lijst met periodes in het schema. |
| startPeriod | integer | Verplicht | Begin van de periode, in seconden vanaf het begin van het schema. |
| limit | number | Verplicht | Vermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1. |
| numberPhases | integer | Optioneel | Aantal fasen waarmee geladen wordt. |
| duration | integer | Optioneel | Duur van het schema in seconden. |
| startSchedule | string | Optioneel | Begindatum en -tijd van het schema. Een datum en tijd. |
| minChargingRate | number | Optioneel | Laagste laadvermogen dat ondersteund wordt. In stappen van 0,1. |
| transactionId | integer | Optioneel | Transactie waarvoor dit profiel geldt. |
| recurrencyKind | string | Optioneel | Herhaling voor terugkerende profielen. Eén van Daily, Weekly. |
| validFrom | string | Optioneel | Datum en tijd vanaf wanneer het profiel geldt. Een datum en tijd. |
| validTo | string | Optioneel | Datum en tijd waarna het profiel niet meer geldt. Een datum en tijd. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de lader het verzoek heeft geaccepteerd. Eén van Accepted, Rejected. |
Voorbeeld
[2, "b7e2ef8a", "RemoteStartTransaction", {
"idTag": "04A2B3C4D5E6F7",
"connectorId": 1
}][3, "b7e2ef8a", {
"status": "Accepted"
}]In OCPP 2.0.1: RequestStartTransaction
Stopt een laadsessie op afstand.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| transactionId | integer | Verplicht | ID van de transactie die gestopt moet worden. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de lader het verzoek heeft geaccepteerd. Eén van Accepted, Rejected. |
Voorbeeld
[2, "7fb0afb2", "RemoteStopTransaction", {
"transactionId": 4521
}][3, "7fb0afb2", {
"status": "Accepted"
}]In OCPP 2.0.1: RequestStopTransaction
Herstart de lader (hard of soft).
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| type | string | Verplicht | Soort herstart. Eén van Hard, Soft. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de lader de herstart heeft geaccepteerd. Eén van Accepted, Rejected. |
Voorbeeld
[2, "526d688f", "Reset", {
"type": "Soft"
}][3, "526d688f", {
"status": "Accepted"
}]In OCPP 2.0.1: Reset
Meldt de backoffice dat een laadsessie is gestart.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector waarop de transactie is gestart. |
| idTag | string | Verplicht | Identifier waarmee de transactie is gestart. Maximaal 20 tekens. |
| meterStart | integer | Verplicht | Meterstand bij het begin van de transactie (Wh). |
| timestamp | string | Verplicht | Tijdstempel van het begin van de transactie. Een datum en tijd. |
| reservationId | integer | Optioneel | ID van de reservering die is gebruikt. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| idTagInfo | object | Verplicht | Autorisatiegegevens voor de idTag. |
| status | string | Verplicht | Autorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Optioneel | Datum en tijd waarna de idTag als verlopen geldt. Een datum en tijd. |
| parentIdTag | string | Optioneel | Bovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens. |
| transactionId | integer | Verplicht | Transactie-ID, toegekend door het Central System. |
Voorbeeld
[2, "2410a6a5", "StartTransaction", {
"connectorId": 1,
"idTag": "04A2B3C4D5E6F7",
"meterStart": 12500,
"timestamp": "2026-10-06T09:30:00Z"
}][3, "2410a6a5", {
"idTagInfo": {
"status": "Accepted"
},
"transactionId": 4521
}]In OCPP 2.0.1: TransactionEvent
Meldt de huidige status en eventuele fouten van een connector.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector waarvan de status gemeld wordt. |
| errorCode | string | Verplicht | Foutcode (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. |
| status | string | Verplicht | Huidige status van de connector. Eén van Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted. |
| info | string | Optioneel | Aanvullende vrije tekst over de status. Maximaal 50 tekens. |
| timestamp | string | Optioneel | Tijdstempel van de statuswijziging. Een datum en tijd. |
| vendorId | string | Optioneel | Fabrikantspecifieke identifier. Maximaal 255 tekens. |
| vendorErrorCode | string | Optioneel | Fabrikantspecifieke foutcode. Maximaal 50 tekens. |
Antwoord
Geen velden: het antwoord is leeg.
Voorbeeld
[2, "d9b0420e", "StatusNotification", {
"connectorId": 1,
"errorCode": "NoError",
"status": "Available"
}][3, "d9b0420e", {}]In OCPP 2.0.1: StatusNotification
Meldt de backoffice dat een laadsessie is gestopt.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| transactionId | integer | Verplicht | ID van de transactie die stopt. |
| timestamp | string | Verplicht | Tijdstempel van het einde van de transactie. Een datum en tijd. |
| meterStop | integer | Verplicht | Meterstand aan het einde van de transactie (Wh). |
| idTag | string | Optioneel | Identifier die om de stop vroeg. Maximaal 20 tekens. |
| reason | string | Optioneel | Reden waarom de transactie stopt. Eén van EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized. |
| transactionData | array | Optioneel | Lijst met MeterValue-objecten (zelfde opbouw als MeterValues.meterValue). |
| timestamp | string | Verplicht | Tijdstempel van de meterwaarde. Een datum en tijd. |
| sampledValue | array | Verplicht | Een of meer gemeten waarden. |
| value | string | Verplicht | De gemeten waarde. |
| context | string | Optioneel | Context van de meting. Eén van Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other. |
| format | string | Optioneel | Formaat van de waarde. Eén van Raw, SignedData. |
| measurand | string | Optioneel | Soort 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. |
| phase | string | Optioneel | Fase waarop de meting betrekking heeft. Eén van L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1. |
| location | string | Optioneel | Plaats van de meting. Eén van Cable, EV, Inlet, Outlet, Body. |
| unit | string | Optioneel | Eenheid van de meting. Eén van Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| idTagInfo | object | Optioneel | Autorisatiegegevens voor de idTag. |
| status | string | Verplicht | Autorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Optioneel | Datum en tijd waarna de idTag als verlopen geldt. Een datum en tijd. |
| parentIdTag | string | Optioneel | Bovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens. |
Voorbeeld
[2, "b380dc07", "StopTransaction", {
"transactionId": 4521,
"timestamp": "2026-10-06T09:30:00Z",
"meterStop": 19840,
"idTag": "04A2B3C4D5E6F7"
}][3, "b380dc07", {
"idTagInfo": {
"status": "Accepted"
}
}]In OCPP 2.0.1: TransactionEvent
Ontgrendelt een connector op afstand.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector die ontgrendeld moet worden. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van het verzoek om te ontgrendelen. Eén van Unlocked, UnlockFailed, NotSupported. |
Voorbeeld
[2, "882ccab0", "UnlockConnector", {
"connectorId": 1
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| location | string | Verplicht | URI waar de diagnostiek naartoe geüpload moet worden. Een adres (URI). |
| retries | integer | Optioneel | Aantal nieuwe pogingen voor het uploaden. |
| retryInterval | integer | Optioneel | Seconden tussen twee pogingen. |
| startTime | string | Optioneel | Begin van de periode waarover logs verzameld worden. Een datum en tijd. |
| stopTime | string | Optioneel | Einde van de periode waarover logs verzameld worden. Een datum en tijd. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| fileName | string | Optioneel | Naam van het diagnostiekbestand. Maximaal 255 tekens. |
Voorbeeld
[2, "da7920cd", "GetDiagnostics", {
"location": "ftp://files.example.com/diagnostics/"
}][3, "da7920cd", {}]In OCPP 2.0.1: GetLog
Meldt de status van een diagnostiekupload.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Huidige status van de diagnostiekupload. Eén van Idle, Uploaded, UploadFailed, Uploading. |
Antwoord
Geen velden: het antwoord is leeg.
Voorbeeld
[2, "d1c853b4", "DiagnosticsStatusNotification", {
"status": "Uploaded"
}][3, "d1c853b4", {}]In OCPP 2.0.1: LogStatusNotification
Meldt de status van een firmware-update.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Huidige status van de firmware-update. Eén van Downloaded, DownloadFailed, Downloading, Idle, InstallationFailed, Installing, Installed. |
Antwoord
Geen velden: het antwoord is leeg.
Voorbeeld
[2, "dc9afcb2", "FirmwareStatusNotification", {
"status": "Installed"
}][3, "dc9afcb2", {}]In OCPP 2.0.1: FirmwareStatusNotification
Geeft de lader opdracht nieuwe firmware te downloaden en te installeren.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| location | string | Verplicht | URI waar de firmware gedownload kan worden. Een adres (URI). |
| retrieveDate | string | Verplicht | Datum en tijd waarna de lader de firmware moet ophalen. Een datum en tijd. |
| retries | integer | Optioneel | Aantal nieuwe pogingen voor het downloaden. |
| retryInterval | integer | Optioneel | Seconden tussen twee pogingen. |
Antwoord
Geen velden: het antwoord is leeg.
Voorbeeld
[2, "a57cc6a2", "UpdateFirmware", {
"location": "ftp://files.example.com/fw-1.4.3.bin",
"retrieveDate": "2026-10-07T02:00:00Z"
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| listVersion | integer | Verplicht | Huidig versienummer van de lokale autorisatielijst. |
Voorbeeld
[2, "ccf23a29", "GetLocalListVersion", {}][3, "ccf23a29", {
"listVersion": 1
}]In OCPP 2.0.1: GetLocalListVersion
Stuurt een volledige of gedeeltelijke update van de lokale autorisatielijst.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| listVersion | integer | Verplicht | Versienummer van deze lijstupdate. |
| updateType | string | Verplicht | Of dit een volledige vervanging is of een update met alleen de verschillen. Eén van Differential, Full. |
| localAuthorizationList | array | Optioneel | Lijst met autorisatie-items. |
| idTag | string | Verplicht | De identifier die geautoriseerd moet worden. Maximaal 20 tekens. |
| idTagInfo | object | Optioneel | Autorisatiegegevens voor de idTag. |
| status | string | Verplicht | Autorisatiestatus. Eén van Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Optioneel | Datum en tijd waarna de idTag als verlopen geldt. Een datum en tijd. |
| parentIdTag | string | Optioneel | Bovenliggende idTag voor groepsautorisatie. Maximaal 20 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van de update van de lokale lijst. Eén van Accepted, Failed, NotSupported, VersionMismatch. |
Voorbeeld
[2, "a23c9563", "SendLocalList", {
"listVersion": 1,
"updateType": "Full",
"localAuthorizationList": [
{
"idTag": "04A2B3C4D5E6F7",
"idTagInfo": {
"status": "Accepted"
}
}
]
}][3, "a23c9563", {
"status": "Accepted"
}]In OCPP 2.0.1: SendLocalList
Reservering
Reserveer vooraf een connector voor een bepaalde gebruiker.
Annuleert een bestaande reservering.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| reservationId | integer | Verplicht | ID van de reservering die geannuleerd moet worden. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de reservering is geannuleerd. Eén van Accepted, Rejected. |
Voorbeeld
[2, "63258356", "CancelReservation", {
"reservationId": 7
}][3, "63258356", {
"status": "Accepted"
}]In OCPP 2.0.1: CancelReservation
Maakt een reservering op een bepaalde connector.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector die gereserveerd wordt (0 = geen bepaalde connector). |
| expiryDate | string | Verplicht | Datum en tijd waarop de reservering verloopt. Een datum en tijd. |
| idTag | string | Verplicht | Identifier waarvoor de reservering wordt gemaakt. Maximaal 20 tekens. |
| reservationId | integer | Verplicht | Uniek ID van deze reservering. |
| parentIdTag | string | Optioneel | Bovenliggende idTag voor een groepsreservering. Maximaal 20 tekens. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Resultaat van het reserveringsverzoek. Eén van Accepted, Faulted, Occupied, Rejected, Unavailable. |
Voorbeeld
[2, "62a25d78", "ReserveNow", {
"connectorId": 1,
"expiryDate": "2026-10-06T10:00:00Z",
"idTag": "04A2B3C4D5E6F7",
"reservationId": 7
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| id | integer | Optioneel | ID van het laadprofiel dat gewist moet worden. |
| connectorId | integer | Optioneel | Connector waarvoor profielen gewist worden. |
| chargingProfilePurpose | string | Optioneel | Doel van de profielen die gewist worden. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| stackLevel | integer | Optioneel | Stackniveau van de profielen die gewist worden. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of er profielen zijn gewist. Eén van Accepted, Unknown. |
Voorbeeld
[2, "2c436739", "ClearChargingProfile", {}][3, "2c436739", {
"status": "Accepted"
}]In OCPP 2.0.1: ClearChargingProfile
Vraagt het samengestelde laadschema van een connector op.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector waarvoor het schema opgevraagd wordt. |
| duration | integer | Verplicht | Duur in seconden van het gevraagde schema. |
| chargingRateUnit | string | Optioneel | Gewenste eenheid voor het schema. Eén van A, W. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de lader het schema kan leveren. Eén van Accepted, Rejected. |
| connectorId | integer | Optioneel | Connector waarvoor het schema geldt. |
| scheduleStart | string | Optioneel | Begindatum en -tijd van het samengestelde schema. Een datum en tijd. |
| chargingSchedule | object | Optioneel | Het samengestelde laadschema. |
| chargingRateUnit | string | Verplicht | Eenheid van het laadvermogen (ampère of watt). Eén van A, W. |
| chargingSchedulePeriod | array | Verplicht | Lijst met periodes in het schema. |
| startPeriod | integer | Verplicht | Begin van de periode, in seconden vanaf het begin van het schema. |
| limit | number | Verplicht | Vermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1. |
| numberPhases | integer | Optioneel | Aantal fasen waarmee geladen wordt. |
| duration | integer | Optioneel | Duur van het schema in seconden. |
| startSchedule | string | Optioneel | Begindatum en -tijd van het schema. Een datum en tijd. |
| minChargingRate | number | Optioneel | Laagste laadvermogen dat ondersteund wordt. In stappen van 0,1. |
Voorbeeld
[2, "50bc203f", "GetCompositeSchedule", {
"connectorId": 1,
"duration": 3600
}][3, "50bc203f", {
"status": "Accepted"
}]In OCPP 2.0.1: GetCompositeSchedule
Stuurt een laadprofiel naar de lader.
Verzoek
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| connectorId | integer | Verplicht | Connector waarvoor het profiel geldt. |
| csChargingProfiles | object | Verplicht | Het laadprofiel dat geïnstalleerd wordt. |
| chargingProfileId | integer | Verplicht | Unieke identifier van dit laadprofiel. |
| stackLevel | integer | Verplicht | Prioriteitsniveau van het profiel (hoger = meer voorrang). |
| chargingProfilePurpose | string | Verplicht | Doel van het laadprofiel. Eén van ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| chargingProfileKind | string | Verplicht | Soort schema. Eén van Absolute, Recurring, Relative. |
| chargingSchedule | object | Verplicht | Het laadschema. |
| chargingRateUnit | string | Verplicht | Eenheid van het laadvermogen (ampère of watt). Eén van A, W. |
| chargingSchedulePeriod | array | Verplicht | Lijst met periodes in het schema. |
| startPeriod | integer | Verplicht | Begin van de periode, in seconden vanaf het begin van het schema. |
| limit | number | Verplicht | Vermogens- of stroomlimiet tijdens deze periode. In stappen van 0,1. |
| numberPhases | integer | Optioneel | Aantal fasen waarmee geladen wordt. |
| duration | integer | Optioneel | Duur van het schema in seconden. |
| startSchedule | string | Optioneel | Begindatum en -tijd van het schema. Een datum en tijd. |
| minChargingRate | number | Optioneel | Laagste laadvermogen dat ondersteund wordt. In stappen van 0,1. |
| transactionId | integer | Optioneel | Transactie waarvoor dit profiel geldt. |
| recurrencyKind | string | Optioneel | Herhaling voor terugkerende profielen. Eén van Daily, Weekly. |
| validFrom | string | Optioneel | Datum en tijd vanaf wanneer het profiel geldt. Een datum en tijd. |
| validTo | string | Optioneel | Datum en tijd waarna het profiel niet meer geldt. Een datum en tijd. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of het profiel is geaccepteerd. Eén van Accepted, Rejected, NotSupported. |
Voorbeeld
[2, "01be9b20", "SetChargingProfile", {
"connectorId": 1,
"csChargingProfiles": {
"chargingProfileId": 10,
"stackLevel": 0,
"chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Relative",
"chargingSchedule": {
"chargingRateUnit": "A",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": 16.0
}
]
}
}
}][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
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| requestedMessage | string | Verplicht | Het bericht dat de lader moet sturen. Eén van BootNotification, DiagnosticsStatusNotification, FirmwareStatusNotification, Heartbeat, MeterValues, StatusNotification. |
| connectorId | integer | Optioneel | Connector waarvoor het bericht gestuurd moet worden. |
Antwoord
| Veld | Type | Gebruik | Wat erin staat |
|---|---|---|---|
| status | string | Verplicht | Of de lader het bericht gaat sturen. Eén van Accepted, Rejected, NotImplemented. |
Voorbeeld
[2, "4c736efd", "TriggerMessage", {
"requestedMessage": "StatusNotification"
}][3, "4c736efd", {
"status": "Accepted"
}]In OCPP 2.0.1: TriggerMessage
Geen bericht gevonden.
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
| Sleutel | Type | Toegang | Wat het doet |
|---|---|---|---|
| Core34 | |||
| AllowOfflineTxForUnknownIdOptioneel in de specificatie | boolean | Lezen en schrijven | Of 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 specificatie | boolean | Lezen en schrijven | Of 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. |
| AuthorizeRemoteTxRequests | boolean | Lezen | Of 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 specificatie | integer | Lezen en schrijven | Hoe vaak de lader de lamp laat knipperen tijdens een knipperreeks. |
| ClockAlignedDataInterval | integer | Lezen en schrijven | Interval 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. |
| ConnectionTimeOut | integer | Lezen en schrijven | Hoe lang de lader na de autorisatie wacht tot de bestuurder de stekker insteekt, voordat hij de connector weer vrijgeeft. |
| ConnectorPhaseRotation | CSL | Lezen en schrijven | Fasevolgorde 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 specificatie | integer | Lezen | Maximaal aantal items in ConnectorPhaseRotation. |
| GetConfigurationMaxKeys | integer | Lezen | Maximaal 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. |
| HeartbeatInterval | integer | Lezen en schrijven | Hoe 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 specificatie | integer | Lezen en schrijven | Helderheid van de verlichting van de lader, als percentage. |
| LocalAuthorizeOffline | boolean | Lezen en schrijven | Of de lader offline autoriseert vanuit zijn lokale lijst of cache. |
| LocalPreAuthorize | boolean | Lezen en schrijven | Of 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 specificatie | integer | Lezen en schrijven | Energie die de lader nog levert nadat een autorisatie ongeldig blijkt. |
| MeterValuesAlignedData | CSL | Lezen en schrijven | Measurands 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 specificatie | integer | Lezen | Maximaal aantal measurands in MeterValuesAlignedData. |
| MeterValuesSampledData | CSL | Lezen en schrijven | Measurands 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 specificatie | integer | Lezen | Maximaal aantal measurands in MeterValuesSampledData.Lees dit voordat je een lange lijst maakt: ga je erover, dan weigert de lader de hele lijst. |
| MeterValueSampleInterval | integer | Lezen en schrijven | Hoe 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 specificatie | integer | Lezen en schrijven | Minimale 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. |
| NumberOfConnectors | integer | Lezen | Aantal fysieke connectors op deze lader. |
| ResetRetries | integer | Lezen en schrijven | Hoe vaak de lader een mislukte herstart opnieuw probeert. |
| StopTransactionOnEVSideDisconnect | boolean | Lezen en schrijven | Of 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. |
| StopTransactionOnInvalidId | boolean | Lezen en schrijven | Of de lader de transactie stopt als de backend de idTag weigert. |
| StopTxnAlignedData | CSL | Lezen en schrijven | Measurands op vaste kloktijden die worden toegevoegd aan de transactionData van StopTransaction. |
| StopTxnAlignedDataMaxLengthOptioneel in de specificatie | integer | Lezen | Maximaal aantal measurands in StopTxnAlignedData. |
| StopTxnSampledData | CSL | Lezen en schrijven | Gemeten 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 specificatie | integer | Lezen | Maximaal aantal measurands in StopTxnSampledData. |
| SupportedFeatureProfiles | CSL | Lezen | Functieprofielen 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 specificatie | integer | Lezen | Maximaal aantal items in SupportedFeatureProfiles. |
| TransactionMessageAttempts | integer | Lezen en schrijven | Hoe vaak de lader een transactiebericht opnieuw stuurt als de backend het niet heeft bevestigd. |
| TransactionMessageRetryInterval | integer | Lezen en schrijven | Basiswachttijd tussen die pogingen. De lader vermenigvuldigt hem met het nummer van de poging. |
| UnlockConnectorOnEVSideDisconnect | boolean | Lezen en schrijven | Of de kabel aan de kant van de lader ontgrendelt als hij aan de kant van de auto wordt losgekoppeld. |
| WebSocketPingIntervalOptioneel in de specificatie | integer | Lezen en schrijven | Interval 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 | |||
| LocalAuthListEnabled | boolean | Lezen en schrijven | Of de lokale autorisatielijst in gebruik is. |
| LocalAuthListMaxLength | integer | Lezen | Hoeveel items de lokale autorisatielijst kan bevatten. |
| SendLocalListMaxLength | integer | Lezen | Hoeveel items er in één SendLocalList-bericht passen.Een grotere lijst moet je versturen in meerdere updates met alleen de verschillen. |
| Reservering1 | |||
| ReserveConnectorZeroSupportedOptioneel in de specificatie | boolean | Lezen | Of de lader een reservering op connector 0 accepteert, dus op welke connector dan ook. |
| Slim laden5 | |||
| ChargeProfileMaxStackLevel | integer | Lezen | Hoogste stackniveau dat de lader accepteert op een laadprofiel. Een hoger niveau wint. |
| ChargingScheduleAllowedChargingRateUnit | CSL | Lezen | Welke 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. |
| ChargingScheduleMaxPeriods | integer | Lezen | Maximaal aantal periodes in één laadschema. |
| ConnectorSwitch3to1PhaseSupportedOptioneel in de specificatie | boolean | Lezen | Of de lader kan wisselen tussen driefasig en eenfasig laden.Bepaalt of je onder het driefasige minimum kunt terugregelen in plaats van helemaal te pauzeren. |
| MaxChargingProfilesInstalled | integer | Lezen | Hoeveel laadprofielen er tegelijk geïnstalleerd kunnen zijn. |
Geen sleutel gevonden.
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.
| Measurand | Eenheid | Meestal op | Wat het je geeft |
|---|---|---|---|
| Energy.Active.Import.Register | Wh | AC en DC | Cumulatieve 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.Register | Wh | V2G-geschikt | Cumulatieve energie die is teruggeleverd, bij bidirectionele opstellingen. |
| Energy.Active.Import.Interval | Wh | AC en DC | Energie die sinds de vorige meting is afgenomen, in plaats van een lopend totaal. |
| Energy.Reactive.Import.Register | varh | Afhankelijk van de meter | Cumulatieve afgenomen blindenergie. |
| Power.Active.Import | W | AC en DC | Momentaan actief vermogen. Hiermee teken je een laadcurve, en hierop reageert het energiebeheer. |
| Power.Offered | W | AC en DC | Vermogen dat de lader de auto nu aanbiedt. Vergelijk het met Power.Active.Import om te zien of een limiet echt wordt toegepast. |
| Power.Reactive.Import | var | Afhankelijk van de meter | Momentaan blindvermogen. |
| Power.Factor | verhouding | Afhankelijk van de meter | Verhouding tussen actief en schijnbaar vermogen. |
| Current.Import | A | AC en DC | Afgenomen stroom. Meestal per fase gemeld, dus deze ene measurand kan drie waarden per meting worden. |
| Current.Offered | A | AC en DC | Stroomlimiet die de lader aan de auto doorgeeft. Hier lees je direct af of je laadprofiel voor slim laden is aangekomen. |
| Current.Export | A | V2G-geschikt | Teruggeleverde stroom, bij bidirectionele opstellingen. |
| Voltage | V | AC en DC | Netspanning, per fase op driefasige laders. Handig om een weggevallen fase of een slechte verbinding te vinden. |
| Frequency | Hz | Afhankelijk van de meter | Netfrequentie. De specificatie geeft er geen unit-veld voor. |
| Temperature | Celsius | Afhankelijk van de lader | Temperatuur bij de lader of connector. Verklaart terugregelen op een warme dag, voordat iemand het een storing noemt. |
| SoC | % | DC, of ISO 15118 op AC | Laadtoestand van de accu van de auto. Alleen aanwezig als de auto hem echt meldt, en bij gewoon AC-laden doet hij dat meestal niet. |
| RPM | rpm | Zelden | Ventilatortoerental, bij laders die het melden. |
Geen measurand gevonden.
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
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.
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.