OCPP, şarj cihazı ile yönetim yazılımı arasındaki iletişimin büyük bölümünü standart hale getirir. Ama her üreticinin kendine özgü özellikleri vardır: ekrana özel mesaj yazdırmak, cihaza özgü sensör verisi göndermek, yerel bir ödeme terminaliyle konuşmak gibi. Standartta karşılığı olmayan bu veriler için OCPP'nin sunduğu kaçış kapısı DataTransfer mesajıdır.

Mesajın yapısı

DataTransfer her iki yönde de gönderilebilir: cihazdan CSMS'e veya CSMS'ten cihaza. Üç alan içerir:

  • vendorId (zorunlu): Veriyi tanımlayan üretici veya kuruluş. Genellikle ters alan adı biçimindedir, örneğin com.ornekmarka.
  • messageId (isteğe bağlı): Mesajın türünü belirten etiket.
  • data (isteğe bağlı): Taşınan veri. Metin olarak gönderilir; içinde genellikle JSON bulunur.

Örnek:

[2, "12001", "DataTransfer", {"vendorId": "com.ornekmarka", "messageId": "CableTemperature", "data": "{\"connector\":1,\"tempC\":48}"}]

Cevapta bir status ve isteğe bağlı data döner. Durum değerleri:

  • Accepted: Mesaj anlaşıldı ve işlendi.
  • Rejected: Mesaj anlaşıldı ama kabul edilmedi.
  • UnknownVendorId: Karşı taraf bu vendorId'yi tanımıyor.
  • UnknownMessageId: vendorId biliniyor ama messageId tanınmıyor.

Nerelerde kullanılır?

  • Ekran mesajları: OCPP 1.6J'de standart bir ekran mesajı komutu yoktur. Bazı üreticiler fiyat veya karşılama metnini DataTransfer ile gösterir. OCPP 2.0.1 ve 2.1'de bunun yerini SetDisplayMessage aldı.
  • Ek sensör verileri: Kablo sıcaklığı, kapı açık sensörü, fan durumu gibi.
  • Ödeme terminali entegrasyonu: Cihaza takılı kart okuyucunun işlem sonuçları.
  • Yerel ağ özellikleri: Üreticiye özel yük paylaşım bilgileri.
  • Ülkeye özgü gereksinimler: Bazı pazarlarda zorunlu ek veri alanları.

Riskler ve sınırlar

DataTransfer güçlüdür ama dikkatli kullanılmazsa OCPP'nin en büyük avantajı olan birlikte çalışabilirliği zayıflatır.

  • Kilitlenme riski: Bir işlevi tamamen DataTransfer'e dayandırırsanız, o işlev yalnızca o üreticinin cihazları ve onu destekleyen yazılımlarla çalışır.
  • Dokümantasyon eksikliği: vendorId ve messageId değerlerinin anlamları üreticiden üreticiye değişir ve çoğu zaman iyi belgelenmez.
  • Test zorluğu: Standart test araçları bu mesajların içeriğini doğrulayamaz.
  • Güvenlik: data alanı serbest metindir; gelen veri mutlaka doğrulanmalıdır.

Doğru yaklaşım

  1. Önce standarda bakın: İhtiyacınız olan işlev OCPP'de zaten varsa (örneğin MeterValues ile sıcaklık ölçümü), DataTransfer kullanmayın.
  2. Yeni sürümü değerlendirin: OCPP 2.0.1 ve 2.1, 1.6J'de DataTransfer gerektiren birçok işlevi standart hale getirdi.
  3. Belgeleyin: Kullandığınız her vendorId ve messageId için alanları, örnek veriyi ve beklenen cevabı yazılı tutun.
  4. Kontrollü kabul edin: Tanımadığınız mesajlara UnknownVendorId veya UnknownMessageId dönmek, karşı tarafın davranışını öngörülebilir kılar.

Loglarda DataTransfer gördüğünüzde

Yeni bir cihaz modeli bağlandığında loglarda çok sayıda DataTransfer görebilirsiniz. Bunların ne olduğunu üreticiden öğrenin; bazıları yalnızca teşhis amaçlıdır ve göz ardı edilebilir. Yanıtsız kalan veya sürekli UnknownVendorId alan mesajlar, cihazın beklediği bir entegrasyonun eksik olduğunu gösterebilir. Bu konuda OCPP log kayıtları nasıl okunur yazımız size yol gösterebilir.

OCPP 2.0.1 ve 2.1'de DataTransfer

Yeni sürümlerde de DataTransfer mesajı korunmuştur ve aynı mantıkla çalışır. Bununla birlikte 2.0.1'in cihaz modeli, üreticilere özel bileşen ve değişkenleri standart bir yapı içinde tanımlama imkânı verir. Bu sayede daha önce DataTransfer ile taşınan birçok yapılandırma ve izleme verisi artık GetVariables, SetVariables ve NotifyReport ile yönetilebilir. Yeni bir entegrasyon tasarlıyorsanız önce cihaz modeliyle çözüp çözemeyeceğinizi değerlendirmeniz önerilir.

Yönetim yazılımı tarafında saklama

Gelen DataTransfer mesajlarını işlemeseniz bile ham haliyle saklamak faydalıdır. İleride bir üreticiyle sorun çözerken veya yeni bir özelliği devreye alırken bu kayıtlar, cihazın gerçekte ne gönderdiğini gösteren tek kaynak olur.

Sonuç

DataTransfer, OCPP'nin standart mesajlarının yetmediği yerlerde esneklik sağlayan bir araçtır. Ancak her kullanım, birlikte çalışabilirlikten bir parça ödün vermek anlamına gelir. Üreticy'nin OCPP yazılımı donanımdan bağımsız çalışır; standart mesajlarla yönetilebilen her işlevi markadan bağımsız olarak sunar ve tüm DataTransfer trafiğini loglarda görünür kılar.