OCPP 1.5 ve 1.6 dönemine ait teknik belgelerde "OCPP-J" ve "OCPP-S" ifadeleriyle sık karşılaşırsınız. İkisi aynı protokolün farklı taşıma (transport) yöntemleridir. Hangi yöntemin kullanıldığı; cihazın ağ ayarlarını, güvenlik duvarı kurallarını ve hangi yazılımla çalışabileceğini doğrudan etkiler.

OCPP-S nedir?

OCPP-S'deki "S", SOAP kelimesinden gelir. Mesajlar XML formatında kodlanır ve HTTP istekleriyle taşınır. OCPP'nin ilk sürümleri (1.2 ve 1.5) yalnızca SOAP kullanıyordu. Bu yapıda iki taraf da birer web servisi gibi davranır: cihaz merkezi sisteme istek gönderir, merkezi sistem de cihaza ayrı bir HTTP isteğiyle ulaşır.

Buradaki temel sorun şudur: merkezi sistemin cihaza istek gönderebilmesi için cihazın internetten erişilebilir bir adresi olması gerekir. Mobil hat veya NAT arkasındaki bir cihaz için bu çoğu zaman mümkün değildir; port yönlendirme ya da VPN gibi ek çözümler gerektirir.

OCPP-J nedir?

OCPP-J'deki "J", JSON demektir. Mesajlar hafif JSON dizileri olarak kodlanır ve tek bir kalıcı WebSocket bağlantısı üzerinden taşınır. Bağlantıyı her zaman cihaz başlatır. Bağlantı açıldıktan sonra iki taraf da aynı kanal üzerinden istediği an mesaj gönderebilir.

Bu yaklaşımın sonuçları:

  • Cihazın sabit bir IP adresine ya da port yönlendirmesine ihtiyacı yoktur; 4G modem arkasında bile çalışır.
  • Mesajlar XML'e göre çok daha küçüktür; mobil veri tüketimi azalır.
  • Merkezi sistem, uzaktan başlatma veya reset gibi komutları anında iletebilir.
  • WSS (TLS) ile şifreleme kolayca eklenebilir.

Karşılaştırma

  • Format: OCPP-S XML, OCPP-J JSON kullanır.
  • Taşıma: OCPP-S her mesaj için HTTP isteği, OCPP-J tek kalıcı WebSocket kullanır.
  • Bağlantı yönü: OCPP-S'de iki taraf da birbirine bağlanır; OCPP-J'de bağlantıyı yalnızca cihaz açar.
  • Ağ gereksinimi: OCPP-S genellikle erişilebilir IP veya VPN ister; OCPP-J NAT arkasında çalışır.
  • Veri tüketimi: OCPP-J belirgin şekilde daha azdır.
  • Güncel kullanım: OCPP 2.0.1 ve 2.1 yalnızca JSON/WebSocket tanımlar. SOAP sadece 1.x sürümlerinde vardır.

Hangi sürüm hangi taşımayı kullanır?

  • OCPP 1.2: Yalnızca SOAP.
  • OCPP 1.5: SOAP; JSON taslak olarak sonradan kullanıldı.
  • OCPP 1.6: Hem 1.6S hem de 1.6J. Piyasa ezici şekilde 1.6J'yi tercih etti.
  • OCPP 2.0.1 ve 2.1: Yalnızca JSON üzerinden WebSocket.

Ayrıntılı açıklama için OCPP 1.6J nedir yazımıza bakabilirsiniz.

Elinizde OCPP-S cihaz varsa ne yapmalı?

Eski bir kurulumda SOAP kullanan cihazlarınız olabilir. Birkaç seçenek vardır:

  1. Firmware güncellemesi: Birçok üretici, aynı donanıma 1.6J desteği getiren güncellemeler yayımlamıştır. İlk iş üreticiye sorun.
  2. Protokol dönüştürücü (proxy): SOAP mesajlarını JSON'a çeviren bir ara katman kullanılabilir. Bu geçici bir çözümdür ve bakım yükü getirir.
  3. Cihaz değişimi: Donanım eskiyse ve güncelleme yoksa, uzun vadede en temiz çözüm budur.

Pek çok modern CSMS, SOAP desteğini tamamen bırakmıştır. Üreticy de cihaz bağlantısı için OCPP-J (WS/WSS) kullanır.

Güvenlik açısından fark

SOAP tabanlı kurulumlarda merkezi sistemin cihaza ulaşabilmesi için cihaz üzerinde dışarıya açık bir port bulunur. Bu port, internet taramalarında kolayca bulunabilir ve yetkisiz erişim riskini artırır. OCPP-J'de ise dışarıya açık bir servis yoktur; cihaz yalnızca giden bir bağlantı kurar. WSS ile şifreleme ve kullanıcı adı/parola ya da istemci sertifikası kullanıldığında bağlantı hem gizli hem de doğrulanmış olur. Bu, OCPP-J'nin tercih edilmesinin en az veri tasarrufu kadar önemli bir nedenidir.

Sonuç

OCPP-S, protokolün ilk yıllarından kalma, XML ve HTTP tabanlı bir taşıma yöntemidir. OCPP-J ise JSON ve WebSocket kullanarak daha hafif, daha güvenli ve mobil ağlara uygun bir çözüm sunar. Yeni bir cihaz alıyorsanız OCPP-J (1.6J, 2.0.1 veya 2.1) desteği arayın. Cihazınızı OCPP sunucusuna bağlama rehberimiz ilk kurulumda adım adım yol gösterir.