OCPI (Open Charge Point Interface), şarj ağlarının ve e-mobilite sağlayıcılarının konum, oturum, fiyat ve faturalama kayıtlarını paylaştığı protokoldür. 2.2.1 sürümü bugün Avrupa'da en yaygın uygulanan sürümdür. Bir CSMS'i roaming ortağına ya da platformuna bağlıyorsanız zamanınızın çoğu bu modüllerin içinde geçer.
Bu rehber her modülü, verinin kim tarafından gönderilip kim tarafından alındığını ve entegrasyonların genellikle nerede bozulduğunu anlatıyor. Genel tablo için OCPI nedir ve OCPP ile farkı yazılarımızdan başlayın.
- OCPI 2.2.1 yapılandırma modülleri (Versions, Credentials) ve işlevsel modüller olarak ikiye ayrılır.
- Her işlevsel modülün bir Sender ve bir Receiver arayüzü vardır; hangisini uygulayacağınız rolünüze bağlıdır.
- Veri gerçek zamanlı push ile gönderilebilir veya sayfalamayla pull edilebilir; sağlam entegrasyonlar ikisini de destekler.
- CDR'lar roaming'in finansal gerçeğidir; doğru, nihai ve izlenebilir olmalıdır.
OCPI 2.2.1'in yapısı
OCPI bir REST/JSON protokolüdür. Her taraf HTTPS uç noktaları sunar ve karşı tarafın uç noktalarını çağırır. Modüller amaçlarına göre gruplanır ve her modül bir arayüz çifti olarak uygulanır: Sender verinin sahibidir, Receiver veriyi saklar ya da üzerinde işlem yapar. Örneğin bir CPO, Locations için Sender, Tokens için Receiver'dır.
2.2 sürümü platformlar (hub), rol tanımları ve yeni modüller için açık destek getirdi; 2.2.1 ise 2.2'yi düzeltip netleştirdi. 2.3.0 gibi sonraki sürümler yeni özellikler ekler, ancak platformlar ve ortaklar arasında ortak taban hâlâ 2.2.1'dir.
Yapılandırma modülleri
Versions
Versions modülü ortağa hangi OCPI sürümlerini desteklediğinizi ve her sürüm için uç nokta listesini ve rollerini bildirir. Bir entegrasyondaki ilk çağrı her zaman budur.
Credentials ve kayıt
Credentials güvenli bağlantıyı kurar. A tarafı bir token'ı (genellikle Token A) kanal dışında alır, B tarafının Versions uç noktasını çağırır ve yeni bir Token B içeren kendi kimlik bilgilerini POST eder. B tarafı Token C ile cevap verir; A bundan sonraki tüm çağrılarda bunu kullanır. Credentials nesnesi ayrıca her tarafın CPO, EMSP ya da HUB gibi rollerini ülke kodu ve parti kimliğiyle listeler.
İşlevsel modüllere genel bakış
| Modül | Sender (tipik) | Receiver (tipik) | Amaç |
|---|---|---|---|
| Locations | CPO | eMSP | Sahalar, EVSE'ler, soketler, durum ve çalışma saatleri |
| Sessions | CPO | eMSP | Süren şarj oturumları, o ana kadarki enerji ve maliyet |
| CDRs | CPO | eMSP | Faturalama için nihai şarj detay kayıtları |
| Tariffs | CPO | eMSP | Fiyatlar ve yapıları |
| Tokens | eMSP | CPO | RFID kartlar ve uygulama kimlikleri, gerçek zamanlı yetkilendirme |
| Commands | eMSP | CPO | Uzaktan başlatma, durdurma, rezervasyon, iptal, kilit açma |
| ChargingProfiles | Akıllı şarj tarafı | CPO | Şarj limitlerini ayarlama ve okuma |
| HubClientInfo | Platform | Bağlı taraflar | Platforma bağlı tarafların durumu |
Locations
Locations üç seviyeli bir hiyerarşi izler: bir Location (saha) EVSE'leri, her EVSE de soketleri içerir. EVSE'ler sürücülerin uygulamalarda gördüğü AVAILABLE, CHARGING veya OUTOFORDER gibi durumları taşır ve her birinin doğru biçimlendirilmiş bir EVSE kimliği olmalıdır. Soketler standart, format, akım tipi, gerilim, amper ve geçerli tarife kimliklerini tanımlar.
Durum değişikliklerini oluştukları anda ortaklara push edin. Ortak uygulamada müsait görünen ama aslında arızalı olan bir cihaz kızgın sürücüler ve destek talepleri demektir.
Sessions
Sessions modülü eMSP'nin sürücüye canlı ilerlemeyi göstermesini sağlar: verilen kWh, başlangıç zamanı ve o ana kadarki maliyet. CPO, şarj başladığında oturumu oluşturur ve şarj boyunca günceller. Oturumlar faturalamada kullanılmaz; bu CDR'ların işidir.
CDRs
CDR, bir şarj oturumunun nihai ve değişmez kaydıdır: kimlik, konum, başlangıç ve bitiş zamanı, enerji, şarj dönemleri, uygulanan tarifeler ve toplam tutar. CDR'lar bir kez oluşturulur ve güncellenmez; düzeltmeler bir alacak (credit) CDR'ı ile yapılır. Ayrıntılar için şarj detay kaydı rehberimize bakın.
Tariffs
Tariffs; ENERGY, TIME, PARKING_TIME ve FLAT gibi fiyat bileşenlerini, günün saati, haftanın günü, minimum veya maksimum kWh ve güç aralıkları gibi kısıtlarla tanımlar. Bu yapı güçlüdür ama yanlış kullanmak kolaydır. Tam olarak faturalayacağınız tutarı üreten tarifeler yayınlayın; aksi hâlde ortaklar CDR'lara itiraz eder. Ticari tasarım için tarife modelleri yazımıza bakın.
Tokens
Tokens, eMSP'nin geçerli sürücü kimlikleri listesidir; genellikle RFID UID'leri ve uygulama token'larıdır. CPO hızlı yetkilendirme için token'ları yerel olarak önbelleğe alabilir, bilinmeyen token'lar için gerçek zamanlı yetkilendirme de isteyebilir. İyi bir CSMS, ortak yavaş ya da çevrim dışıyken önbelleği kullanır ve bunu cihazın kendi RFID yetkilendirme mantığıyla birleştirir.
Commands
Commands, eMSP'nin CPO'dan START_SESSION, STOP_SESSION, RESERVE_NOW, CANCEL_RESERVATION veya UNLOCK_CONNECTOR istemesini sağlar. Komutlar asenkrondur: CPO önce komutun kabul edildiğini bildirir, cihaz cevap verince asıl sonucu bir response URL'ine gönderir. CSMS bunları içeride RemoteStartTransaction gibi OCPP mesajlarına çevirir.
ChargingProfiles
ChargingProfiles, bir akıllı şarj hizmet sağlayıcısının aktif oturuma limit koymasını, aktif profili okumasını veya temizlemesini sağlar. Sonuçlar yine asenkrondur. Şarjı CPO yerine bir enerji hizmetinin optimize ettiği durumlarda işe yarar.
HubClientInfo
Bir platform üzerinden bağlıysanız HubClientInfo size başka hangi tarafların bağlı ve erişilebilir olduğunu söyler. Çevrim dışı ortaklara istek göndermemek için kullanın.
Push, pull ve sayfalama
Modüllerin çoğu hem push'u (Sender her değişiklikte Receiver'ı çağırır) hem pull'u (Receiver listeleri periyodik olarak çeker) destekler. Pull; date_from, date_to, offset ve limit kullanır, sayfalama bilgisi Link, X-Total-Count ve X-Limit başlıklarında döner. Gerçek zamanlı güncellemeler için push'u, kaçan mesajları yakalamak için pull'u güvenlik ağı olarak kullanın.
OCPI durum kodları
| Aralık | Anlam | Örnekler |
|---|---|---|
| 1xxx | Başarılı | 1000 genel başarı |
| 2xxx | İstemci hataları | 2001 geçersiz ya da eksik parametre, 2003 bilinmeyen konum, 2004 bilinmeyen token |
| 3xxx | Sunucu hataları | 3001 istemcinin API'si kullanılamıyor, 3002 desteklenmeyen sürüm |
| 4xxx | Platform hataları | 4001 bilinmeyen alıcı, 4002 iletilen istekte zaman aşımı |
Sık yapılan entegrasyon hataları
- Token kodlaması: OCPI 2.2, Authorization başlığındaki token'ın Base64 kodlanmasını bekler; uyumsuzluk sessiz 401 hatalarına yol açar.
- Saat dilimleri: Tüm zaman damgaları UTC'dir; yerel çalışma saatleri Location'ın saat dilimi alanına aittir.
- Parti kimlikleri: Ülke kodu ve parti kimliği her nesnede eşleşmelidir, yoksa ortaklar reddeder.
- Tarife uyumsuzluğu: Yayınlanan tarifeden yeniden hesaplanamayan CDR tutarı anlaşmazlık doğurur.
- Eksik yeniden deneme: Başarısız push tekrar denenmeli, periyodik pull'lar boşlukları onarmalıdır.
Sıkça sorulan sorular
OCPI 2.2.1, 2.1.1 ile geriye dönük uyumlu mu?
Tamamen değil. Veri modelleri ve bazı akışlar değişti; bu yüzden taraflar Versions modülüyle ortak bir sürümde anlaşır. Birçok platform ikisini de destekler.
Tüm modülleri uygulamak zorunda mıyım?
Hayır. Rolünüze ve ortak anlaşmalarınıza uygun modülleri uygulayın. Bir CPO'nun genellikle Locations, Sessions, CDRs, Tariffs, Tokens ve Commands'a ihtiyacı vardır.
Sessions ile CDR arasındaki fark nedir?
Sessions canlıdır ve şarj sırasında değişir. CDR'lar şarj bittikten sonra gönderilen nihai kayıtlardır ve faturalamada kullanılır.
Üreticy, OCPP 1.6J, 2.0.1 ve 2.1 ile birlikte OCPI roaming'i her ortak için tam mesaj kayıtlarıyla destekler. Platformu inceleyin veya ekibimizle konuşun.
