MQTT alkalmazási területek

Az MQTT egy központi üzenetközvetítővel rendelkező internetes protokoll. Ezzel az üzenetközvetítővel a résztvevők feliratkozhatnak bizonyos "témákra", és üzeneteket küldhetnek a témáknak. A cFos Charging Manager képes meghallgatni az egyes témakörökre vonatkozó üzeneteket, és így MQTT-n keresztül vezérelhető. Az általa kezelt eszközök állapotát is képes közölni. A cFos Power Brain Wallbox MQTT-n keresztül is vezérelhető, és továbbíthatja állapotát. Ez hasznos otthoni automatizálási rendszerhez, ipari vezérléshez (M2M), valamint megfigyeléshez és rögzítéshez. Minden téma a cfos_mqtt kezdőbetűvel kezdődik. Ha több cFos MQTT eszközt szeretne egy MQTT brókerhez csatlakoztatni, akkor a téma opcionálisan a cfos_mqtt_<sorszám>/ kezdetű, konfiguráció alatt beállítható téma lehet. A konfigurációban megadhatja az alapértelmezett MQTT bróker URL-címét is. Az URL-címek opcionálisan kezdődhetnek mqtt:// és mqtts: // karakterekkel. Az mqtts:// segítségével a cFos Charging Manager vagy a cFos Power Brain Wallbox TLS-kapcsolatot hoz létre. A titkosítatlan kapcsolatokhoz a 1883-as, a TLS-kapcsolatokhoz pedig a 8883-as szabványos portokat használják. Az URL-címben azonban portot is megadhat. A felhasználónevet és a jelszót a szokásos URL jelöléssel adhatja meg, pl. mqtt://user:password@192.168.2.111. Ha a cFos Charging Manager konfigurációjában megad egy MQTT brókert, akkor vagy megadhat egy egyedi brókert, vagy egyszerűen csak mqtt-t írhat. Ebben az esetben a konfigurációban tárolt alapértelmezett bróker kerül felhasználásra.

A cFos Charging Manager támogatja az MQTT 3.1.1 és az MQTT 5-t. Ha az URL-cím mqtt3:// vagy mqtt5://-vel kezdődik (mqtts3:// és mqtts5:// titkosított kapcsolat esetén), akkor meghatározza a protokollverziót. Az alapértelmezett az MQTT 3.1.1. A cFos Charging Manager hibaüzenet megjelenése esetén megpróbál visszaváltani az MQTT 3.1.1-re az MQTT 5 esetében. Ez a régebbi Mosquitto brókerekkel működik, de más brókerekkel nem feltétlenül.

Megjegyzés: Mivel az MQTT beállításához admin jelszóra van szükség, a Charging Manager ennek megfelelően kezeli az adatokat. Ezért szándékosan olyan adatok kerülnek elküldésre, amelyek csak admin jelszóval érhetők el.

Megjegyzés az MQTT brókerekről: Stefan G.-nek (#diebestenuserderwelt) köszönhetően tesztelhettük az ioBrokerbe épített MQTT brókert. Ez az MQTT 3.1.1 broker (2023. febr.) több szempontból sem viselkedik a szabványnak megfelelően: a csatlakozási kísérletek hibaüzenet nélkül, némán megszakadnak, a PUBLISH csomagokból néha hiányzik a hasznos teher, a PUBLISH csomagokat látszólag kétszer küldi el (ez kikapcsolható egy konfigurációs beállítással?). Ez azt jelenti, hogy ez a bróker nem alkalmas a Charging Manager API vezérlésére, mivel az API-kérések többször is végrehajtódhatnak. Bár érdekünk, hogy az MQTT implementációnk minél több brókerrel kompatibilis legyen, jelenleg a Mosquitto használatát javasoljuk az ioBrokerhez.

Mérők és fali dobozok integrálása "HTTP Input" típusú eszközzel.

Ahelyett, hogy ezeket az eszközöket HTTP-n keresztül látná el (lásd HTTP API -> HTTP mérők és wallboxok), ezek az eszközök az MQTT-t is hallgathatják. Adja meg az mqtt vagy egy MQTT bróker URL-címét az eszköz címeként. Ezután a megfelelő mérő vagy wallbox a cfos_mqtt/set/<eszköz ID> témára figyel, pl. egy M1 eszközazonosítóval rendelkező mérő esetében a cfos_mqtt/set/M1-re. A HTTP bemeneti mérő ezután egy JSON karakterláncot vár üzenetként, ahogyan azt a HTTP API "HTTP mérők és wallboxok" című fejezetében leírtuk. Az MQTT-forrásnak tehát ebben a formátumban kell szolgáltatnia az adatokat. Ez lehetővé teszi olyan eszközök integrálását, amelyeket a cFos Charging Manager nem támogat, azáltal, hogy az adatokat egy másik forrásból (pl. egy otthoni automatizálási rendszerből) szerzi be, majd betáplálja a Charging Managerbe.
Megjegyzés: Ha a forrásból származó adatok más formátumúak, mint amit a HTTP-számláló elvár, akkor létrehozhat egy egyéni számlálót is. Az MQTT esetében ezt az alábbiakban ismertetjük.


Példa: Létrehozott egy HTTP bemeneti számlálót, és az eszköz azonosítója M3. Címként megadta a Mosquitto bróker címét, pl. mqtt://192.168.2.30. Ha a parancssorba beírja a következő parancsot azon a számítógépen, amelyen a Mosquitto fut:
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] }'
a számlálónak ekkor a fenti értékeket kell tartalmaznia.

A töltéskezelő eszközök állapotának átvitele

A Töltéskezelő konfigurációjában megadhat egy MQTT bróker URL-címet (vagy mqtt a szabványos bróker esetében), amely alatt a Töltéskezelő ezután közzéteszi az összes eszköz állapotát a cfos_mqqtt/get/dev_info téma alatt. Ezt a HTTP get_dev_info szolgáltatásból ismert formátumban továbbítja. Ez az eszközök összes értékét megadja, ahogy azok a felhasználói felületen is láthatóak, például a mérőműszerek teljesítményértékeit vagy a fali dobozok állapotát. Ha csak egyes eszközökre szeretne feliratkozni, akkor az egyes eszközök beállításainál a "Publish info via MQTT" jelölőnégyzetet kikapcsolhatja, és helyette a "Publish info via MQTT" opciót jelölje be a "Display" (Megjelenítés) alatt. Ezután a megfelelő JSON string az adott eszközről a cfos_mqtt/get/<eszköz-ID> téma alatt kerül közzétételre.

a cFos Charging Manager API vezérlése MQTT-n keresztül

A cFos Charging Manager konfigurációjában a "Broker for API access for MQTT via MQTT" menüpont alatt megadhat egy MQTT bróker URL-címet (vagy mqtt a standard brókerek esetében). Ha ez az érték nem üres, a cFos Charging Manager minden olyan témára feliratkozik, amely a cfos_mqtt/api/ kezdetűvel kezdődik. Ezután az ilyen témák alatti üzeneteket úgy értelmezi, mintha a téma neve egy /cnf? kezdetű HTTP URL lenne, és továbbítja azokat a HTTP API-nak. A díjkezelő ezután JSON formájában közzéteszi a HTTP API válaszát a cfos_mqtt/api_res téma alatt. Így az MQTT segítségével szinte a teljes HTTP API az Ön irányítása alatt áll. Kivételt képeznek az olyan API-hívások, amelyek hosszú JSON-válaszokat adnak. Példa: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 a töltéskezelő x változóját 1-re állítja a set_cm_var API funkcióval. A cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 alatti üzenet az E1 eszközazonosítóval rendelkező wallbox 5678-as RFID azonosítóját adja meg (lásd még a kiterjesztett RFID funkciókat).
A HTTP POST-on keresztül továbbított adatokat az üzenetben a téma alatt lehet elhelyezni.

Wallboxok vezérlése MQTT-n keresztül

Ha a cFos Charging Manager nincs "Load Management" üzemmódban, hanem "Observe" üzemmódban van, akkor az MQTT segítségével maga is vezérelheti az összes wallboxot. Ez különösen azokra a cFos Power Brain wallboxokra vonatkozik, amelyek "Observe" üzemmódban slave-ként működnek. Ehhez be kell jelölnie a "Wallboxok vezérlésének aktiválása" opciót a Charging Manager beállításai között az MQTT alatt. Ezután a cFos Charging Manager a cfos_mqtt/ctl MQTT-témát hallgatja, és JSON objektummal ellátott üzeneteket vár. Ez az objektum tulajdonságként alobjektumokat tartalmaz, amelyeknek a készülék azonosítója a neve. Az alobjektumok így néznek ki: {"cur": c, "ena": b, "wke": b}, ahol c a töltési áram mA-ben, b pedig igaz vagy hamis lehet. "ena": false kikapcsolja a töltést a wallboxon, "wke": true megpróbál "wake up car" parancsot küldeni a wallboxnak (jelenleg csak a cFos Power Brain wallboxokkal lehetséges). A "cur", "ena" és "wke" ki is hagyható, és így csak bizonyos vezérlési funkciókat lehet végrehajtani.
Példa: {"E1":


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

A készülékazonosítóval rendelkező wallbox töltőáramát 8A-ra állítja, aktiválja a töltést és megpróbálja felébreszteni a járművet. Továbbá az E2 fali doboz töltőáramát 10A-ra állítja be.

Naplózás és tranzakciós napló küldése MQTT-n keresztül

A "Konfiguráció" menüpont alatt megadhat egy MQTT bróker URL-címet a naplóbejegyzések továbbításához a rendszernaplóban. A cFos Charging Manager ezután minden naplóbejegyzést közzétesz a cfos_mqtt/log téma alatt. Ez lehetővé teszi a Charging Manager naplóinak távoli nyomon követését. A "Konfiguráció" menüpontban megadhat egy MQTT bróker URL-címet is a tranzakciós naplóbejegyzésekhez. Ezután az összes díjszámítási tranzakciót a cfos_mqtt/ta_log téma alá küldjük. Ez lehetővé teszi a díjszámítási tranzakciók könyvelési adatainak távoli értékelését és a díjszámítási tranzakciók biztonsági másolatainak létrehozását egy másik rendszerben. A töltési tranzakció akkor kezdődik, amikor a töltőcsatlakozót bedugják, és akkor ér véget, amikor kihúzzák.

Felhasználó által definiált számlálók MQTT-vel

Egyéni számlálókat hozhat létre az rtype = 2 használatával az MQTT számára. Ezek a számlálók a HTTP számlálókhoz hasonlóan vannak definiálva (rtype = 1). A címek itt azonban nem HTTP URL-címek, hanem MQTT-témák.




Példa: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Itt a felhasználó által definiált számláló feliratkozik a /test_topic3 témára, és egy JSON objektumot vár a "power_w" tulajdonsággal, pl. {"power_w": 1234}. A különböző számlálóváltozók különböző témákhoz tartozhatnak, és frissülnek, amint a megfelelő téma alatt üzenet jelenik meg.