Dokumentaatio

MQTT-sovellusalueet

MQTT on Internet-protokolla, jossa on keskitetty viestinvälittäjä. Tämän viestinvälittäjän avulla osallistujat voivat tilata tiettyjä "aiheita" ja lähettää viestejä aiheista. CFos Charging Manager voi kuunnella tiettyjen aihealueiden viestejä ja sitä voidaan siten ohjata MQTT:n kautta. Se voi myös lähettää hallinnoimiensa laitteiden tilan. Myös cFos Power Brain Wallboxia voidaan ohjata MQTT:n kautta ja lähettää sen tila. Tämä on hyödyllistä kotiautomaatiojärjestelmään liittämisessä, teollisuuden ohjauksessa (M2M) sekä seurannassa ja tallentamisessa. Kaikki aiheet alkavat sanalla cfos_mqtt. Jos haluat liittää useita cFos MQTT -laitteita MQTT-välittäjään, aihe voi valinnaisesti alkaa cfos_mqtt_<sarjanumero>/, joka voidaan asettaa kohdassa Configuration. Voit myös määrittää määrityksessä vakiomuotoisen MQTT-välittäjän URL-osoitteen. URL-osoitteet voivat valinnaisesti alkaa kirjaimilla mqtt:// ja mqtts://. Käyttäjällä mqtts:// cFos Charging Manager tai cFos Power Brain Wallbox muodostaa TLS-yhteyden. TLS-yhteyksissä käytetään vakioportteja 1883 salaamattomiin yhteyksiin ja 8883 TLS-yhteyksiin. Voit kuitenkin määrittää portin myös URL-osoitteessa. Käyttäjänimi ja salasana voidaan määrittää tavallisella URL-notaatiolla, esim. mqtt://user:password@192.168.2.111. Jos määrität MQTT-välittäjän cFos Charging Managerin konfiguraatiossa, voit joko määrittää yksittäisen välittäjän tai yksinkertaisesti kirjoittaa mqtt. Tällöin käytetään konfiguraatioon tallennettua oletusarvoista välittäjää.

CFos Charging Manager tukee sekä MQTT 3.1.1:tä että MQTT 5:tä. Jos aloitat URL-osoitteen komennolla mqtt3:// tai mqtt5:// (mqtts3:// ja mqtts5:// salattua yhteyttä varten), protokollaversio määritetään. Oletusarvo on MQTT 3.1.1. MQTT 5:n kanssa cFos Charging Manager yrittää siirtyä takaisin MQTT 3.1.1:een, jos vastaava virheilmoitus tulee näkyviin. Tämä toimii vanhempien Mosquitto-välittäjien kanssa, mutta ei välttämättä muiden välittäjien kanssa.

Huomautus: Koska MQTT:n käyttöönotto edellyttää järjestelmänvalvojan salasanaa, Charging Manager käsittelee tietoja vastaavasti. Tämä tarkoittaa sitä, että tieto lähetetään tarkoituksellisesti tietoja, joihin pääsee käsiksi vain järjestelmänvalvojan salasanalla.

Huomautus MQTT-välittäjistä: Stefan G:n (#diebestenuserderwelt) ansiosta pystyimme testaamaan ioBrokerin sisäänrakennettua MQTT-välittäjää vastaan. Tämä MQTT 3.1.1 -välittäjä (helmikuussa 2023) ei ole standardin mukainen monilta osin: Connect-yritykset lopetetaan äänettömästi ilman virheilmoitusta, hyötykuorma puuttuu joskus PUBLISH-paketeista, PUBLISH-paketit lähetetään ilmeisesti kahdesti (voidaanko tämä kytkeä pois päältä konfiguraatioasetuksella?). Tämä tarkoittaa, että tämä välittäjä ei sovellu Charging Manager API:n ohjaamiseen, koska API-pyynnöt voidaan suorittaa useita kertoja. Vaikka olemme kiinnostuneita siitä, että MQTT-toteutuksemme on yhteensopiva mahdollisimman monen välittäjän kanssa, suosittelemme tällä hetkellä Mosquitton käyttöä ioBrokerille.

Mittareiden ja seinärasioiden integrointi laitetyyppiä "HTTP Input" käyttäen.

Sen sijaan, että näille laitteille toimitettaisiin tietoja HTTP:n kautta (katso HTTP API -> HTTP-mittarit ja seinälaatikot), nämä laitteet voivat myös kuunnella MQTT:tä. Kirjoita laitteen osoitteeksi mqtt tai MQTT-välittäjän URL-osoite. Vastaava mittari tai seinälaatikko kuuntelee tällöin aihetta cfos_mqtt/set/<laitteen ID>, esim. mittarin, jonka laitetunnus on M1, osalta cfos_mqtt/set/M1. HTTP-syöttömittari odottaa sitten JSON-merkkijonoa viestinä, kuten HTTP API: n kohdassa "HTTP-mittarit ja seinälaatikot" on kuvattu. MQTT-lähteesi on siis toimitettava tiedot tässä muodossa. Näin voit integroida laitteita, joita cFos Charging Manager ei tue, hankkimalla tiedot toisesta lähteestä (esim. kotiautomaatiojärjestelmästä) ja tuomalla ne sitten Charging Manageriin.
Huomautus: Jos lähteestä saadut tiedot ovat eri muodossa kuin HTTP-mittari odottaa, voit myös luoda mukautetun mittarin. Tämä kuvataan jäljempänä MQTT:n osalta.


Esimerkki: Olet luonut HTTP-tulolaskurin, jonka laitetunnuksena on M3. Osoitteeksi olet syöttänyt Mosquitto-välittäjän osoitteen, esim. mqtt://192.168.2.30. Jos syötät seuraavan komennon komentoriville tietokoneessa, jossa Mosquitto on käynnissä:
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] }'
laskurin pitäisi tällöin sisältää edellä mainitut arvot.

Charging Manager -laitteiden tilan siirto

Lataushallinnan konfiguroinnissa voit määrittää MQTT-välittäjän URL-osoitteen (tai mqtt, jos kyseessä on vakiovälittäjä), jonka alla lataushallinta julkaisee kaikkien laitteiden tilan aiheessa cfos_mqqtt/get/dev_info. Se välittää tämän HTTP get_dev_info -muodossa tunnetussa muodossa. Näin saat kaikki laitteiden arvot sellaisina kuin ne näkyvät myös käyttöliittymässä, esim. mittareiden tehoarvot tai seinälaatikoiden tila. Jos haluat tilata vain yksittäisiä laitteita, voit poistaa "Julkaise tiedot MQTT:n kautta" -valintaruudun käytöstä ja sen sijaan rastittaa "Julkaise tiedot MQTT:n kautta" -vaihtoehdon kohdassa "Display" yksittäisten laitteiden asetuksissa. Vastaava JSON-merkkijono kyseisestä laitteesta julkaistaan tällöin aiheessa cfos_mqtt/get/<laitteen ID>. Voit myös tilata kaikki globaalit arvot aiheen cfos_mqtt/get/params alta, sillä ne tulostetaan HTTP get_dev_info:ssa tunnetussa muodossa kohdassa "params".

ohjaa cFos Charging Manager API:ta MQTT:n kautta

Voit määrittää cFos Charging Managerin määrityksessä MQTT-välittäjän URL-osoitteen kohdassa "Broker for API access via MQTT" (tai mqtt, jos kyseessä on vakiovälittäjä). Jos tämä arvo ei ole tyhjä, cFos Charging Manager tilaa kaikki aiheet, jotka alkavat kirjaimella cfos_mqtt/api/. Sen jälkeen se tulkitsee tällaisten aiheiden alla olevat viestit ikään kuin aiheen nimi olisi HTTP-URL-osoite, joka alkaa kirjaimella /cnf?, ja välittää ne HTTP API:lle. Sen jälkeen latauksenhallinta julkaisee HTTP API:n vastauksen JSON-muodossa aiheessa cfos_mqtt/api_res. Tämä tarkoittaa, että sinulla on lähes koko HTTP API hallinnassasi MQTT:n kautta. Poikkeuksena ovat API-kutsut, jotka toimittavat pitkiä JSON-vastauksia. Esimerkki: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 käyttää API-funktiota set_cm_var asettaakseen Charging Manager -muuttujan x arvoksi 1. Viesti osoitteessa cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 syöttää RFID-tunnisteen 5678 seinälaatikolle, jonka laitetunniste on E1 (ks. myös laajennetut RFID-toiminnot).
HTTP POST -palvelun kautta lähetetyt tiedot voidaan sijoittaa viestiin aiheen alle.

Esimerkki: Muutetaan ajoittain Charging Managerin käytettävissä olevaa suurinta kokonaisvirtaa:
Anna välittäjäsi Charging Managerin yleisissä asetuksissa kohdassa "Broker for API access via MQTT" (tai yksinkertaisesti mqtt, jos halutaan käyttää kohdassa "Configuration" tallennettua oletusvälittäjää).



Julkaise sitten MQTT:n avulla JSON-objekti, jonka sisältö on seuraava, aiheeseen cfos_mqqtt/api/cmd=set_params : {"max_total_cur_prc": p} jossa p on prosenttiosuus otettavasta esiasetetusta enimmäiskokonaisvirrasta.
Huomautus: Jotkin HTTP-API-kutsut aiheuttavat sen, että veloitushallinta tallentaa asetukset. Jos suoritat niitä liian usein, flash-muisti (cFos Power Brainissa tai cFos Wallbox Boosterissa) tai Raspberryn SD-kortti kuluu loppuun. API-kutsu "set_params", jossa on yksi parametri "max_total_cur_prc", ei siis tallenna parametreja.

Ohjaa seinälaatikoita MQTT:n kautta

Jos cFos Charging Manager ei ole kuormanhallintatilassa vaan tarkkailutilassa, voit käyttää MQTT:tä kaikkien seinälaatikoiden hallintaan itse. Tämä koskee erityisesti cFos Power Brain -seinälaatikoita, joita käytetään orjina "Observe"-tilassa. Tätä varten sinun on rastitettava Charging Managerin asetuksissa kohdassa MQTT oleva vaihtoehto "Activate control of wallboxes". Tämän jälkeen cFos Charging Manager kuuntelee MQTT-aihetta cfos_mqtt/ctl ja odottaa viestejä JSON-objektilla. Tässä objektissa on aliobjekteja, joiden ominaisuuksina on laitteen ID-nimi. Aliobjektit näyttävät seuraavanlaisilta: {"cur": c, "ena": b, "wke": b, "phs": p}, jossa c on latausvirta mA:na ja b voi olla tosi tai epätosi. "ena": false kytkee latauksen pois päältä seinälaatikosta, "wke": true yrittää lähettää "wake up car" -komennon seinälaatikolle (tällä hetkellä mahdollista vain cFos Power Brain -seinälaatikoiden kanssa). p voi olla 1 tai 3 vaihtaakseen 1-vaiheisen ja 3-vaiheisen latauksen välillä. Voit myös jättää "cur", "ena", "wke" ja "phs" pois ja siten suorittaa vain tiettyjä ohjaustoimintoja.
Esimerkki: {"E1":


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

Asettaa laitetunnuksella varustetun seinälaatikon latausvirran arvoksi 8A, aktivoi latauksen ja yrittää herättää auton. Lisäksi seinälaatikon E2 latausvirta asetetaan 10A:ksi ja vaihdetaan 3-vaiheiseen lataukseen.

Lähetä lokitiedot ja tapahtumaloki MQTT:n kautta

Voit määrittää MQTT-välittäjän URL-osoitteen lokimerkintöjen lähettämistä varten järjestelmälokissa kohdassa "Määritys". Tämän jälkeen cFos Charging Manager julkaisee kaikki lokimerkinnät aiheessa cfos_mqtt/log. Näin voit analysoida lokitietoja etänä Charging Managerin valvomiseksi. Voit myös määrittää MQTT-välittäjän URL-osoitteen tapahtumalokimerkintöjä varten kohdassa "Configuration". Kaikki lataustapahtumat lähetetään tällöin aiheen cfos_mqtt/ta_log alle. Näin lataustapahtumien laskutustietoja voidaan analysoida etänä ja lataustapahtumista voidaan luoda varmuuskopiot toiseen järjestelmään. Lataustapahtuma alkaa, kun latauspistoke kytketään ja päättyy, kun se irrotetaan.

Käyttäjän määrittelemät laskurit MQTT:llä

Voit luoda mukautettuja laskureita käyttämällä rtype = 2 MQTT:tä varten. Nämä laskurit määritellään samalla tavalla kuin HTTP-laskurit (rtype = 1). Osoitteet eivät kuitenkaan ole HTTP-URL-osoitteita vaan MQTT-aiheita.




Esimerkki: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Tässä käyttäjän määrittelemä laskuri tilaa aiheen /test_topic3 ja odottaa JSON-objektia, jolla on ominaisuus "power_w", esim. {"power_w": 1234}. Eri laskurimuuttujilla voi olla eri aiheita, ja ne päivitetään heti, kun viesti julkaistaan vastaavassa aiheessa.