MQTT je internetni protokol z osrednjim posrednikom sporočil. S tem posrednikom sporočil se lahko udeleženci naročijo na določene "teme" in pošiljajo sporočila temam. Upravitelj polnjenja cFos lahko posluša sporočila o določenih temah in jih tako upravlja prek MQTT. Sporoča lahko tudi stanje naprav, ki jih upravlja. Wallbox cFos Power Brain lahko upravljate tudi prek MQTT in posredujete njegovo stanje. To je uporabno pri povezovanju s sistemom za avtomatizacijo doma, za industrijski nadzor (M2M) ter za spremljanje in snemanje. Vse teme se začnejo s cfos_mqtt
. Če želite več naprav cFos MQTT povezati z enim posrednikom MQTT, se lahko tema po želji začne s cfos_mqtt_<serijska številka>/
, kar je mogoče prilagoditi pod konfiguracijo. V konfiguraciji lahko nastavite tudi URL za privzetega posrednika MQTT. URL-ji se lahko po želji začnejo z mqtt://
in mqtts:
//. Z mqtts://
upravitelj polnjenja cFos ali stenska omarica cFos Power Brain Wallbox vzpostavi povezavo TLS. Uporabljajo se standardna vrata 1883 za nešifrirane povezave in 8883 za povezave TLS. V naslovu URL pa lahko določite tudi vrata. Uporabniško ime in geslo lahko navedete v običajnem zapisu URL, npr. mqtt://user:password@192.168.2.111
. Če v konfiguraciji programa cFos Charging Manager določite posrednika MQTT, lahko navedete posameznega posrednika ali preprosto zapišete mqtt
. V tem primeru se uporabi privzeti posrednik, shranjen v konfiguraciji.
Upravitelj polnjenja cFos podpira MQTT 3.1.1 in MQTT 5. Če se naslov URL začne z mqtt3:// ali mqtt5:// (mqtts3:// in mqtts5:// za šifrirano povezavo), določite različico protokola. Privzeto je MQTT 3.1.1. Program cFos Charging Manager poskuša preklopiti nazaj na MQTT 3.1.1 za MQTT 5, če se prikaže sporočilo o napaki. To deluje s starejšimi posredniki Mosquitto, ni pa nujno z drugimi posredniki.
Opomba: Ker nastavitev MQTT zahteva geslo upravitelja, Charging Manager ustrezno ravna s podatki. Zato se namerno pošiljajo podatki, do katerih je mogoče dostopati samo z administratorskim geslom.
Opomba o posrednikih MQTT: Zahvaljujoč Stefanu G. (#diebestenuserderwelt) smo lahko preizkusili posrednika MQTT, vgrajenega v ioBroker. Ta posrednik MQTT 3.1.1 se (od februarja 2023) obnaša na več načinov, ki niso skladni s standardom: poskusi povezave se tiho prekinejo brez sporočila o napaki, v paketih PUBLISH včasih manjka koristni tovor, paketi PUBLISH se očitno pošiljajo dvakrat (ali je to mogoče izklopiti z nastavitvijo v konfiguraciji?). To pomeni, da ta posrednik ni primeren za nadzor API Charging Manager, saj se lahko zahteve API izvedejo več kot enkrat. Čeprav nas zanima, da je naša implementacija MQTT združljiva s čim več posredniki, trenutno za ioBroker priporočamo uporabo Mosquitta.
Namesto da bi te naprave oskrbovali prek protokola HTTP (glejte API HTTP -> merilniki HTTP in stenske škatle), lahko te naprave poslušajo tudi MQTT. Kot naslov naprave vnesite mqtt
ali URL posrednika MQTT. Nato ustrezni merilnik ali wallbox posluša temo cfos_mqtt/set/<device ID>
, npr. za merilnik z ID naprave M1 cfos_mqtt/set/M1
. Merilnik vhoda HTTP nato kot sporočilo pričakuje niz JSON, kot je opisano v vmesniku HTTP API v poglavju "Merilniki in wallboxi HTTP". Vaš vir MQTT mora zato podatke dostaviti v tej obliki. To vam omogoča integracijo naprav, ki jih upravitelj polnjenja cFos ne podpira, tako da podatke pridobite iz drugega vira (npr. sistema za avtomatizacijo doma) in jih nato posredujete upravitelju polnjenja.
Opomba: Če so podatki iz vira v drugačni obliki, kot jo pričakuje števec HTTP, lahko ustvarite tudi števec po meri. Za MQTT je to opisano spodaj.
Primer: Ustvarili ste vhodni števec HTTP in kot ID naprave je naveden M3. Kot naslov ste vnesli naslov posrednika Mosquitto, npr. mqtt://192.168.2.30. Če v ukazno vrstico v računalniku, na katerem teče Mosquitto, vnesete naslednji ukaz: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] }'
števec mora vsebovati zgornje vrednosti.
V konfiguraciji upravitelja polnjenja lahko določite URL posrednika MQTT (ali mqtt za standardnega posrednika), pod katerim upravitelj polnjenja objavi stanje vseh naprav v temi cfos_mqtt/get/dev_info
. To posreduje v obliki, ki je znana iz protokola HTTP get_dev_info. Tako dobite vse vrednosti naprav, kot so vidne tudi v uporabniškem vmesniku, npr. vrednosti moči števcev ali stanje wallboxov. Če se želite naročiti le na posamezne naprave, lahko deaktivirate potrditveno polje "Publish info via MQTT" in namesto tega v nastavitvah posameznih naprav v razdelku "Display" (Prikaz) potrdite možnost "Publish info via MQTT" (Objavi informacije prek MQTT). Nato se ustrezen niz JSON o zadevni napravi objavi pod temo cfos_mqtt/get/<device-ID>. Poleg tega se lahko naročite na vse globalne vrednosti pod temo cfos_mqtt/get/params
, saj se pod "params" izpišejo v obliki, znani iz HTTP get_dev_info.
V konfiguraciji upravitelja zaračunavanja cFos lahko v razdelku "Broker za dostop do API prek MQTT" določite URL posrednika MQTT (ali mqtt za standardne posrednike). Če ta vrednost ni prazna, se upravitelj cFos Charging Manager naroči na vse teme, ki se začnejo s cfos_mqtt/api/. Sporočila pod takimi temami nato interpretira, kot da bi bilo ime teme URL HTTP, ki se začne z /cnf?, in jih posreduje API HTTP. Upravitelj polnjenja nato objavi odgovor API HTTP kot JSON pod temo cfos_mqtt/api_res. Na ta način imate prek MQTT pod nadzorom skoraj celoten API HTTP. Izjeme so klici API, ki zagotavljajo dolge odgovore JSON. Primer: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
s funkcijo API set_cm_var nastavi spremenljivko Charging Manager x na 1. Sporočilo pod cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
vnese RFID 5678 za wallbox z ID naprave E1 (glejte tudi naše razširjene funkcije RFID).
Podatke, posredovane prek protokola HTTP POST, lahko vnesete v sporočilo pod temo.
Primer: Periodično spreminjanje največjega skupnega toka, ki je na voljo upravitelju polnjenja:
V splošnih nastavitvah Charging Managerja pod "Brokers for API access via MQTT" (ali preprosto mqtt, če želite uporabiti privzetega posrednika, shranjenega pod "Configuration") vnesite svojega posrednika. Nato z uporabo MQTT objavite na temo
cfos_mqtt/api/cmd=set_params
objekt JSON z naslednjo vsebino:
{"max_total_cur_prc": p}
kjer je p podatek v odstotkih, kolikšen del nastavljenega največjega skupnega toka naj se vzame.
Opomba: Nekateri klici API HTTP povzročijo, da upravitelj polnjenja shrani konfiguracijo. Če jih izvajate prepogosto, se bo bliskovna spominska plošča (v napravi cFos Power Brain ali cFos Wallbox Booster) ali kartica SD v računalniku Raspberry izrabila. Klic API "set_params" z enim samim parametrom "max_total_cur_prc" zato ne shrani parametrov.
Če upravitelj polnjenja cFos ni v načinu "Load management", temveč v načinu "Observe", lahko z uporabo MQTT sami prevzamete nadzor nad vsemi stenskimi omaricami. To velja zlasti za wallboxe cFos Power Brain, ki se v načinu "Opazovanje" upravljajo kot podrejeni. V ta namen morate v nastavitvah Charging Managerja v razdelku MQTT označiti možnost "Activate control of wallboxes" (Aktiviraj nadzor nad wallboxi). Upravitelj polnjenja cFos nato posluša temo MQTT cfos_mqtt/ctl
in pričakuje sporočila z objektom JSON. Ta objekt ima kot lastnosti podobjekte z ID naprave kot imenom. Podobjekti so videti takole: {"cur": c, "ena": b, "wke": b, "phs": p}, kjer je c polnilni tok v mA, b pa je lahko true ali false. "ena": false deaktivira polnjenje v stenskem polnilniku, "wke": true poskuša stenskemu polnilniku poslati ukaz "wake up car" (trenutno je to mogoče samo s stenskimi polnilniki cFos Power Brain). p je lahko 1 ali 3 za preklop med 1-faznim in 3-faznim polnjenjem. Izpustite lahko tudi "cur", "ena", "wke" in "phs" ter tako izvedete le nekatere nadzorne funkcije.
Primer: {"E1":
{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000, phs: 3}}
Nastavi polnilni tok wallboxa z ID naprave na 8A, aktivira polnjenje in poskuša zbuditi avto. Poleg tega se polnilni tok za wallbox E2 nastavi na 10A in preklopi na trifazno polnjenje.
URL posrednika MQTT za prenos dnevniških zapisov v sistemski dnevnik lahko določite v razdelku "Konfiguracija". Upravitelj polnjenja cFos nato objavi vse vnose dnevnika pod temo cfos_mqtt/log
. Tako lahko dnevnike Charging Managerja spremljate na daljavo. V razdelku "Konfiguracija" lahko določite tudi URL posrednika MQTT za vnose v dnevnik transakcij. Nato se vse transakcije zaračunavanja pošljejo pod temo cfos_mqtt/ta_log
. To omogoča oddaljeno vrednotenje računovodskih podatkov transakcij polnjenja in ustvarjanje varnostnih kopij transakcij polnjenja v drugem sistemu. Polnjenje se začne, ko je polnilni vtič priključen, in konča, ko je iztaknjen.
Za MQTT lahko ustvarite števce po meri z uporabo rtype = 2. Ti števci so definirani podobno kot števci HTTP (rtype = 1). Vendar naslovi tukaj niso naslovi URL HTTP, temveč teme MQTT.
Primer: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Tu se uporabniško definiran števec naroči na temo /test_topic3 in pričakuje objekt JSON z lastnostjo "power_w", npr. {"power_w": 1234}. Različne spremenljivke števca imajo lahko različne teme in se posodabljajo takoj, ko je sporočilo objavljeno v okviru ustrezne teme.