Jste zde

MQTT komunikace zásuvek Netio s PC softwarem MQTT Explorer

Chytré zásuvky Netio nabízejí aktivaci režimu MQTT. Ten umožňuje prostřednictvím internetu snadno realizovat přenos aktuálních informací a parametrů mezi Netio zásuvkami a libovolným PC s prográmkem umožňující příjem MQTT zpráv.

Co je MQTT?

MQTT (MQ Telemetry Transport) je jednoduchý a nenáročný M2M / "Internet of Things" komunikační protokol, který byl původně navržen v IBM, ale dnes za ním stojí konsorcium "Eclipse foundation".

MQTT je ve svém principu založen na předávání zpráv mezi klienty prostřednictvím centrálního serveru – brokeru. Ten funguje něco jako "novinář", který přijímá zprávy od poskytovatele zpráv (tzv. publisher) a ty následně předává k přečtení jednomu či více čtenářům, kteří o ně mají zájem (tzv. subscribers). Jeden broker (novinář) může mít mnoho různých poskytovatelů zpráv (publishers) a mnoho čtenářů (subscribers), přičemž čtenářům předává jen ty zprávy, k nimž se každý ze čtenářů přihlásil k odběru.

V reálném světě pak publisher i subscriber je stvořeny elektronickými jednotkami v podobě MQTT klientů, kteří jsou společně připojeny na  jednu MQTT server jednotku (MQTT broker). Teoreticky každý klient může být současně publisher (generátor / poskytovatel zpráv) i subscriber (příjemce, odběratel zpráv), ale dost často bývají tyto funkce rozděleny.

Publisher obvykle reprezentuje nějaký snímač či měřící jednotka, která vysílá naměřeného hodnoty na broker (server), zatímco subscriber obvykle tvoří nějaká řídící jednotka, která hodnoty odebírá (přijímá) a dále s nimi pracuje nebo je zobrazuje.

Struktura MQTT přenosu zpráv

Přenášené zprávy jsou tříděny do tzv. témat (topic). Každá zpráva patří právě do jednoho tématu, přičemž témata definuje přímo generátor zpráv, tedy publisher. Subscriber pak musí předem znát "jméno (označení)" téma, aby se mohlo přihlásit u brokeru k jeho odběru. Jen k tématům, ke kterým se subscriber přihlásí, dostává (jsou mu brokerem přeposílána). Subscriber nemusí znát umístění ani komunikační adresu publisheru. Musí jen znát komunikační adresu (umístění) brokeru. Témata jsou hierarchická a oddělená lomítky.

Například „snímač 3 v kanceláři 2, v prvním patře v budově 2“ může mít topic „budova2/patro1/kancelar2/snimac3“, „snímač 5 v kanceláři 5, v prvním patře v budově 2“ může mít topic „budova2/patro1/kancelar5/snimac5“  nebo třeba teplotu vzduchu ve skleniku 3 pana Vojáčka lze označit jako „Vojáček/sklenik3/teplota-vzduch“.

Témata jsou v MQTT reprezentovány v podobě řetězce v UTF-8 kódování, takže i pojmenování s diakritikou není problém. Hierarchie témat není nijak pevně dána a záleží jen na aplikaci a návrhu programátora. Jak správně navrhnout hierarchii může však být i netriviální úloha. Ne vždy je totiž ta nejsprávnější struktura ta „přirozená“. Důležité je už v rámci těchto úvah rozmyslet datový model a rozhraní – tedy vhodné uspořádání tak, aby bylo možné přihlásit takové topics, které logicky patří k sobě.

Obsah MQTT zpráv

Samotný obsah zpráv není nijak definovaný. Jsou jím prostě nějaká binární data, která mají být přenesena. Nejčastěji se používá formát (způsob zápisu) dat JSON (JavaScript Object Notation), BSON (Binary JSON) nebo textové zprávy. Ale v zásadě to mohou být data libovolného formátu, protože broker (server) tyto data nijak neposuzuje a nepracuje s nimi, jen je přeposílá. Záleží tak čistě jen na příjemci dat (subscriberu), aby je "pochopil".

Velikost zprávy je pak v aktuální verzi protokolu omezena na necelých 256 MB, ale vzhledem k zaměření "Internet of Things" bývá většina zpráv mnohem menší. MQTT tak minimalizuje množství přenášených dat, což byl od začátku cíl. Proto se velmi hodí pro přenos jen občasných, na rychlost přenosu méně náročných, informací a hodnot, což je právě ideální pro účel IoT.

Více o technologii MQTT se pak dozvíte v dalších článcích na HW serveru, např. v MQTT: univerzální protokol nejen pro cloudové aplikace, MQTT: výhody a nevýhody jednoduchého a univerzálního protokolu, nebo IoT MQTT prakticky v automatizaci - 1.díl - úvod

MQTT režim zásuvek NETIO

Smart zásuvky NETIO mají možnost aktivovat v nich právě MQTT režim komunikace. Ten umožňuje následující věci:

  • Vysílat pravidelně po uplynutí přednastavení periody nebo po změně měřených hodnot a stavů informační zprávy.
  • Přijímat jako řídící zprávy, kterými je možné dálkově ovládat / zapínat a vypínat NETIO zásuvky z PC nebo z libovolného zařízení podporující MQTT režim.  

Konkrétně NETIO přes MQTT umí odesílat naměřené parametry jak o celkovém stavu jednotky, tak v případě verze PowerPDU 4C i parametry k jednotlivým zásuvkám:

  • 1x přívodní napájecí elektrické napětí [V],
  • 1x frekvenci napájecí elektrické sítě [Hz],
  • 1x celkový příkon [W],
  • 1x celkovou dlouhodobou spotřebu  [Wh],
  • 1x celkový odebíraný el. proud [A],
  • 4x aktuální elektrický proud každé zásuvky [A],
  • 4x aktuální příkon každé zásuvky [W],
  • 4x dlouhodobá spotřeba každé zásuvky [Wh],
  • 4x TPF (True Power Factor) - reálný účiník.

Zprovoznění MQTT komunikace je poměrně jednoduché a vše je velmi přehledně popsáno v NETIO aplikační poznámce AN12 - viz odkaz AN12 MQTT ovládání chytrých zásuvek NETIO s využitím HiveMQ brokeru .

Já osobně jsem MQTT funkci zkoušel na zařízení NETIO PowerPDU 4C, což je "stolní" jednotka se čtyřmi řízenými zásuvky, kterou jsem již z jiných pohledů a funkcí popisoval např v článcích:  Nicméně MQTT funkce je společná ostatním NETIO jednotkách, které ji podporují.

Tak jak popisuje aplikační poznámka AN12, i já ve svých pokusech využil možnosti bezplatného MQTT brokeru HiveMQ a tedy nastavil jako host adresu "Broker host" na "broker.hivemq.com" a "Broker Port" na "1883". Sice jsem nastavil autorizační "Uživatelské jméno" a "Heslo", nicméně u volného bezplatného brokeru HiveMQ to není nutné, protože ten tyto položky ignoruje. Důležité je nastavit identifikační číslo/jméno daného MQTT zařízení, zde tedy položka "Id klienta", které zároveň funguje jako označení téma.  Tímto označením se pak identifikuje téma / kanál (vlákno), pod kterým jsou data na broker vysílána a pod jakým označením jej může subscriber odebírat / číst.

Protože struktura odesílání dat je pevně definovaná výrobce NETIO, je to prakticky všechno důležité, co je nutné nastavit. Tedy samozřejmě předpokládám správně nastavené LAN ethernetové komunikační parametry v záložce "Nastavení", které musí být nastaveny dle požadavků vaší internetové komunikační brány. V případě napojení NETIO zásuvky přímo na router Vašeho poskytovatele internetu, obvykle zcela stačí aktivovat DHCP funkci a o zbytek se již obvykle postará právě router.

Konkrétně v mém případě jsem provedl následující nastavení zásuvek NETIO PowerPDU 4C:

Příklad nastavení "chytré" zásuvky NETIO PowerPDU 4C pro komunikaci technologií MQTT.

PC software MQTT Explorer

Pro testování a analyzování MQTT přenosu jak v režimu "Publisher", tak v režimu "Subscriber" existuje mnoho různých prográmků / utilit. Ty se někdy označují jako MQTT client.

Některé existují přímo jen jako on-line aplikace v podobě webové stránky otevřené v internetovém prohlížeči (např. HiveMQ client na webu http://www.hivemq.com/demos/websocket-client/ ), jako doplněk do webového prohlížeče Chrome (např. MQTTLens nebo MQTTBox) nebo pak jako různé klasické EXE prográmky či JAVA aplikace pro běžné spuštění na PC (např. MQTT Explorer nebo MQTT.fx).

Většina z nich však umí jen základní příjem nebo odeslání MQTT zprávy ve formátu JSON nebo jako RAW data, ale již neumí nic dalšího, tedy například nějakou vizualizaci přijímaných dat ve formě grafu. A právě v tom je výjimka prográmek "MQTT Explorer", který umožňuje si v opakované stejné přijímané struktuře jednoduše kliknutím myši označit danou položku, kterou chcete zobrazovat průběžně v grafu a následně se v okně grafu budou její postupně přijímané hodnoty zobrazovat jako body a propojovat do křivky. Přejetím myší na zvolené místo křivky pak lze odešít konkrétní hodnotu v čase. Také lze u grafu nastavit všechny základní parametry, jako rozsah zobrazeného časového intervalu na ose X, rozsah hodnot měřené veličiny na ose Y, druh propojení / interpolace křivky jednotlivých bodu naměřených hodnot v grafu, zvolit si barvy křivek, vymazání všech starších dat apod. MQTT Explorer je zdarma a k dispozici pro OS Windows i většinu distribucí OS Linux. Navíc je zatím  v době psaní článku zcela oficiálně zdarma.

Já osobně jsem si pro testování MQTT funkce zásuvek NETIO právě vybral program MQTT Explorer právě pro jeho funkci zobrazení v grafech a navíc možnost si ho stáhnout a spustit jak "Portable software", tedy program, který není nutné prvně do PC instalovat a prostě jej jen stačí je stáhnout a spustit jej jeho EXE souborem.

Příklad nastavení pro navázání komunikace s zásuvkou NETIO PowerPDU, tak jak jsem ji výše nastavil.

Postup vybrání proměnných z příchozích parametrů zařízení pro zobrazení v grafu - pouze stačí kliknout na malou vlnovku vedle každé příslušné proměnné obdržené MQTT zprávy.

Příklad vypnutí a opětovného zapnutí zásuvky PowerPDU na pozici 1 s ukázkou poklesu odběru / příkonu při vypnutí a opětovného zvýšení příkonu po zapnutí.

Ukázka možnosti změny nastavení parametrů zobrazení grafů (obr. vlevo) a možnost zapnutí režimu porovnání aktuálního příchozích záznamů s vybraným záznamem z historie (obr. vpravo).

Závěr

Kombinace Smart zásuvky NETIO s MQTT režimem a programu MQTT Explorer je velmi zajímavé základní řešení, jak si prakticky odzkoušet MQTT komunikaci a zároveň hezky graficky sledovat v reálném čase změnu parametrů (napětí, spotřeby, příkonu) na svém PC.

Zprovoznění je v celku velmi jednoduché a i při mém testování všech po správném zadání fungovalo na první pokus a i dlouhodobě spolehlivě. Při zprovozňování MQTT příjmu na PC je jen nutné si dát pozor na důsledně správné zadání "topic" kanálu, tedy aby v něm nechybělo nějaké písmeno apod. Pokud samozřejmě i jen jediné písmeno v názvu chybí nebo naopak přebývá, tak PS software fungující jako Subscriber se jakoby připojí na jiný "topic kanál", na které ale nikdo nevysílá, a proto nic nevidíte (žádné hodnoty). Na to je nutné si dát opravdu pozor.

Novinkou v nabídce chytrých zásuvek NETIO je rozšířený režim MQTT-flex, který umožňuje již i vlastní konfiguraci MQTT zprávy, tedy jaké hodnoty a parametry se budou publikovat = přenášet a není nutné se již přizpůsobovat přesně definovanému formátu výrobce zařízení.

Odkazy

Hodnocení článku: