MQTT Client (Message Queue Telemetry Transport)

MQTT Client (Message Queue Telemetry Transport)

Podporované typy a verzie zariadení 
O protokole MQTT Sparkplug
Konfigurácia komunikačnej linky
Parametre protokolu linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Tell príkazy
Literatúra
Revízie dokumentu

Podporované typy a verzie zariadení


Protokol je implementáciou štandardu MQTT 3.1.1 (október 2014) a štandardu MQTT 5.0 (marec 2019). MQTT protokol je klient/server protokol typu subscribe/publish. Je jednoduchý, má malú réžiu a je ľahko implementovateľný. Používa sa na komunikáciu M2M (Machine to Machine) a v kontexte IoT (Internet of Things). MQTT server sa nazýva aj MQTT broker.
D2000 KOM implementuje klientskú časť protokolu. Protokol je implementovaný na TCP/IP-TCP a TCP/IP-TCP Redundant linkách. Podporený je aj MQTTS (Secure MQTT, MQTT over TLS) - buď priamo v D2000 KOM procese (pomocou TLS nastavení na TCP/IP-TCP a TCP/IP-TCP Redundant linkách) alebo cez utilitu stunnel.
Pre prenos LoRaWAN dát v rámci MQTT protokolu pozri popis protokolu LoRaWan.

Je podporený aj Sparkplug 3.0.0 štandard (Sparkplug B MQTT Payload). Podpora zahŕňa:

  • Pripojenie sa k MQTT brokeru ako Host Application (konzument dát, v režime Payload Type = Sparkplug Host):

    • čítanie jednoduchých typov hodnôt

    • čítanie polí (s podporou Cieľového stĺpca štruktúry)

    • zápis jednoduchých typov hodnôt (NCMD, DCMD)

    • čítanie položiek šablón (UDT)

    • čítanie položiek datasetov

    • podpora aliasov

    • podpora kompresie (GZIP,DEFLATE)

    • browsovanie - zistenie zoznamu metrík

  • Pripojenie sa k MQTT brokeru ako Edge Node (producent dát, v režime Payload Type = Sparkplug Edge Node):

    • zverejňovanie hodnôt s jednoduchými typmi

    • spracovanie príkazov (NCMD, DCMD) s jednoduchými typmi hodnôt

    • spracovanie príkazov (NCMD, DCMD) s položkami šablón (UDT)

    • spracovanie príkazov (NCMD, DCMD) s položkami datasetov

    • spracovanie príkazov (NCMD, DCMD) s poliami

    • spracovanie príkazu NCMD s metrikou Node Control/Next Server (pripojenie sa na ďalší MQTT server, ak ich je na linke nakonfigurovaných niekoľko)

    • spracovanie správy STATE s obsahom online=false, ktorá pochádza od Primary Host Aplikácie (odpojenie sa od MQTT servera a skúšanie ďalšieho, ak ich je na linke nakonfigurovaných niekoľko - hľadanie MQTT servera s pripojenou Primary Host Aplikáciou)

    • podpora aliasov

Komunikácia bola testovaná/nasadená voči:

Pozn: bola otestovaná aj komunikácia voči cloudu liveobjects.orange-business.com cez websockety (wss://liveobjects.orange-business.com:443/mqtt). Ako WSS wrapper bol použitý program https://github.com/jimparis/unwebsockify.git. Tento bol spustený s parametrami:
./unwebsockify.py --port 1883 --listen 172.16.0.1 wss://liveobjects.orange-business.com:443/mqtt
D2000 KOM proces sa pripájal k adrese 172.16.0.1 na port 1883. WSS wrapper sa pripojil na definovanú URL a zabalil dáta MQTT komunikácie do websocket obálky.



Každá PUBLISH správa obsahuje tému (Topic), samotné dáta (Payload) a úroveň potvrdzovania (QoS). PUBLISH správy môže odosielať klient aj server. Klient na začiatku komunikácie použije správu SUBSCRIBE na oznámenie, o aké témy (parameter protokolu Topic Filter) má záujem.

Protokol definuje tieto úrovne potvrdzovania PUBLISH správ - QoS (Quality of Service):

  • QoS_0 - správa PUBLISH nie je potvrdzovaná, môže dôjsť ku strate

  • QoS_1 - správa PUBLISH je druhou stranou potvrdzovaná PUBACK, môže dôjsť k duplicite

  • QoS_2 - správa PUBLISH je druhou stranou potvrdzovaná PUBREC, tá je spätne potvrdzovaná správou PUBREL a tá finálne správou PUBCOMP

Úroveň potvrdzovania správ posielaných procesom D2000 KOM definuje parameter protokolu Publish QoS. D2000 KOM proces považuje zápis výstupného meraného bodu za úspešne ukončený v závislosti od QoS:

  • QoS_0 - po úspešnom odoslaní dát cez TCP spojenie

  • QoS_1 - po prijatí PUBACK

  • QoS_2 - po prijatí PUBCOMP

Komunikácia MQTT sa začína správou CONNECT, ktorú pošle klient (D2000 KOM). Správa obsahuje prihlasovacie meno (User Name), heslo (Password) a ďalšie parametre, ktoré sa dajú nastaviť: Clean Session Flag, Client ID, Will Flag, Will QoS, Will Retain, Keep Alive a Will Topic. Server odpovedá správou CONNACK s návratovým kódom, ktorý obsahuje informáciu o úspešnosti pripojenia.
Následne klient pošle správu SUBSCRIBE s filtrom tém (parameter Topic Filter), o ktoré má záujem a požadovanou maximálnou úrovňou potvrdzovania (parameter Subscribe QoS).
Server odpovedá návratovým kódom, ktorý obsahuje informáciu o úspešnosti a maximálny QoS, ktorý bol pre požadované témy pridelený.
Nasleduje bežná komunikácia, počas ktorej klient aj server posielajú PUBLISH správy (klient s ľubovoľnou témou, server s témami zodpovedajúcimi filtru tém prijatej SUBSCRIBE správy) a podľa hodnoty parametra QoS prijatých správ PUBLISH ich potvrdzujú.
Pokiaľ server nepošle žiadnu správu dlhšie ako Ping Interval sekúnd, klient pošle PING request správu, na ktorú server musí odpovedať PING response správou (do času špecifikovaného parametrom Reply Timeout).
Pokiaľ dôjde k zmene parametrov na linke, spojenie je zavreté a znovu vytvorené.

O protokole MQTT Sparkplug

Protokol MQTT Sparkplug definuje 3 skupiny aplikácií:

  • Edge Node - Má podporu MQTT protokolu a pripája sa k MQTT serveru. Posiela mu údaje získané z Device alebo vlastné, prípadne agregované.

  • Device/Sensor - Reprezentuje fyzické alebo logické zariadenie pripojené k Edge Node a poskytujúce procesné dáta alebo metriky.

  • Host Application - Reprezentuje spotrebiteľa dát (SCADA/MES systém, Historian, analytický nástroj), ktorý sa pripája k MQTT serveru a prijíma MQTT dáta od Edge Node/Device a prípadne poveluje.

D2000 je môže fungovať v režime Host Application alebo v režime Edge Node (plus jeden alebo viacero Device/Sensor zariadení) podľa parametra linky Payload Type. V režime Edge Node musí byť na linke nakonfigurovaná práve jedna stanica s adresou Edge Node a voliteľne ďalšie stanice s adresami podriadených Device/Sensor zariadení.