Dökümantasyon

MQTT uygulama alanları

MQTT, merkezi bir mesaj aracısı olan bir internet protokolüdür. Bu mesaj aracısı ile katılımcılar belirli "konulara" abone olabilir ve konulara mesaj gönderebilir. CFos Şarj Yöneticisi, belirli konulardaki mesajları dinleyebilir ve böylece MQTT aracılığıyla kontrol edilebilir. Ayrıca yönettiği cihazların durumunu da iletebilir. CFos Power Brain Wallbox ayrıca MQTT aracılığıyla kontrol edilebilir ve durumunu iletebilir. Bu, bir ev otomasyon sistemine bağlanırken, endüstriyel kontrol (M2M) ve izleme ve kayıt için kullanışlıdır. Tüm konular cfos_mqtt ile başlar. Birden fazla cFos MQTT cihazını bir MQTT aracısına bağlamak istiyorsanız, konu isteğe bağlı olarak yapılandırma altında ayarlanabilen cfos_mqtt_<seri numarası>/ ile başlayabilir. Yapılandırmada, varsayılan MQTT aracısı için bir URL de ayarlayabilirsiniz. URL'ler isteğe bağlı olarak mqtt:// ve mqtts: // ile başlayabilir. Mqtts:// ile cFos Şarj Yöneticisi veya cFos Power Brain Wallbox bir TLS bağlantısı kurar. Şifrelenmemiş bağlantılar için 1883 ve TLS bağlantıları için 8883 standart bağlantı noktaları kullanılır. Ancak, URL'de bir bağlantı noktası da belirtebilirsiniz. Kullanıcı adı ve parolayı normal URL gösteriminde belirtebilirsiniz, örneğin mqtt://user:password@192.168.2.111. cFos Charging Manager yapılandırmasında bir MQTT brokerı belirtirseniz, tek bir broker belirtebilir veya sadece mqtt yazabilirsiniz. Bu durumda, yapılandırmada depolanan varsayılan broker kullanılır.

CFos Charging Manager hem MQTT 3.1.1 hem de MQTT 5'i destekler. URL'nin mqtt3:// veya mqtt5:// (şifreli bağlantı için mqtts3:// ve mqtts5://) ile başlamasına izin verirseniz, protokol sürümünü belirlersiniz. Varsayılan MQTT 3.1.1'dir. cFos Charging Manager, bir hata mesajı görüntülenirse MQTT 5 için MQTT 3.1.1'e geri dönmeye çalışır. Bu eski Mosquitto brokerları ile çalışır, ancak diğer brokerlar ile çalışmayabilir.

Not: MQTT kurulumu yönetici şifresi gerektirdiğinden, Şarj Yöneticisi verileri buna göre işler. Bu nedenle, yalnızca yönetici şifresiyle erişilebilen veriler kasıtlı olarak gönderilir.

MQTT aracıları hakkında not: Stefan G. (#diebestenuserderwelt) sayesinde ioBroker'da yerleşik MQTT aracısını test edebildik. Bu MQTT 3.1.1 aracısı (Şubat 2023 itibariyle) standartlara uygun olmayan çeşitli şekillerde davranıyor: Bağlantı girişimleri bir hata mesajı olmadan sessizce sonlandırılıyor, yük bazen PUBLISH paketlerinde eksik oluyor, PUBLISH paketleri görünüşe göre iki kez gönderiliyor (bu bir yapılandırma ayarı ile kapatılabilir mi?). Bu, API istekleri birden fazla kez yürütülebileceğinden, bu aracının Şarj Yöneticisi API'sini kontrol etmek için uygun olmadığı anlamına gelir. MQTT uygulamamızın mümkün olduğunca çok sayıda broker ile uyumlu olmasıyla ilgilenmemize rağmen, şu anda ioBroker için Mosquitto kullanılmasını öneriyoruz.

"HTTP Girişi" cihaz tipi aracılığıyla sayaçların ve duvar kutularının entegrasyonu.

Bu cihazları HTTP üzerinden beslemek yerine (bkz. HTTP API -> HTTP sayaçları ve wallbox'lar), bu cihazlar MQTT'yi de dinleyebilir. Cihaz adresi olarak mqtt veya bir MQTT broker URL'si girin. Ardından ilgili sayaç veya wallbox cfos_mqtt/set/<cihaz kimliği> konusunu dinler, örneğin M1 cihaz kimliğine sahip bir sayaç için cfos_mqtt/set/M1. HTTP giriş ölçüm cihazı daha sonra "HTTP ölçüm cihazları ve wallbox'lar" altındaki HTTP API 'sinde açıklandığı gibi bir JSON dizesini mesaj olarak bekler. Bu nedenle MQTT kaynağınız verileri bu formatta göndermelidir. Bu, verileri başka bir kaynaktan (örneğin bir ev otomasyon sistemi) alarak ve ardından Şarj Yöneticisine besleyerek cFos Şarj Yöneticisi tarafından desteklenmeyen cihazları entegre etmenize olanak tanır.
Not: Kaynaktan gelen veriler HTTP sayacının beklediğinden farklı bir formatta ise, özel bir sayaç da oluşturabilirsiniz. MQTT için bu aşağıda açıklanmıştır.


Örnek: Bir HTTP giriş sayacı oluşturdunuz ve cihaz kimliği olarak M3'e sahip. Adres olarak Mosquitto aracısının adresini girdiniz, örneğin mqtt://192.168.2.30. Mosquitto'nun çalıştığı bilgisayarda komut satırına aşağıdaki komutu girerseniz:
mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
sayaç daha sonra yukarıdaki değerleri içermelidir.

Şarj Yöneticisi cihazlarının durumunu aktarma

Şarj Yöneticisi yapılandırmasında, Şarj Yöneticisinin daha sonra cfos_mqtt/get/dev_info konusu altında tüm cihazların durumunu yayınlayacağı bir MQTT aracı URL'si (veya standart aracı için mqtt) belirtebilirsiniz. Bunu HTTP get_dev_info'dan bilinen formatta iletir. Bu size cihazların tüm değerlerini, örneğin sayaçların güç değerleri veya wallbox'ların durumu gibi, kullanıcı arayüzünde de görülebildikleri şekilde verir. Yalnızca tek tek cihazlara abone olmak istiyorsanız, "MQTT aracılığıyla bilgi yayınla" onay kutusunu devre dışı bırakabilir ve bunun yerine "Görüntüle" altındaki tek tek cihazların ayarlarında "MQTT aracılığıyla bilgi yayınla" seçeneğini işaretleyebilirsiniz. Ardından, ilgili cihaz hakkında ilgili bir JSON dizesi cfos_mqtt/get/<device-ID> başlığı altında yayınlanır. Ek olarak, cfos_mqtt/get/params başlığı altındaki tüm global değerlere abone olabilirsiniz, çünkü bunlar "params" altında HTTP get_dev_info'dan bilinen formatta çıktı olarak verilir.

mQTT aracılığıyla cFos Şarj Yöneticisi API'sini kontrol edin

CFos Charging Manager yapılandırmasında, "MQTT üzerinden API erişimi için Broker" altında bir MQTT broker URL'si (veya standart brokerlar için mqtt) belirtebilirsiniz. Bu değer boş değilse, cFos Charging Manager cfos_mqtt/api/ ile başlayan tüm konulara abone olur. Daha sonra bu konular altındaki mesajları, konu adı /cnf? ile başlayan bir HTTP URL'si gibi yorumlar ve HTTP API'sine iletir. Ücretlendirme Yöneticisi daha sonra HTTP API yanıtını cfos_mqtt/api_res konusu altında JSON olarak yayınlar. Bu şekilde, HTTP API'sinin neredeyse tamamı MQTT aracılığıyla kontrolünüz altında olur. İstisnalar, uzun JSON yanıtları veren API çağrılarıdır. Örnek: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1, API işlevi set_cm_var ile Şarj Yöneticisi değişkeni x'i 1'e ayarlar. cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 altındaki bir mesaj, E1 cihaz kimliğine sahip wallbox için RFID 5678'i girer (ayrıca genişletilmiş RFID işlevlerimize bakın).
HTTP POST aracılığıyla iletilen veriler, konu altındaki mesaja yerleştirilebilir.

Örnek: Şarj Yöneticisi için mevcut maksimum toplam akımı periyodik olarak değiştirin:
"MQTT üzerinden API erişimi için aracılar" altındaki genel Şarj Yöneticisi ayarları altında aracınızı girin (veya "Yapılandırma" altında depolanan varsayılan aracı kullanılacaksa sadece mqtt). Ardından, MQTT kullanarak
cfos_mqtt/api/cmd=set_params
konusuna aşağıdaki içeriğe sahip bir JSON nesnesi yayınlayın:
{"max_total_cur_prc": p}
burada p, önceden ayarlanmış maksimum toplam akışın hangi kısmının alınması gerektiğinin yüzde cinsinden bir göstergesidir.
Not: Bazı HTTP API çağrıları Şarj Yöneticisinin yapılandırmayı kaydetmesine neden olur. Bunları çok sık çalıştırırsanız, flaş (cFos Power Brain veya cFos Wallbox Booster'da) veya Raspberry'deki SD kart aşınacaktır. Bu nedenle tek parametre "max_total_cur_prc" ile "set_params" API çağrısı parametreleri kaydetmez.

Wallbox'ları MQTT ile kontrol edin

CFos Şarj Yöneticisi "Yük Yönetimi" modunda değil de "Gözlem" modundaysa, tüm wallbox'ları kendiniz kontrol etmek için MQTT'yi kullanabilirsiniz. Bu özellikle "Gözlemle" modunda köle olarak çalıştırılan cFos Power Brain wallbox'ları için geçerlidir. Bunu yapmak için, MQTT altındaki Şarj Yöneticisi Ayarlarında "Wallbox'ların kontrolünü etkinleştir" seçeneğini işaretlemelisiniz. Ardından cFos Şarj Yöneticisi, MQTT konusu cfos_mqtt/ctl 'yi dinler ve bir JSON nesnesi içeren mesajları bekler. Bu nesne, ad olarak cihaz kimliğine sahip özellikler olarak alt nesnelere sahiptir. Alt nesneler şuna benzer: {"cur": c, "ena": b, "wke": b}, burada c mA cinsinden şarj akımıdır ve b sırasıyla doğru veya yanlış olabilir. "ena": false wallbox'ta şarjı devre dışı bırakır, "wke": true wallbox'a bir "arabayı uyandır" komutu göndermeye çalışır (şu anda yalnızca cFos Power Brain wallbox'larla mümkündür). Ayrıca "cur", "ena" ve "wke "yi atlayabilir ve böylece yalnızca belirli kontrol işlevlerini yürütebilirsiniz.
Örnek: {"E1":


{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000}}

Wallbox'un şarj akımını cihaz kimliği ile 8A olarak ayarlar, şarjı etkinleştirir ve aracı uyandırmaya çalışır. Ayrıca, Wallbox E2 için şarj akımı 10A olarak ayarlanır.

MQTT aracılığıyla günlük kaydı ve işlem günlüğü gönderme

Sistem günlüğündeki günlük girdilerinin iletimi için "Yapılandırma" altında bir MQTT aracı URL'si belirleyebilirsiniz. CFos Şarj Yöneticisi daha sonra tüm günlük girdilerini cfos_mqtt/log başlığı altında yayınlar. Bu, Şarj Yöneticisi günlüklerini uzaktan izlemenizi sağlar. "Yapılandırma" altında işlem günlüğü girdileri için bir MQTT aracı URL'si de belirtebilirsiniz. Daha sonra tüm ücretlendirme işlemleri cfos_mqtt/ta_log başlığı altında gönderilir. Bu, ücretlendirme işlemi muhasebe verilerinin uzaktan değerlendirilmesine ve başka bir sistemde ücretlendirme işlemi yedeklerinin oluşturulmasına olanak tanır. Bir şarj işlemi, şarj fişi takıldığında başlar ve çıkarıldığında sona erer.

MQTT ile kullanıcı tanımlı sayaçlar

MQTT için rtype = 2 kullanarak özel s ayaçlar oluşturabilirsiniz. Bu sayaçlar HTTP sayaçlarına benzer şekilde tanımlanır (rtype = 1). Ancak, buradaki adresler HTTP URL'leri değil, MQTT konularıdır.




Örnek: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Burada kullanıcı tanımlı sayaç /test_topic3 konusuna abone olur ve "power_w" özelliğine sahip bir JSON nesnesi bekler, örneğin {"power_w": 1234}. Farklı sayaç değişkenleri farklı konulara sahip olabilir ve ilgili konu altında bir mesaj yayınlanır yayınlanmaz güncellenir.