Migreren van OCPP 1.6 naar 2.0.1: stappenplan en valkuilen
Migreren van OCPP 1.6 naar 2.0.1 is geen upgrade maar een parallelle implementatie: de versies zijn niet uitwisselbaar, dus je server moet beide tegelijk spreken terwijl je laadpalen één voor één overgaan. Reken op firmware-updates per paal en een herbouw van je configuratielogica.
Een migratie van OCPP 1.6 naar 2.0.1 is geen upgrade maar een parallelle implementatie. Omdat de versies niet uitwisselbaar zijn, kun je niet op een zaterdagnacht omschakelen: je server moet een periode beide protocollen spreken terwijl de laadpalen één voor één overgaan.
Dat maakt de eerste vraag niet technisch maar zakelijk. Migreren kost firmware-updates per paal, een herbouw van je configuratielogica en een testronde per hardwaremodel. Die investering moet ergens tegenover staan.
Wanneer migreren loont — en wanneer niet
Migreer als je functionaliteit nodig hebt die 1.6 principieel niet biedt. In alle andere gevallen is de kosten-batenverhouding ongunstig, zeker zolang 1.6J breed ondersteund blijft.
| Situatie | Advies |
|---|---|
| Je wilt Plug & Charge via ISO 15118 | Migreren — 1.6 kent de certificaatberichten niet |
| Je hebt certificaatbeheer op afstand nodig | Migreren — in 1.6 moet dat handmatig |
| Je wilt monitoring op variabelenniveau | Migreren — SetVariableMonitoring bestaat alleen in 2.0.1 |
| Een aanbesteding eist IEC 63584 | Migreren — de norm is gebaseerd op 2.0.1 |
| Je wilt betere beveiliging | Niet migreren — securityprofiel 2 kan ook op 1.6 |
| Je wilt smart charging | Niet migreren — 1.6 heeft het Smart Charging-profiel al |
| Alles werkt naar behoren | Niet migreren — 1.6J blijft voorlopig ondersteund |
Wat er technisch verandert aan jouw kant
1. Transacties worden gebeurtenissen
StartTransaction en StopTransaction verdwijnen ten gunste van TransactionEvent met de types Started, Updated en Ended. Je transactieadministratie moet daarop worden herschreven, inclusief de afhandeling van berichten die in een andere volgorde binnenkomen dan ze zijn verstuurd.
2. Configuratie wordt een devicemodel
De platte sleutel-waardelijst van ChangeConfiguration maakt plaats voor componenten met variabelen. Dit is doorgaans het grootste stuk werk, omdat je code niet langer vaste sleutels kan aannemen maar het model per paal moet uitlezen met GetBaseReport.
3. Statussen worden grover
Van negen connectorstatussen blijven er vijf over. Dashboards, alerts en rapportages die op Preparing, Charging of SuspendedEV filteren, moeten die informatie voortaan uit de transactiegebeurtenissen halen.
4. Identificatie wordt gestructureerd
Het simpele idTag-tekstveld wordt een idToken-object met een expliciet type: RFID, een ISO 15118-certificaat, een lokaal nummer of een centrale identifier. Je autorisatielogica moet dat onderscheid gaan maken.
Stappenplan
- 1Inventariseer per laadpaal merk, model en firmwareversie, en vraag de leverancier vanaf welke firmware 2.0.1 beschikbaar is. Reken erop dat een deel van je park het nooit gaat halen.
- 2Bepaal welke functionaliteit je daadwerkelijk nodig hebt. Niet alle zestien functieblokken van 2.0.1 zijn relevant; kies wat je gaat implementeren en leg de rest vast als buiten scope.
- 3Bouw 2.0.1 naast 1.6 in je server. Beide protocollen draaien een tijd naast elkaar; de WebSocket-subprotocolheader bepaalt welke een paal gebruikt.
- 4Test per hardwaremodel met één paal. Implementaties verschillen tussen fabrikanten, dus een geslaagde test op merk A zegt weinig over merk B.
- 5Migreer in golven per locatie, niet per merk. Zo blijft een storing beperkt tot één locatie en houd je een werkende referentie.
- 6Draai minimaal één volledige factureringscyclus dubbel. Vergelijk de transactieadministratie van beide protocollen voordat je 1.6 uitzet.
- 7Zet 1.6 pas uit als de laatste paal over is en de cijfers kloppen.
Valkuilen die het meeste tijd kosten
- Aannemen dat 2.0.1-ondersteuning in de folder betekent dat het in de geleverde firmware zit. Vraag altijd naar het exacte versienummer.
- Het devicemodel per merk hardcoderen. Dat werkt tot de eerste paal van een ander merk erbij komt en is dan lastig terug te draaien.
- Historische data niet meenemen. Transacties uit 1.6 hebben een ander model dan die uit 2.0.1; zonder vertaalslag breekt je rapportage op de migratiedatum.
- Eigen DataTransfer-uitbreidingen vergeten. Fabrikantspecifieke functionaliteit die via DataTransfer liep, moet apart worden nagelopen — die verandert niet mee.
- De laadpassen vergeten. Het nieuwe idToken-model met types vraagt vaak een opschoning van de bestaande paslijst.
Die laatste blijkt in de praktijk vaak het meeste handwerk. Paslijsten die jarenlang zijn gegroeid bevatten dubbele nummers, verlopen passen en handmatig ingevoerde identifiers die in het strengere 2.0.1-model niet meer geldig zijn.
En OCPP 2.1?
Wie nu naar 2.0.1 migreert, hoeft zich over 2.1 geen zorgen te maken. OCPP 2.1 is volledig achterwaarts compatibel met 2.0.1: alle applicatielogica blijft werken en de nieuwe functionaliteit zit in aanvullende functieblokken.
Dat maakt 2.0.1 een veilige bestemming. De pijnlijke breuk zit tussen 1.6 en 2.0.1; wie die stap heeft gezet, groeit daarna mee zonder opnieuw te herbouwen.
Veelgestelde vragen
Kan ik OCPP 1.6 en 2.0.1 tegelijk draaien?
Ja, en dat is bij een migratie ook noodzakelijk. Je server ondersteunt beide protocollen naast elkaar; de laadpaal geeft bij het opzetten van de WebSocket-verbinding via het subprotocol aan welke versie hij spreekt.
Hoe lang duurt een migratie van 1.6 naar 2.0.1?
De serverkant kost doorgaans enkele weken, afhankelijk van hoeveel functieblokken je implementeert. De doorlooptijd wordt bepaald door de hardware: firmware-updates per paal en tests per model bepalen het tempo, niet de software.
Moet ik mijn laadpalen vervangen om over te stappen?
Meestal niet, maar wel deels. Palen die 2.0.1-firmware kunnen krijgen hoef je niet te vervangen. Modellen van vóór ongeveer 2021 krijgen die firmware vaak niet meer en blijven op 1.6 draaien of moeten worden vervangen.
Wat is het grootste werk bij een OCPP-migratie?
Het devicemodel. In 1.6 configureer je met platte sleutels, in 2.0.1 met componenten en variabelen die per laadpaal kunnen verschillen. Je beheerlogica moet dat model uitlezen in plaats van vaste sleutels aannemen.
Moet ik migreren voor betere beveiliging?
Nee. De drie securityprofielen zijn ook op OCPP 1.6 toe te passen via de securitywhitepaper van de Open Charge Alliance. Securityprofiel 2 aanzetten op je bestaande 1.6-opstelling is sneller en goedkoper dan een migratie.
Bronnen
Verder lezen
Vragen over jouw specifieke situatie?
We bouwen OCPP-servers, CSMS-omgevingen en koppelingen voor bedrijven in heel Nederland. Een gesprek kost je een half uur en levert altijd een concreet antwoord op.
Gratis gesprek inplannen →