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.

Öne çıkanlar
  • 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ülSender (tipik)Receiver (tipik)Amaç
LocationsCPOeMSPSahalar, EVSE'ler, soketler, durum ve çalışma saatleri
SessionsCPOeMSPSüren şarj oturumları, o ana kadarki enerji ve maliyet
CDRsCPOeMSPFaturalama için nihai şarj detay kayıtları
TariffsCPOeMSPFiyatlar ve yapıları
TokenseMSPCPORFID kartlar ve uygulama kimlikleri, gerçek zamanlı yetkilendirme
CommandseMSPCPOUzaktan başlatma, durdurma, rezervasyon, iptal, kilit açma
ChargingProfilesAkıllı şarj tarafıCPOŞarj limitlerini ayarlama ve okuma
HubClientInfoPlatformBağlı taraflarPlatforma 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ıkAnlamÖrnekler
1xxxBaşarılı1000 genel başarı
2xxxİstemci hataları2001 geçersiz ya da eksik parametre, 2003 bilinmeyen konum, 2004 bilinmeyen token
3xxxSunucu hataları3001 istemcinin API'si kullanılamıyor, 3002 desteklenmeyen sürüm
4xxxPlatform 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.