OCPP 2.0.1 ir 2.1 protokolo žinynas.
Visi 91 OCPP 2.0.1 ir 2.1 pranešimai su laukais ir pavyzdžiu, kuriuos pridėjo 2.1, įrenginio modelis, pakeitęs 1.6 konfigūracijos raktus, ir trys saugumo profiliai.
PranešimaiĮrenginio modelisSaugumo profiliaiPereinant nuo 1.6Klausimai
Kas yra OCPP 2.0.1 ir 2.1?
Tai naujesnės Open Charge Point Protocol versijos, atviro Open Charge Alliance standarto, nustatančio, kaip įkrovimo stotelė bendrauja su ją valdančia programine įranga: specifikacijoje tai CSMS, rinkoje vadinama valdymo sistema (back office). Kaip ir 1.6J, stotelė atidaro WebSocket ryšį su valdymo sistema, ir abi pusės juo siunčia JSON pranešimus.
OCPP 2.0.1 nėra atgaliniu būdu suderinamas su 1.6. Jis aprašo stotelę kaip įrenginio modelį iš komponentų ir kintamųjų, turi tris integruotus saugumo profilius, praneša įkrovimo sesiją vienu pranešimu TransactionEvent ir palaiko ISO 15118, skirtą Plug and Charge ir išmaniajam įkrovimui su automobilio duomenimis.
OCPP 2.1 remiasi 2.0.1. Jo schemos yra 2.0.1 schemos su pridėtais neprivalomais laukais, ir jis prideda 27 pranešimus dvikrypčiam įkrovimui, DER valdymui, tarifams stotelėje, kuri pati skaičiuoja kainą, mokėjimui prie stotelės, periodiniams įvykių srautams ir akumuliatorių keitimui. Stotelė ir jos valdymo sistema, atidarydamos WebSocket ryšį, susitaria dėl vienos versijos.
- Atviras standartasDiegti nemokama, prižiūri Open Charge Alliance. OCPP 2.1 taip pat paskelbtas kaip IEC 63584-210.
- WebSocket ir JSONVienas ryšys, kurį stotelė laiko atvirą. 2.1 prideda SEND, pranešimą, į kurį neatsakoma.
- 91 pranešimas64 versijoje 2.0.1 ir dar 27 versijoje 2.1, 19 funkcinių blokų.
- Abiem kryptimisStotelė ir valdymo sistema kiekviena inicijuoja savo pranešimus.
Visi 91 OCPP 2.0.1 ir 2.1 pranešimai
Kiekvienas pranešimas yra vienos pusės užklausa ir kitos pusės atsakymas, susieti pranešimo ID. Vienintelė išimtis yra NotifyPeriodicEventStream: 2.1 versijos SEND pranešimas, į kurį neatsakoma.
Saugumas
Stotelės ir valdymo sistemos sertifikatai bei saugumo įvykiai, kuriuos praneša stotelė.
Parengimas
Paleidimas, registracija valdymo sistemoje, įrenginio modelio nuskaitymas ir nustatymas bei paleidimai iš naujo.
Autorizacija
ID žetono tikrinimas prieš įkrovimą, autorizacijos podėlis, o 2.1 versijoje ir vienkartinis mokėjimas.
Vietinis autorizacijos sąrašas
ID žetonų sąrašas, kurį valdymo sistema saugo stotelėje, kad ši galėtų autorizuoti pati.
Įkrovimo sesijos
Vienas pranešimas, TransactionEvent, kiekvienos įkrovimo sesijos pradžiai, atnaujinimams ir pabaigai.
Nuotolinis valdymas
Sesijos pradėjimas ir sustabdymas iš valdymo sistemos, jungties atrakinimas ir pranešimo iškvietimas.
Pasiekiamumas
Kiekvienos jungties būsena, Heartbeat ir stotelės ar EVSE išjungimas iš eksploatacijos.
Rezervacija
EVSE rezervavimas ID žetonui ir tos rezervacijos atšaukimas.
Tarifai ir kaina
Kainos ir einamoji kaina vairuotojui; 2.1 versijoje taip pat tarifai stotelėje, kuri pati skaičiuoja kainą.
Skaitiklio rodmenys
Skaitiklio rodmenys ne sesijos metu; sesijos metu jie keliauja TransactionEvent pranešime.
Išmanusis įkrovimas
Įkrovimo profiliai su galios arba srovės ribomis, išorinės ribos ir automobilio poreikiai.
Mikroprogramos valdymas
Stotelės mikroprogramos atnaujinimas ir jos paskelbimas per vietinį valdiklį.
Sertifikatų valdymas
Sertifikatų diegimas ir tikrinimas, įskaitant Plug and Charge sutarčių sertifikatus.
Diagnostika
Žurnalai, įrenginio modelio stebėsena, įvykiai, kliento duomenys ir, 2.1 versijoje, periodiniai įvykių srautai.
Pranešimai ekrane
Pranešimai, kuriuos valdymo sistema nustato, kad stotelė rodytų vairuotojams.
Duomenų perdavimas
Gamintojo duomenys funkcijoms, kurių standartas neapima.
Dvikryptis galios perdavimas
Nauja 2.1 versijoje: įkrovimo ir iškrovimo (V2X) valdymas per įkrovimo profilius.
DER valdymas
Nauja 2.1 versijoje: tinklo palaikymo nustatymai stotelei ir automobiliui, veikiantiems kaip paskirstytasis energijos išteklius.
Akumuliatorių keitimas
Nauja 2.1 versijoje: akumuliatorių keitimo stotys.
Pagal šią paiešką pranešimų nerasta.
OCPP 2.0.1 įrenginio modelis
OCPP 1.6 versijoje stotelė turi plokščią konfigūracijos raktų sąrašą. 2.0.1 ir 2.1 versijose ji aprašo save komponentais, pavyzdžiui, įkrovimo stotele, EVSE, jungtimi arba valdikliu, tokiu kaip OCPPCommCtrlr, ir kiekvienas komponentas turi kintamųjų. Kintamasis gali turėti keturias reikšmes: Actual, Target, MinSet ir MaxSet. Tai, kas anksčiau buvo konfigūracijos raktas, dabar yra valdiklio komponento kintamasis.
Kaip su juo dirbti
- GetVariables ir SetVariablesVienu pranešimu nuskaitykite arba nustatykite kelis kintamuosius. Stotelė atsako dėl kiekvieno kintamojo atskirai.
- GetBaseReport ir GetReportPaprašykite viso įrenginio modelio arba jo dalies. Stotelė jį grąžina NotifyReport pranešimais.
- StebėsenaSetVariableMonitoring stebi kintamąjį pagal slenkstį, pokytį arba fiksuotą intervalą, o stotelė praneša per NotifyEvent.
- Enabled, kiekvienai funkcijaiNeprivalomos funkcijos valdiklis, pavyzdžiui, AuthCacheCtrlr arba ReservationCtrlr, turi kintamąjį Enabled, kuris tą funkciją įjungia arba išjungia.
Atsakymai į SetVariables
- Priimta
- Reikšmė nustatyta.
- Rejected
- Kintamasis yra, bet reikšmė atmesta.
- Unknown
Component - Stotelė tokio komponento neturi.
- Unknown
Variable - Komponentas tokio kintamojo neturi.
- NotSupported
AttributeType - Kintamasis neturi tokio tipo reikšmės, pavyzdžiui, Target.
- RebootRequired
- Reikšmė išsaugota ir įsigalios po paleidimo iš naujo.
Kintamieji, pakeitę žinomiausius 1.6 raktus
Specifikacija standartizuoja daug daugiau, jie išvardyti jos prieduose. Stotelė, atsakydama į GetBaseReport, praneša tuos, kuriuos turi.
| Komponentas ir kintamasis | Tipas | Ką jis nustato | OCPP 1.6 versijoje |
|---|---|---|---|
| OCPPCommCtrlr | sveikasis skaičius sekundėmis | Sekundės be kitų pranešimų, po kurių stotelė siunčia Heartbeat. | Heartbeat |
| OCPPCommCtrlr | integer | Kiek kartų stotelė bando pristatyti TransactionEvent, kurio valdymo sistema negalėjo apdoroti. | Transaction |
| OCPPCommCtrlr | integer | Kiek sekundžių stotelė laukia prieš bandydama dar kartą. | Transaction |
| OCPPCommCtrlr | sveikasis skaičius sekundėmis | Sekundės tarp WebSocket ping signalų; 0 išjungia pačios stotelės ping signalus. | Web |
| OCPPCommCtrlr | integer | Kiek kartų stotelė kartoja nepavykusį paleidimą iš naujo. | Reset |
| OCPPCommCtrlr | boolean | Atrakinti kabelį stotelėje, kai jis atjungiamas automobilio pusėje. | Unlock |
| SampledDataCtrlr | sąrašas | Ką stotelė matuoja sesijos metu, siunčiama TransactionEvent pranešime su eventType Updated. | Meter |
| SampledDataCtrlr | sveikasis skaičius sekundėmis | Sekundės tarp tų rodmenų; 0 sesijos metu jų nesiunčia. | Meter |
| SampledDataCtrlr | sąrašas | Kas įtraukiama į TransactionEvent, kuriuo sesija baigiama. | Stop |
| AlignedDataCtrlr | sveikasis skaičius sekundėmis | Sekundės tarp laikrodžiu sulygiuotų rodmenų. | Clock |
| AlignedDataCtrlr | sąrašas | Ką apima laikrodžiu sulygiuoti rodmenys. | Meter |
| AlignedDataCtrlr | sąrašas | Laikrodžiu sulygiuoti rodmenys, įtraukiami į TransactionEvent, kuriuo sesija baigiama. | Stop |
| TxCtrlr | sveikasis skaičius sekundėmis | Kiek sekundžių vairuotojas turi prijungti kabelį po sesijos pradžios, kol ji neatšaukta. | Connection |
| TxCtrlr | boolean | Baigti sesiją, kai kabelis atjungiamas automobilio pusėje. | Stop |
| TxCtrlr | boolean | Sustabdyti vykstančią sesiją, kai paaiškėja, kad jos ID žetonas nepriimtas. | Stop |
| TxCtrlr | integer | Energija Wh, kurią stotelė dar gali patiekti valdymo sistemai atmetus ID žetoną. | Max |
| TxCtrlr | sąrašas | Kada sesija prasideda: autorizavus, prijungus kabelį, pradėjus tekėti energijai ir pan. | Nauja 2.0.1 versijoje |
| TxCtrlr | sąrašas | Kada sesija baigiasi, pasirenkama iš to paties sąrašo. | Nauja 2.0.1 versijoje |
| AuthCtrlr | boolean | Ar stotelė nuotolinio paleidimo ID žetoną pirma patikrina Authorize užklausa. | Authorize |
| AuthCtrlr | boolean | Būdama be ryšio, pradėti sesijas jau žinomiems ID žetonams. | Local |
| AuthCtrlr | boolean | Pradėti jau žinomiems ID žetonams nelaukiant valdymo sistemos. | Local |
| AuthCtrlr | boolean | Būdama be ryšio, pradėti sesijas nežinomiems ID žetonams. | Allow |
| AuthCacheCtrlr | boolean | Naudoti autorizacijos podėlį. | Authorization |
| LocalAuthListCtrlr | boolean | Naudoti vietinį autorizacijos sąrašą. | Local |
| LocalAuthListCtrlr | integer | Daugiausia ID žetonų viename SendLocalList. | Send |
| SmartChargingCtrlr | integer | Aukščiausias steko lygis, kurį gali turėti įkrovimo profilis. | Charge |
| SmartChargingCtrlr | sąrašas | Ar grafikai gali būti amperais, vatais ar abiem. | Charging |
| SmartChargingCtrlr | integer | Daugiausia laikotarpių viename įkrovimo grafike. | Charging |
| SmartChargingCtrlr | boolean | Ar stotelė sesijos metu gali persijungti iš trijų fazių į vieną. | Connector |
| ReservationCtrlr | boolean | Ar rezervacija gali būti visai stotelei, o ne vienam EVSE. | Reserve |
Pagal šią paiešką kintamųjų nerasta.
OCPP 2.0.1 ir 2.1 saugumo profiliai
Abi versijos apibrėžia tris saugumo profilius. Stotelė ir jos valdymo sistema vienu metu naudoja vieną, ir jis nustatomas prieš pirmąjį OCPP pranešimą. Valdymo sistema jį nustato kiekvienam ryšio lizdui pranešimu SetNetworkProfile, o stotelė naudojamą profilį praneša per SecurityCtrlr.SecurityProfile.
| Profilis | Kaip stotelė įrodo, kas ji yra | Kaip valdymo sistema įrodo, kas ji yra | Ryšys |
|---|---|---|---|
| 1. Neapsaugotas perdavimas su paprastąja autentifikacija | HTTP Basic autentifikacija su slaptažodžiu | Neįrodo | Nešifruojamas. Tik patikimiems tinklams, pavyzdžiui, VPN tarp stotelės ir valdymo sistemos. |
| 2. TLS su paprastąja autentifikacija | HTTP Basic autentifikacija su slaptažodžiu | Savo TLS serverio sertifikatu | TLS 1.2 arba naujesnis |
| 3. TLS su kliento sertifikatais | Savo TLS kliento sertifikatu | Savo TLS serverio sertifikatu | TLS 1.2 arba naujesnis |
- Profilio žeminimasStotelė gali pereiti tik iš 3 profilio į 2 profilį ir tik tada, kai AllowSecurityProfileDowngrade nustatytas true. Per OCPP ji niekada nepereina į 1 profilį.
- Slaptažodžiai ir sertifikataiSlaptažodis yra SecurityCtrlr.BasicAuthPassword. Stotelė naujo sertifikato prašo pranešimu SignCertificate, o valdymo sistema jį pristato pranešimu CertificateSigned.
- Saugumo įvykiaiStotelė pranešimu SecurityEventNotification praneša, kas nutiko, pavyzdžiui, paleidimą iš naujo, mikroprogramos atnaujinimą arba valdymo sistemos atmestus prisijungimo duomenis.
Nuo OCPP 1.6 iki 2.0.1, pranešimas po pranešimo
OCPP 2.0.1 išlaikė daug 1.6 pranešimų pavadinimų, o kitus pervadino arba sujungė. Nuoroda atidaro pranešimą šiame žinyne arba 1.6J žinyne.
| OCPP 1.6 | OCPP 2.0.1 ir 2.1 | Kas pasikeitė |
|---|---|---|
| StartTransaction, StopTransaction | TransactionEvent | Vienas pranešimas su eventType Started, Updated arba Ended. Sesijos ID nustato stotelė, tai eilutė. |
| MeterValues | TransactionEvent, MeterValues | Rodmenys sesijos metu keliauja TransactionEvent pranešime; MeterValues perduoda rodmenis ne sesijos metu. |
| StatusNotification | StatusNotification, NotifyEvent | StatusNotification praneša tik jungties būseną su evseId ir connectorId. Klaidų kodai keliauja NotifyEvent pranešime, o 2.1 versija ir pasiekiamumui teikia pirmenybę NotifyEvent. |
| RemoteStartTransaction | RequestStartTransaction | Perduoda idToken objektą ir remoteStartId, kuris grįžta TransactionEvent pranešime, pradedančiame sesiją. |
| RemoteStopTransaction | RequestStopTransaction | Sustabdo sesiją pagal jos ID, kuris dabar yra eilutė. |
| ChangeConfiguration | SetVariables | Vienu pranešimu nustato kelis įrenginio modelio kintamuosius. |
| GetConfiguration | GetVariables, GetBaseReport, GetReport | Nuskaito pasirinktus kintamuosius arba prašo ataskaitos, kuri ateina NotifyReport pranešimais. |
| GetDiagnostics | GetLog | Prašo diagnostikos arba saugumo žurnalo. |
| DiagnosticsStatusNotification | LogStatusNotification | Praneša to įkėlimo eigą. |
| Reset | Reset | Immediate arba OnIdle vietoj Hard arba Soft, ir gali paleisti iš naujo vieną EVSE. |
| ChangeAvailability | ChangeAvailability | Per evse lauką nukreipiamas į stotelę, EVSE arba jungtį. |
| Authorize | Authorize | idToken objektas su tipu vietoj idTag eilutės. |
| BootNotification | BootNotification | Prideda paleidimo priežastį; stotelės duomenys yra chargingStation objekte. |
| Heartbeat, UnlockConnector, ClearCache, DataTransfer, ReserveNow, CancelReservation, SendLocalList, GetLocalListVersion, SetChargingProfile, ClearChargingProfile, GetCompositeSchedule, TriggerMessage, UpdateFirmware, FirmwareStatusNotification | Tie patys pavadinimai | Tie patys pranešimai, su laukais EVSE ir naujesniais duomenų tipais. |
Klausimai apie OCPP 2.0.1 ir 2.1
Open Charge Point Protocol 2.0.1 versija, kurią Open Charge Alliance paskelbė 2020 m. Ji pakeitė OCPP 2.0 ir, palyginti su 1.6, prideda įrenginio modelį, saugumo profilius, ISO 15118 palaikymą ir TransactionEvent. Ji nėra atgaliniu būdu suderinama su 1.6.
OCPP 2.1 paskelbtas 2025 m. sausį ir taip pat yra standartas IEC 63584-210. Jis prideda 27 pranešimus ir nė vieno nepašalina: dvikryptis įkrovimas (V2X) ir DER valdymas, ISO 15118-20, tarifai stotelėje, kuri pati skaičiuoja kainą, mokėjimas prie stotelės kortelių terminalu arba QR kodu, prioritetinis įkrovimas, dinaminiai įkrovimo profiliai, periodiniai įvykių srautai ir akumuliatorių keitimas. Virš pranešimų pasirinkite „Nauja 2.1 versijoje“, kad juos pamatytumėte.
2.1 schemos yra 2.0.1 schemos su pridėtais neprivalomais laukais, ir, pasak Open Charge Alliance, 2.0.1 versijai parašyta logika toliau veikia su dviem nedideliais pakeitimais: SignCertificate gali perduoti requestId, kurį CertificateSigned tada pakartoja, o NotifyMonitoringReport turi vieną naują privalomą lauką. Versija vis tiek suderinama kiekvienam ryšiui: WebSocket užmezgimo metu stotelė pasiūlo, pavyzdžiui, ocpp2.1, ocpp2.0.1 ir ocpp1.6, o valdymo sistema pasirenka vieną.
2.0.1 turi savo pranešimų rinkinį: įrenginio modelį vietoj konfigūracijos raktų, saugumo profilius, TransactionEvent vietoj StartTransaction ir StopTransaction, EVSE kaip lygmenį tarp stotelės ir jos jungčių bei pranešimus ISO 15118. Stotelė ir jos valdymo sistema, užmezgdamos ryšį, susitaria dėl vienos versijos. Lentelėje aukščiau pranešimai sugretinti, o OCPP 1.6J žinyne yra kiekvienas 1.6 pranešimas.
Išleidus OCPP 2.0, išryškėjo problemų, kurias buvo galima ištaisyti tik pakeitus pranešimų schemas, o 2.0 įgyvendinimas to negalėjo perimti. Open Charge Alliance pataisytai versijai suteikė atskirą numerį, 2.0.1, ir pataria įgyvendinti tik 2.0.1. Specifikacijoje OCPP 2.0 reiškia 2.0.1, nebent nurodyta kitaip.
Open Charge Alliance abi nemokamai skelbia savo svetainėje su JSON schema kiekvienam pranešimui ir klaidų sąrašu. Šis žinynas remiasi JSON schemomis ir 2 specifikacijos dalimi. Jei jie skiriasi, teisi specifikacija ir jos klaidų sąrašas.
Patikrinkite stotelių duomenų bazėje: 102 stotelės joje nurodo OCPP 2.0.1, o 4 nurodo 2.1. Tai paprastai nurodyta ir duomenų lape. Kelias versijas palaikanti stotelė, jungdamasi pasiūlo jas visas, o valdymo sistema pasirenka vieną.
OCPP 1.6J su Plugchoice
Plugchoice jau dabar prijungia OCPP 1.6J stoteles, priklausomai nuo modelio, mikroprogramos ir konfigūracijos.