Dokumentace

Oblasti použití MQTT

MQTT je internetový protokol s centrálním zprostředkovatelem zpráv. Pomocí tohoto zprostředkovatele zpráv se účastníci mohou přihlásit k odběru určitých "témat" a posílat zprávy do témat. Správce nabíjení cFos může naslouchat zprávám o konkrétních tématech a být tak ovládán prostřednictvím MQTT. Může také sdělovat stav zařízení, která spravuje. Wallbox cFos Power Brain lze také ovládat prostřednictvím MQTT a přenášet jeho stav. To je užitečné při připojení k systému domácí automatizace, pro průmyslové řízení (M2M) a pro monitorování a záznam. Všechna témata začínají na cfos_mqtt. Pokud chcete připojit více zařízení cFos MQTT k jednomu zprostředkovateli MQTT, může téma volitelně začínat cfos_mqtt_<sériové číslo>/, nastavitelné v konfiguraci. V konfiguraci můžete také nastavit adresu URL pro výchozího zprostředkovatele MQTT. Adresy URL mohou volitelně začínat mqtt:// a mqtts: //. Pomocí mqtts:// naváže správce nabíjení cFos nebo zařízení cFos Power Brain Wallbox spojení TLS. Používají se standardní porty 1883 pro nešifrovaná připojení a 8883 pro připojení TLS. Port však můžete zadat i v adrese URL. Uživatelské jméno a heslo lze zadat v obvyklém zápisu URL, např. mqtt://user:[email protected]. Pokud v konfiguraci správce cFos Charging Manager zadáte zprostředkovatele MQTT, můžete buď zadat jednotlivého zprostředkovatele, nebo jednoduše napsat mqtt. V tomto případě se použije výchozí zprostředkovatel uložený v konfiguraci.

Správce nabíjení cFos podporuje MQTT 3.1.1 i MQTT 5. Pokud necháte adresu URL začínat mqtt3:// nebo mqtt5:// (mqtts3:// a mqtts5:// pro šifrované připojení), určíte verzi protokolu. Výchozí je MQTT 3.1.1. Správce cFos Charging Manager se pokusí přepnout zpět na MQTT 3.1.1 pro MQTT 5, pokud se zobrazí chybová zpráva. To funguje se staršími zprostředkovateli Mosquitto, ale ne nutně s jinými zprostředkovateli.

Poznámka: Vzhledem k tomu, že nastavení MQTT vyžaduje heslo správce, správce nabíjení s daty podle toho nakládá. Záměrně jsou tedy odesílána data, která jsou přístupná pouze s heslem správce.

Poznámka k brokerům MQTT: Díky Stefanovi G. (#diebestenuserderwelt) jsme mohli otestovat broker MQTT zabudovaný do ioBrokeru. Tento broker MQTT 3.1.1 se chová (od února 2023) v několika ohledech, které nejsou v souladu se standardem: pokusy o připojení jsou tiše ukončeny bez chybového hlášení, v paketech PUBLISH někdy chybí užitečné zatížení, pakety PUBLISH jsou zřejmě odesílány dvakrát (lze to vypnout konfiguračním nastavením?). To znamená, že tento zprostředkovatel není vhodný pro ovládání rozhraní API Charging Manager, protože požadavky API mohou být provedeny více než jednou. I když máme zájem na tom, aby naše implementace MQTT byla kompatibilní s co největším počtem brokerů, v současné době doporučujeme pro ioBroker používat Mosquitto.

Integrace měřičů a wallboxů prostřednictvím zařízení typu "HTTP Input".

Místo toho, aby byla tato zařízení zásobována prostřednictvím protokolu HTTP (viz HTTP API -> měřiče HTTP a wallboxy), mohou tato zařízení také naslouchat protokolu MQTT. Jako adresu zařízení zadejte mqtt nebo adresu URL zprostředkovatele MQTT. Příslušný měřič nebo wallbox pak naslouchá tématu cfos_mqtt/set/<ide ID zařízení>, např. pro měřič s ID zařízení M1 tématu cfos_mqtt/set/M1. Vstupní měřič HTTP pak očekává jako zprávu řetězec JSON, jak je popsáno v rozhraní HTTP API v části "Měřiče a wallboxy HTTP". Váš zdroj MQTT proto musí dodávat data v tomto formátu. To vám umožní integrovat zařízení, která nejsou podporována správcem nabíjení cFos, tak, že získáte data z jiného zdroje (např. ze systému domácí automatizace) a poté je dodáte správci nabíjení.
Poznámka: Pokud jsou data ze zdroje v jiném formátu, než očekává čítač HTTP, můžete si také vytvořit vlastní čítač. Pro MQTT je to popsáno níže.


Příklad: Vytvořili jste vstupní čítač HTTP a jako ID zařízení je uvedeno M3. Jako adresu jste zadali adresu zprostředkovatele Mosquitto, např. mqtt://192.168.2.30. Pokud do příkazového řádku na počítači, na kterém je spuštěno Mosquitto, zadáte následující příkaz:
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] }'
čítač by pak měl obsahovat výše uvedené hodnoty.

Přenos stavu zařízení Charging Manager

V konfiguraci Správce nabíjení můžete zadat adresu URL zprostředkovatele MQTT (nebo mqtt pro standardního zprostředkovatele), pod kterou pak Správce nabíjení zveřejňuje stav všech zařízení v tématu cfos_mqtt/get/dev_info. Předává jej ve formátu známém z protokolu HTTP get_dev_info. Tím získáte všechny hodnoty zařízení tak, jak jsou viditelné i v uživatelském rozhraní, např. hodnoty výkonu měřičů nebo stav wallboxů. Pokud chcete odebírat pouze jednotlivá zařízení, můžete deaktivovat zaškrtávací políčko "Publikovat informace přes MQTT" a místo toho v nastavení jednotlivých zařízení v části "Zobrazení" zaškrtnout možnost "Publikovat informace přes MQTT". Pak se příslušný řetězec JSON o příslušném zařízení zveřejní pod tématem cfos_mqtt/get/<device-ID>. Kromě toho se můžete přihlásit k odběru všech globálních hodnot pod tématem cfos_mqtt/get/params, protože jsou vypisovány ve formátu známém z HTTP get_dev_info pod "params".

ovládání rozhraní API správce nabíjení cFos prostřednictvím MQTT

V konfiguraci správce cFos Charging Manager můžete v části "Broker pro přístup k API prostřednictvím MQTT" zadat adresu URL brokera MQTT (nebo mqtt pro standardní brokery). Pokud tato hodnota není prázdná, správce cFos Charging Manager se přihlásí k odběru všech témat začínajících na cfos_mqtt/api/. Zprávy pod takovými tématy pak interpretuje, jako by název tématu byl adresou URL HTTP začínající na /cnf?, a předává je rozhraní API HTTP. Správce nabíjení pak zveřejní odpověď HTTP API jako JSON pod tématem cfos_mqtt/api_res. Tímto způsobem máte téměř celé rozhraní HTTP API pod kontrolou prostřednictvím protokolu MQTT. Výjimkou jsou volání API, která poskytují dlouhé odpovědi JSON. Příklad: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 nastaví proměnnou Charging Manager x na hodnotu 1 pomocí funkce API set_cm_var. Zpráva pod tématem cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 zadá RFID 5678 pro wallbox s ID zařízení E1 (viz také naše rozšířené funkce RFID).
Data přenášená prostřednictvím protokolu HTTP POST lze umístit do zprávy pod tématem.

Příklad: Pravidelná změna maximálního celkového proudu, který má správce nabíjení k dispozici:
V obecných nastaveních Charging Manageru v části "Brokers for API access via MQTT" (nebo jednoduše mqtt, pokud má být použit výchozí broker uložený v části "Configuration") zadejte svého brokera. Poté pomocí MQTT publikujte do tématu
cfos_mqtt/api/cmd=set_params
objekt JSON s následujícím obsahem:
{"max_total_cur_prc": p}
kde p je údaj v procentech, jaká část z nastaveného maximálního celkového toku má být odebrána.
Poznámka: Některá volání HTTP API způsobují, že správce nabíjení uloží konfiguraci. Pokud je budete provádět příliš často, dojde k opotřebení paměti flash (v zařízení cFos Power Brain nebo cFos Wallbox Booster) nebo karty SD v zařízení Raspberry. Volání API "set_params" s jediným parametrem "max_total_cur_prc" proto parametry neukládá.

Ovládání wallboxů prostřednictvím MQTT

Pokud správce nabíjení cFos není v režimu "Load management", ale v režimu "Observe", můžete pomocí MQTT převzít kontrolu nad všemi wallboxy sami. To platí zejména pro wallboxy cFos Power Brain, které jsou v režimu "Observe" provozovány jako podřízené. K tomu je třeba v nastavení Charging Manageru zaškrtnout možnost "Activate control of wallboxes" (Aktivovat ovládání wallboxů) v části MQTT. Správce nabíjení cFos pak naslouchá tématu MQTT cfos_mqtt/ctl a očekává zprávy s objektem JSON. Tento objekt má jako vlastnosti dílčí objekty s ID zařízení jako názvem. Dílčí objekty vypadají takto: {"cur": c, "ena": b, "wke": b, "phs": p}, kde c je nabíjecí proud v mA a b může být true nebo false. "ena": false deaktivuje nabíjení ve wallboxu, "wke": true se pokusí poslat do wallboxu příkaz "probuď auto" (v současné době je to možné pouze u wallboxů cFos Power Brain). p může být 1 nebo 3 pro přepínání mezi 1fázovým a 3fázovým nabíjením. Můžete také vynechat "cur", "ena", "wke" a "phs" a provádět tak pouze některé řídicí funkce.
Příklad: {"E1":


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

Nastaví nabíjecí proud wallboxu s ID zařízení na 8A, aktivuje nabíjení a pokusí se probudit auto. Dále se nastaví nabíjecí proud pro wallbox E2 na 10A a přepne se na třífázové nabíjení.

Odesílání protokolování a protokolu transakcí prostřednictvím MQTT

V části "Konfigurace" můžete zadat adresu URL zprostředkovatele MQTT pro přenos záznamů protokolu v systémovém protokolu. Správce nabíjení cFos pak zveřejní všechny záznamy protokolu v tématu cfos_mqtt/log. To vám umožní vzdáleně sledovat protokoly Charging Manageru. V části "Konfigurace" můžete také zadat adresu URL zprostředkovatele MQTT pro záznamy protokolu transakcí. Všechny transakce účtování jsou pak odesílány pod tématem cfos_mqtt/ta_log. To umožňuje vzdálené vyhodnocování účetních dat transakcí účtování a vytváření záloh transakcí účtování v jiném systému. Nabíjecí transakce začíná, když je nabíjecí zástrčka připojena, a končí, když je odpojena.

Čítače definované uživatelem pomocí MQTT

Vlastní čítače můžete vytvořit pomocí rtype = 2 pro MQTT. Tyto čítače jsou definovány podobně jako čítače HTTP (rtype = 1). Adresy zde však nejsou HTTP URL, ale témata MQTT.




Příklad: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Zde se uživatelsky definovaný čítač přihlásí k tématu /test_topic3 a očekává objekt JSON s vlastností "power_w", např. {"power_w": 1234}. Různé proměnné čítače mohou mít různá témata a jsou aktualizovány, jakmile je zpráva zveřejněna v rámci příslušného tématu.