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 linke. Podporený je aj MQTTS (Secure MQTT, MQTT over TLS) - buď priamo v D2000 KOM procese (pomocou TLS nastavení na TCP/IP-TCP linke) 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:
- cloudu www.TheThings.network
- cloudu Loriot.io
- cloudu Slovanet
- Pixii PowerShaper (energy storage solution)
- cloudu liveobjects.orange-business.com
- test.mosquitto.org (v režime Payload Type = Sparkplug Host aj Payload Type = Sparkplug Edge Node)
- broker.hivemq.com (v režime Payload Type = Sparkplug Host aj Payload Type = Sparkplug Edge Node)
- ThingsBoard (v režime Payload Type = Sparkplug Edge Node)
- Eclipse™ Sparkplug™ Technology Compatibility Kit (TCK) vo verzii 3.0.0
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 údaje, 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í.
MQTT Sparkplug definuje nasledovné typy správ:
- NBIRTH – Birth certificate for Sparkplug Edge Nodes (informácia o pripojení sa Edge Node k MQTT Serveru)
- NDEATH – Death certificate for Sparkplug Edge Nodes (informácia o strate spojenia MQTT Servera s Edge Node)
- DBIRTH – Birth certificate for Devices (informácia o pripojení sa Device k Edge Node)
- DDEATH – Death certificate for Devices (informácia o strate spojenia Edge Node s Device)
- NDATA – Edge Node data message (dáta od Edge Node)
- DDATA – Device data message (dáta od Device)
- NCMD – Edge Node command message (príkaz Host Application pre Edge Node)
- DCMD – Device command message (príkaz Host Application pre Device)
- STATE – Sparkplug Host Application state message (informácia od stave Host Application pre Edge Node/Device [online / offline]).
MQTT Sparkplug definuje pre všetky typy správ syntax tém (Topic), ktorý má tvar namespace/group_id/message_type/edge_node_id/[device_id], kde:
- namespace je konštanta spBv1.0 (pre Sparkplug B)
- group_id je ľubovolný názov logickej skupiny (napr. podľa typu zariadenia, prevádzky, organizačnej štruktúry atď)
- message_type je typ správy
- edge_node_id je identifikátor Edge Node
- device_id je identifikátor Device (iba ak je správa od/pre Device)
Príklady:
- spBv1.0/Sparkplug Devices/DDATA/Marvin/Sensor1
- pBv1.0/MIMIC/DDATA/20:19:AB:F4:0E:0D/sensor11
- spBv1.0/SparkplugDevices/NBIRTH/JsonScada
Poznámka: správy typu STATE majú Topic v tvare spBv1.0/STATE/sparkplug_host_id, kde sparkplug_host_id je unikátny názov hostiteľskej aplikácie (parameter Sparkplug Host ID).
Príklady:
- spBv1.0/STATE/CFGHUB2023
- spBv1.0/STATE/D2Kom
Všetky typy správ výnimkou STATE majú binárny Sparkplug payload. Správy STATE majú JSON payload - obsahujú iba položky "online" (hodnota True/False) a "timestamp" (časová značka v milisekundách).
Sparkplug payload obsahuje metriky - každú požadovanú metriku je možné nakonfigurovať do jedného meraného bodu. Metrika obsahuje textový identifikátor (zadávaný v konfigurácii meraného bodu ako sparkplug_address), typ hodnoty, hodnotu (jednoduchá/pole/štruktúrovaná), voliteľne časovú značku a ďalšie atribúty. D2000 podporuje prácu s jednoduchými hodnotami a hodnotami typu pole - do meraného bodu sa uloží prvá položka poľa; je možné na meranom bode nakonfigurovať Cieľový stĺpec štruktúry, do ktorého sa uložia všetky položky poľa (resp. prvých N, ak nemá štruktúra dostatočný počet riadkov). D2000 dokáže čítať položky metrík typu šablóna (UDT) a Dataset.
Pozn: ak príde metrika, ktorá má nastavený príznak is_null, meraný bod bude mať Invalid hodnotu.
Odporúčané nastavenia pre optimalizáciu toku dát
- Pokiaľ MQTT server podporuje Topic aliasy, použite MQTT Version = MQTT 5.0, a nastavte Topic Alias Maximum na hodnotu väčšiu ako je počet staníc na linke (pre Payload Type = Sparkplug Edge Node) resp. väčšiu ako počet topicov, ktoré sú očakávané od MQTT brokera (pre Payload Type = Text only / JSON). Na strane MQTT brokera zabezpečte, že jeho hodnota Topic Alias Maximum bude väčšia, ako počet topicov, ktoré budú posielané D2000 KOM procesu - takže namiesto textových topicov budú môcť byť použité numerické aliasy.
Pozn: hodnota Topic Alias Maximum, ktorú MQTT broker posiela pri pripájaní ako parameter CONNACK správy, je viditeľná v logoch komunikácie:
09:31:12.086 13-05-2025|D|MQTT> CONNACK Property # 1 Topic Alias Maximum ( 34)
09:31:12.087 13-05-2025|T|MQTT> Recv:<00><0A>
09:31:12.088 13-05-2025|D|MQTT> CONNACK Property value= 10 - Použite aliasy pre metriky (pre Payload Type = Sparkplug Edge Node): automatické pomocou parametra Sparkplug Alias Mode=Automatic (HOBJ) alebo manuálne pomocou položky SAL=alias v adrese meraného bodu. Pokiaľ použijete manuálne aliasy, používajte nízke čísla (aliasy 1-127 sa zakódujú ako 1 bajt).
- Pre Payload Type = Sparkplug Edge Node: pri väčšom počte zmien výstupných meraných bodov odporúčame nastaviť parameter Batch Size na väčšiu hodnotu ako je defaultná (10) a prípadne zvýšiť parameter Delay v časových parametroch stanice. To spôsobí, že sa bude generovať menej správ (a každá bude obsahovať viacero metrík), čo znižuje réžiu potrebnú na prenesenie jednej metriky. Ak sa konkrétne merané body menia často, v správe môže byť aj niekoľko hodnôt toho istého meraného bodu (s časovými značkami). Nevýhodou je oneskorenie hodnôt.
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: TCP/IP-TCP.
- Host: IP adresa MQTT servera (prípadne redundantné adresy oddelené čiarkou alebo bodkočiarkou).
Pozn: v režime Payload Type = Sparkplug Edge Node je podporená metrika Node Control/Next Server, pomocou ktorej je možné prikázať D2000 KOM procesu, aby sa pripojl na ďalší MQTT server (ak ich je zadaných viacero). - Port: číslo portu je štandardne 1883 alebo 8883 pre kryptovanú SSL/TLS variantu.
- Číslo linky: nepoužité, nastavte hodnotu 0.
Pozn: Štandardný port pre MQTT protokol je 1883 resp. 8883 pre SSL/TLS verziu. D2000 KOM obsahuje implementáciu SSL/TLS varianty protokolu, prípadne je možné ju nakonfigurovať s použitím utility stunnel http://www.stunnel.org pracujúcej v klientskom móde (client = yes). Stunnel bežiaci na rovnakom počítači ako D2000 KOM by mal počúvať na lokálnom porte 1883 a po pripojení sa D2000 KOM procesu na tento port by mal komunikáciu zakryptovať pomocou SLL/TLS a poslať na cieľový MQTT server (typicky na port 8883).
Pozn: pri použití SSL/TLS spojenia je treba dať pozor na expiráciu použitých certifikátov. Dátum expirácie je možné na Linuxe zistiť príkazom
openssl x509 -text -in file.crt | grep "After"
Vynútené prerušenie spojenia: Keď sa všetky stanice na linke dostanú do simulácie alebo majú zastavenú komunikáciu, linka sa odpojí (dôjde ku zavretiu komunikačného socketu). Keď aspoň jedna stanica bude mať vypnutú simuláciu a nebude mať zastavenú komunikáciu (záložka Parametre objektu Stanica), linka sa znovu pripojí.
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:
Tab. č. 1
Parameter | Popis | Jednotka / rozmer | Náhradná hodnota |
---|---|---|---|
Full Debug | Zapnutie podrobných výpisov o posielaní a prijímaní hodnôt. | YES/NO | NO |
MQTT Version | Verzia MQTT protokolu, ktorá sa použije na pripojenie sa k MQTT serveru. Je možné použiť starší štandard MQTT 3.1.1 (október 2014) alebo novší štandard MQTT 5.0 (marec 2019). MQTT brokery zvyčajne podporujú oba štandardy, starší štandard je jednoduchší a úspornejší. Na druhej strane, MQTT 5.0 umožňuje zmenšenie veľkosti správ použitím Topic Aliasov. | MQTT 3.1.1 MQTT 5.0 | MQTT 3.1.1 |
User Name | Užívateľské meno použité v správe CONNECT na pripojenie sa k MQTT serveru. | - | |
Password | Heslo použité v správe CONNECT na pripojenie sa k MQTT serveru. | - | |
Topic Filter | Meno jednej témy alebo filter pre viacero tém posielaný v rámci SUBSCRIBE správy. Filtrom špecifikuje MQTT klient témy, v rámci ktorých chce prijímať správy.
Pozn: pre Payload Type = Sparkplug Edge Node sa automaticky posiela SUBSCRIBE správa aj na topic spBv1.0/STATE/<primaryHostApplication>, pokiaľ je zadaný parameter Sparkplug Host ID (<primaryHostApplication> je hodnota tohto parametra), aby bol D2000 KOM proces informovaný o pripojení sa/odpojení Primary Host Application. Pokiaľ príde STATE správa o odpojení sa Primary Host Application (STATE správa s online=false) a v konfigurácii linky je uvedených viacero IP adries, D2000 KOM proces sa odpojí od MQTT servera a skúša ďalšie MQTT servery, kým nenájde taký, ku ktorému je pripojená Primary Host Application (STATE správa s online=true). | - | # |
Subscribe QoS | Požadovaná maximálna úroveň potvrdzovania (QoS) posielaná v rámci SUBSCRIBE správy. MQTT server môže následne posielať PUBLISH správy s takouto alebo nižšou úrovňou potvrdzovania (ale nie vyššou). PUBLISH správy posielané MQTT serverom budú potvrdzované procesom D2000 KOM podľa úrovne potvrdzovania v nich špecifikovanej. Čím vyššia je úroveň potvrdzovania, tým viac správ je medzi klientom a serverom vymenených (1 pri QoS_0, 2 pri QoS_1 a 4 pri QoS_2). Pozn: Pre Payload Type = Sparkplug Edge Node sa vždy použije QoS_1. | QoS_0 QoS_1 QoS_2 | QoS_1 |
Client ID | Unikátny identifikátor klienta (Client Identifier) posielaný v rámci CONNECT správy. Pozn: je možné zadať aj prázdny reťazec - v tom prípade server môže klientovi prideliť unikátne meno (pokiaľ takúto funkcionalitu podporuje) alebo vráti chybu. Pokiaľ nie je zadaný Client ID, bude ale ignorované nastavenia parametra Clean Session Flag (keďže server pridelí zakaždým unikátne meno). Testovaný MQTT server (thethings.network) vrátil chybu, pokiaľ bolo Client ID prázdne a Clean Session Flag=NO. Pozn: niektoré MQTT brokery (PIXII.COM, Eclipse Mosquitto) identifikovali klientov iba podľa Client ID. V praxi to spôsobovalo, že dva rôzne D2000 systémy, ktoré sa pripájali k jednému brokerovi, boli považované za jedného klienta a broker pri vytvorení spojenia zrušil existujúce spojenie, ktoré považoval za staré, prípadne nedovolil vytvoriť nové spojenie a vrátil chybu Connection Refused, identifier rejected (2). Po nastavení Client ID na unikátnu hodnotu začali komunikácie fungovať bez rozpadov spojení. | - | D2000kom |
Clean Session Flag | Parameter Clean Session Flag správy CONNECT. Hodnota NO znamená, že server použije aktuálny stav session (spojenia) - napr. po rozpade a znovuobnovení TCP spojenia. Znamená to, že sú zaslané všetky nepotvrdené PUBLISH správy s QoS_1 a QoS_2 (a voliteľne aj QoS_0 v závislosti na implementácii). Hodnota YES znamená, že sa session vytvorí nanovo a žiadne nepotvrdené PUBLISH správy nie sú opakované. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný a Clean Session Flag sa nastaví na YES (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a Clean Session Flag sa nastaví na YES (viď popis parametra Sparkplug Host ID). | YES/NO | NO |
Publish QoS | Úroveň potvrdzovania (QoS) použitá pri posielaní PUBLISH správ procesom D2000 KOM. Poslanie PUBLISH správy je dôsledok zápisu do výstupného meraného bodu s adresou OUT_VALUE. Čím vyššia je úroveň potvrdzovania, tým viac správ medzi klientom a serverom poslaných (1 pri QoS_0, 2 pri QoS_1 a 4 pri QoS_2). Pozn: Ak Payload Type = Sparkplug Host alebo Sparkplug Edge Node, tento parameter je ignorovaný a použije sa QoS_0. | QoS_0 QoS_1 QoS_2 | QoS_0 |
Publish Retain | Nastavenie príznaku Retain použité pri posielaní PUBLISH správ procesom D2000 KOM. Aktivácia príznaku Retain spôsobí, že posledná správa poslaná procesom D2000 KOM bude na MQTT serveri dostupná iným klientom okamžite po ich pripojení, ako aj po odpojení D2000 KOM procesu. Pozn: Ak Payload Type = Sparkplug Host alebo Sparkplug Edge Node, tento parameter je ignorovaný a použije sa Retain=False. | YES/NO | NO |
Keep Alive | Parameter Keep Alive posielaný v rámci CONNECT správy. Odporúčaná hodnota Keep Alive je niekoľko minút. D2000 KOM proces posiela PING výzvy podľa nastavení parametrov Keep Alive a Ping Interval (podľa toho, ktorý interval uplynie skôr). | 0-65535 sec | 0 |
Ping Interval | Pokiaľ MQTT server neposlal za špecifikovaný časový interval žiadnu správu, D2000 KOM proces pošle výzvu PING request a očakáva odpoveď PING response (do času Reply Timeout). Hodnota 0 posielanie PING request správ vypína. Parameter umožňuje detekovať rozpadnutie TCP spojenia. | 0-3600 sec | 60 |
Payload Type | Nastavenie parsovania správy:
| Text only JSON Sparkplug Host Sparkplug Edge Node | Text only |
Time Field Name | Ak Payload Type=JSON, tak názov poľa s časovou značkou. Ak názov nie je zadaný alebo pole nie je nájdené, hodnotám je priradený aktuálny čas. | - | - |
Time Mask | Ak Payload Type=JSON, tak maska pre parsovanie hodnoty v JSON poli s časovou značkou. Špeciálne masky sú:
Pozn: od nastavení časových parametrov stanice závisí, či je čas interpretovaný ako lokálny alebo UTC s nakonfigurovaným offsetom. Toto pravidlo neplatí pri použití špeciálnych masiek uvedených vyššie, keď sa používa vždy UTC čas s nulovým offsetom. | - | yyyy-mm-dd hh:mi:ss.mss |
Ignore Missing Time | Ak Payload Type=JSON, ignorovanie chýbajúcej časovej značky - pokiaľ sa v JSON payloade nevyskytuje, nevypíše sa varovanie. | YES/NO | NO |
Will Flag | Parameter Will Flag správy CONNECT. Hodnota Yes znamená, že server pošle záujemcom správu Last Will v prípade straty spojenia s D2000 KOM procesom. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný a Last Will sa posiela (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a Last Will sa posiela (viď popis parametra Sparkplug Host ID). | YES/NO | NO |
Will QoS | Úroveň potvrdzovania (QoS) použitá pri posielaní správy Last Will v prípade straty spojenia s D2000 KOM procesom. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný a nastaví sa QoS_1 (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a nastaví sa QoS_1 (viď popis parametra Sparkplug Host ID). | QoS_0 QoS_1 QoS_2 | QoS_0 |
Will Retain | Nastavenie príznaku Retain použité pri posielaní správy Last Will v prípade straty spojenia s D2000 KOM procesom. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný a Retain sa nastaví na YES (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a Retain sa nastaví na NO (viď popis parametra Sparkplug Host ID). | YES/NO | NO |
Will Topic | Topic použitý pri posielaní správy Last Will v prípade straty spojenia s D2000 KOM procesom. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a Topic sa nastaví podľa Sparkplug štandardu (viď popis parametra Sparkplug Host ID). | - | |
Will Message | Obsah správy Last Will v prípade straty spojenia s D2000 KOM procesom. Pozn: Ak Payload Type = Sparkplug Host a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný (viď popis parametra Sparkplug Host ID). Pozn: Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný a Last Will sa nastaví podľa Sparkplug štandardu (viď popis parametra Sparkplug Host ID). | - | |
Reply Timeout | Pokiaľ do požadovaného času MQTT server neodpovie na správy SUBSCRIBE, UNSUBSCRIBE a PING request, prípadne sa nepodarí načítať ľubovoľnú správu (a je načítaná iba jej časť), D2000 KOM proces vyhlási chybu, zavrie spojenie a znovu ho otvorí. Hodnota 0 vypína časový limit. Parameter umožňuje reagovať na problematické chovanie MQTT servera. | sec | 20 |
Wait Timeout | Timeout čakanie pri jednom čítaní z TCP spojenia. D2000 KOM opakuje čítanie spontánnych dát Max. Wait Retry krát a pokiaľ nenačíta žiadne dáta, je vyhlásený timeout a čítanie je ukončené (a môže nasledovať ďalšie čítanie alebo prípadne zápis). Zmenšením parametrov Wait Timeout a Max. Wait Retry je možné dosiahnuť rýchlejšiu odozvu D2000 KOM procesu na zápis na úkor vyššej záťaže CPU, pokiaľ MQTT server nemá žiadne dáta. Pozn: ak od MQTT servera prichádza veľa správ a D2000 KOM potrebuje aj zapisovať hodnoty, odporúčame nižšu hodnotu parametra (napr. 0.005 sec), aby zápis nebol blokovaný čítaním (v každom prípade ale po 10 prijatých správach nasleduje prerušenie, počas ktorého sa môžu vykonať nahromadené zápisy). | sec | 0.100 |
Max. Wait Retry | Počet opakovaní čítania z TCP spojenia. Pozri popis parametra Wait Timeout. | - | 3 |
Payload Encoding | Kódovanie poľa Payload. MQTT protokol nešpecifikuje obsah poľa Payload; štandardné kódovanie ISO-8859-1 je vhodné na textový aj binárny obsah, UTF-8 je vhodné, ak sú prenášané UTF-8 kódované texty. Aktuálne podporované kódovania sú:
| - | ISO-8859-1 |
MQTT 5.0 Parameters | |||
Topic Alias Maximum | Počet Topic Aliasov, ktoré môže poslať MQTT broker (parameter sa posiela v správe CONNECT). Hodnota 0 (default) znamená, že Topic Aliasy nie sú použité. Parameter je použitý iba pre MQTT Version = MQTT 5.0. Topic Aliasy sú číselné identifikátory z intervalu <1 ... Topic Alias Maximum>, ktoré posiela D2000 KOM ako aj MQTT Broker namiesto textových identifikátorov. Pozn: V správe CONNACK (odpoveď na CONNECT) posiela voliteľne MQTT broker svoju hodnotu "Topic Alias Maximum", ktorá má význam počtu Topic Aliasov, ktoré môže poslať D2000 KOM proces (napr. test.mosquitto.org posiela hodnotu 10). D2000 KOM používa Topic Aliasy iba ak hodnota jeho konfiguračného parametra Topic Alias Maximum je nenulová. | 0 | 0 - 65535 |
Sparkplug parametre | |||
Reorder Timeout | Pre Payload Type = Sparkplug Host: Timeout (v sekundách) na príchod chýbajúcej správy typu NDATA/DDATA. Správy NDATA/DDATA obsahujú sekvenčné číslo (0..255), pričom správa NBIRTH obsahuje sekvenčné číslo 0 (resetuje postupnosť). Ak D2000 KOM zistí medzeru v sekvencii a chýbajúca správa/správy neprídu do času Reorder Timeout, pošle na príslušnú stanicu príkaz NCMD s metrikou 'Node Control/Rebirth', ktorý spôsobí, že príslušný Edge Node pošle NBIRTH správu (a DBIRTH správy pre všetky svoje Devices). Tento parameter je implementovaný na odporúčanie Sparkplug špecifikácie. Pozn: Nastavenie Reorder Timeout=0.000 vypína detekciu chýbajúcich správ. | 05.000 | 0-59.999 |
Report Unknown Metrics | Parameter aktivuje výpisy neznámych metrík a tém (Topicov), ktoré nemajú vlastné stanice, ale skončia na stanici s adresou ".*" (ak taká existuje). Výpisy budú v logu linky ako chybové hlášky aj keď je debug na linke vypnutý (na uľahčenie pridávania meraných bodov). | YES/NO | NO |
Nonstandard Topic | Pre Payload Type = Sparkplug Host: Aktivácia parsovania neštandardných SparkPlug topicov. | YES/NO | NO |
Ignore Unknown Quality | Pre Payload Type = Sparkplug Host: v rámci metriky je možné definovať vlastnosť (Property) s názvom Quality typu Int32. Podľa Sparkplug štandardu musí nadobúdať hodnoty 0=BAD, 192=GOOD, 500=STALE. Akúkoľvek inú hodnotu D2000 Kom proces reportuje ako chybu. Parametrom Ignore Unknown Quality je možné potlačiť tento chybový výpis. | YES/NO | NO |
Browse Dataset Mode | Pre Payload Type = Sparkplug Host: Parameter udáva, ktoré adresy metriky typu Dataset sa zobrazia pri browsovaní:
| - | Columns only |
Item Separator | Pre Payload Type = Sparkplug Host: Oddeľovač jednotlivých úrovní v šablónach (Templates) použitý pri zadávaní adresy meraného bodu v Sparkplug režime. | -> | |
Sparkplug Host ID | Pre Payload Type = Sparkplug Host: Identifikátor Host Aplikácie (D2000 je Host Aplikácia). Pre Payload Type = Sparkplug Edge Node: Identifikátor Primary Host Aplikácie (Host Aplikácie, ktorá je pre tento Edge Node definovaná ako primárna - najdôležitejšia). | - | - |
Store & Forward | Pre Payload Type = Sparkplug Edge Node, parameter zapína Store & Forward funkcionalitu pre všetky stanice na linke: pokiaľ je komunikácia nefunkčná, hodnoty sa ukladajú do pamäte a po obnovení komunikácie sa pošlú s príznakom is_historical. | YES/NO | NO |
Convert Datatype/Timestamp to Text | Pridanie textovej reprezentácie typu hodnoty (napr. Int32) a časovej značky do textového meraného bodu s adresou IN_SP2JS slúžiaceho na konverziu Sparkplug payloadu na JSON a prípadné parsovanie v ESL skripte. | YES/NO | NO |
Konfigurácia komunikačnej stanice
- Komunikačný protokol "MQTT Client Protocol".
- Parametre pollingu na záložke Časové parametre - odporúčaná je hodnota Delay=0.
- Adresa stanice: adresa stanice zodpovedá poľu Topic v správe PUBLISH prijatej od MQTT servera. Adresou môže byť konkrétna téma (Topic), regulárny výraz, znak # reprezentujúci všetky témy, alebo topic .* reprezentujúci všetky témy, ktoré nie sú vhodné pre iné stanice. Priorita spracovania je takáto:
- Pokiaľ je na linke stanica s adresou #, všetky správy sú smerované na jej merané body a ďalej sa nehľadá.
- Ďalej sú prehľadávané všetky ostatné stanice na linke (s výnimkou adresy .*). Ak s Topic zhoduje s adresou stanice, správa je určená pre ňu a ďalej sa nehľadá.
- Ďalej sú prehľadávané všetky ostatné stanice na linke (s výnimkou adresy .*), pričom ich adresa je vyhodnocovaná ako regulárny výraz. Ak s Topic zhoduje s adresou stanice, správa je určená pre ňu a ďalej sa nehľadá. Stanice sú prehľadávané v zostupnom poradí (podľa adresy stanice), takže špecifickejšie výrazy idú ako prvé (napr. status/battery pred status/batt.*)
- Nakoniec ak existuje stanica s adresou .*, správa je určená pre ňu.
V prípade SparkPlug MQTT servera má Topic tvar 'namespace/group_id/message_type/edge_node_id/[device_id]', kde message_type udáva typ správy (napr. DDATA, DBIRTH, DDEATH).
Ak Payload Type = Sparkplug Host: je možné použiť namiesto message_type regulárny výraz (napr. spBv1.0/Sparkplug Devices/.*/MyDevice/Sensor2), aby boli pokryté všetky typy správ. Je odporúčané vynechať časti namespace aj message_type a zapísať Topic v skrátenom tvare group_id/edge_node_id/[device_id] (napr. Sparkplug Devices/MyDevice/Sensor2).
Pozn: Vypnutie komunikácie na všetkých staniciach spôsobí odpojenie komunikácie od MQTT brokera.
Ak Payload Type = Sparkplug Edge Node: jedna stanica na linke by mala zodpovedať Edge Node, jej adresa musí byť v tvare group/node (napr. myGroup/myNode). Na linke môžu existovať iné stanice zodpovedajúce Device/Sensor, ich adresy musia byť v tvare group/node/device (napr. myGroup/myNode/myDevice1), pričom group/node je ten istý ako adresa stanice zodpovedajúcej Edge Node. Podľa Sparkplug štandardu tieto Device/Sensor stanice patria pod príslušnú Edge Node stanicu (sú jej podstanice) a reprezentujú zariadenia, s ktorými Edge Node stanica komunikuje (napr. Modbus protokolom).
Pozn: Vypnutie komunikácie na Edge Node stanici spôsobí odpojenie komunikácie od MQTT brokera.
Pozn:
Ak Payload Type = Sparkplug Host a ak je adresa stanice v skrátenom tvare, stanica nespracúva príkazy (DCMD, NCMD). Ak je v tvare regulárneho výrazu ('namespace/group_id/.*/edge_node_id/[device_id]'), stanica spracúva aj príkazy (včítane príkazu posielaného D2000 KOM procesom, ak Send Node Control/Rebirth=YES). Preto odporúčame adresu stanice v skrátenom tvare. Pokiaľ je potrebné spracovávať aj príkazy (od iných Host Applications), tak vytvoriť inú stanicu s adresou v tvare regulárneho výrazu (napr. spBv1.0/Sparkplug Devices/DCMD/MyDevice).
Ak Payload Type = Sparkplug Edge Node, stanica spracúva príkazy (DCMD, NCMD) a ignorujú sa dátové správy (NDATA, DDATA, NBIRTH, DBIRTH).
Tlačidlo Browse otvorí browsovací dialóg pre adresu stanice. Pokiaľ je komunikácia funkčná, zobrazí sa dialóg s doteraz prijatými Topicmi. Tlačidlom Refresh je možné zoznam prijatých Topicov vyčistiť. Dvojité kliknutie na konkrétny riadok spôsobí, že sa hodnota zo stĺpca Address vloží do konfigurácie stanice, z ktorej bol browsovací dialóg otvorený.
Poznámka: v stĺpci Station sa zobrazuje stanica, ktorej bol Topic priradený (na základe vyššie uvedených priorít spracovania). Pre Sparkplug adresy sa zobrazuje skrátený tvar adresy.
Parametre protokolu stanice
Dialóg konfigurácia stanice - pole "Parameter protokolu".
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 2
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|---|
SSA | Subscribe Station Address | Ak má tento parameter hodnotu YES, do SUBSCRIBE správy je pridaný aj Topic súvisiaci s adresou stanice:
| YES/NO | NO |
SWT | Station Will Topic | Will topic zariadenia. Ak je tento parameter nastavený a je prijatá správa so zhodným topicom, stanica prejde do komunikačnej chyby (StHardErr) a hodnoty meraných bodov sa zneplatnia. Takto je možné emulovať štandardné správanie, ktoré nastane pri chybe komunikácie so zariadením (aj keď komunikácia medzi procesom D2000 Kom a MQTT brokerom je funkčná). Ak Payload Type = Sparkplug Host, nie je nutné zadávať tento parameter - ak príde NDEATH/DDEATH správa s topicom, ktorý zodpovedá adrese stanice, stanica prejde do komunikačnej chyby. | ||
SWP | Station Will Payload | Obsah Will správy. Ak je tento parameter nastavený a je prijatá správa so zhodným topicom ako definuje parameter Station Will Topic, musí byť navyše zhodný aj Payload. Ak tento parameter je prázdny reťazec, stačí zhoda topiccu s parametrom Station Will Topic. Pozn: tento parameter bol implementovaný kvôli MQTT brokerom, ktorí posielajú správy s rovnakým Topic pri pripojení/odpojení zariadenia, pričom rozdiel je iba v Payloade. Ak Payload Type = Sparkplug Edge Node, tento parameter je ignorovaný. | ||
FPT | Payload Type | Nastavenie parsovania správy (preťaženie linkového parametra Payload Type):
| Default Text only JSON Sparkplug | Default |
FTF | Time Field Name | Ak Payload Type = JSON, tak názov poľa s časovou značkou - preťaženie linkového parametra Time Field Name. | - | - |
FTM | Time Mask | Maska pre parsovanie hodnoty v poli s časovou značkou - preťaženie linkového parametra Time Mask). Pozn: od nastavení časových parametrov stanice závisí, či je čas interpretovaný ako lokálny alebo UTC s nakonfigurovaným offsetom. | - | - |
Sparkplug parametre | ||||
SR | Send Node Control/Rebirth | Ak Payload Type = Sparkplug Host, pri pripojení sa k MQTT serveru sa pošle na SparkPlug stanicu príkaz (NCMD alebo DCMD) s metrikou 'Node Control/Rebirth'. Odpoveďou by mala byť správa (NBIRTH/DBIRTH) so všetkými aktuálnymi metrikami. | YES/NO | YES |
BS | Batch Size | Ak Payload Type = Sparkplug Edge Node: Parameter udáva maximálny počet hodnôt (metrík), ktoré sú poslané v jednej správe (NDATA/DDATA). Parameter umožňuje optimalizáciu počtu MQTT správ (viac menších alebo menej väčších s oneskorením). Čítanie hodnôt zo stanice (funkcia ReadAllPoints) spôsobí poslanie nabuffrovaných hodnôt, aj keď ešte nebolo dosiahnuté nakonfigurované maximum (tj. väčšie časové oneskorenie v parametroch stanice spôsobí, že sa môže nabuffrovať viacej hodnôt). | 1-1000 | 10 |
SF | Store & Forward | Ak Payload Type = Sparkplug Edge Node: Parameter umožnuje zmeniť Store & Forward funkcionalitu, ktorú pre všetky stanice na linke definuje linkový parameter Store & Forward. Hodnota Default znamená použitie nastavenia nakonfigurovaného na linke. | Default False True | Default |
SFBS | Store & Forward Batch Size | Pokiaľ je aktívna Store & Forward funkcionalita (viď parameter Store & Forward), parameter udáva maximálny počet historických hodnôt, ktoré sú poslané v jednej správe (NDATA/DDATA) po obnovení komunikácie. | 1-1000 | 10 |
SAM | Sparkplug Alias Mode | Ak Payload Type = Sparkplug Edge Node, parameter určuje režim používania aliasov. Aliasy sú numerické (celočíselné - Int64) identifikátory, používané voliteľne v správach s dátami a príkazmi (NDATA/DDATA/NCMD/DCMD) namiesto textových identifikátorov, z dôvodu zmenšenia veľkosti správ. Ak sa používajú, v správe NBIRTH/DBIRTH sú uvedené spolu s textovými identifikátormi. Aliasy musia byť unikátne v rámci všetkých meraných bodov patriacich pod jednu stanicu.
| Default (SAL=alias) Automatic (HOBJ) Off | Default (SAL=alias) |
SJM | Sparkplug-to-JSON Mode | Parameter definuje formát JSON dát pre meraný bod s adresou IN_SP2JS (konverzia Sparkplug payloadu na JSON). JSON dáta sú buď generované v kompaktnom stave vhodnom pre ďalšie strojové spracovanie (polia oddelené medzerami), alebo v tvare vhodnom na zobrazenie pre ľudí (multiline formát). | Compact Multiline | Compact |
Konfigurácia meraných bodov
Možné typy hodnôt meraných bodov: Ci, Co, TxtI, TxtO, Qi, Ci, Co, Ai, Ao, Di, Do, TiR, ToR, TiA, ToA.
MQTT implementácia podporuje tri režimy práce:
- Textový režim: Pôvodná implementácia MQTT protokolu obsahovala iba vstupné textové merané body s adresami IN_TOPIC, IN_DATA a voliteľne dvojicu bodov s adresami IN_ID a ACK_ID. Prvé dva body slúžili na zverejnenie prijatého Topicu a Payloadu (ktorý bolo následne potrebné parsovať v skripte), druhé dva body slúžili na zverejnenie identifikátora paketu a potvrdenie spracovania paketu. Tak bolo možné zabezpečiť, že pre dáta posielané s QoS > QoS_0 bolo poslané potvrdenie až po spracovaní dát v skripte.
Na zápis slúžia výstupné body s adresami OUT_TOPIC a OUT_VALUE. - JSON režim: Rozšírenie pre spracovanie Payloadu s JSON dátami (Payload Type=JSON) bolo implementované s pomocou vstupných meraných bodov s adresami JA=json_address. D2000 KOM proces priamo parsuje JSON payload a nastavuje hodnoty meraných bodov s JSON adresami. Merané body s adresami IN_TOPIC, IN_DATA, IN_ID a ACK_ID vôbec nemusia existovať.
Na zápis slúžia výstupné body s adresami OUT_TOPIC a OUT_VALUE. - Sparkplug režim: Rozšírenie pre spracovanie Payloadu so Sparkplug dátami (Payload Type = Sparkplug Host/Edge Node) bolo implementované s pomocou vstupných meraných bodov s adresami SA=sparkplug_address. D2000 KOM proces priamo parsuje Sparkplug payload a nastavuje hodnoty meraných bodov so Sparkplug adresami. Merané body s adresami IN_TOPIC, IN_DATA, IN_ID a ACK_ID vôbec nemusia existovať.
Zápis jednoduchých hodnôt je možný pomocou výstupných bodov s adresami SA=sparkplug_address alebo ST=type;SA=sparkplug_address, kde type je definícia Sparkplug dátového typu (napr. Int8, UInt16, DateTime, String atď). Výstupné body musia byť na stanici so Sparkplug adresou, keďže Topic pri zápise sa odvodzuje od nej.
Pozn: Správy typu STATE (generované klientami typu Host Application), ktoré majú JSON payload, je možné parsovať s meranými bodmi s JSON adresou (typicky meraný bod typu Di s adresou JA=online)
Typ bodu | Adresa | Popis | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Body pre čítanie dát poslaných MQTT serverom správou PUBLISH (zvyčajne používané v textovom režime alebo režime JSON, zriedkavo v režime Sparkplug). Pozn: hodnoty bodov sú nastavené D2000 KOM procesom v poradí IN_TOPIC, IN_DATA a IN_ID. Nie je nutné, aby konfigurácia obsahovala všetky tri body. | ||||||||||||||||
TxtI | IN_TOPIC | Téma (Topic) prijatej správy PUBLISH. | ||||||||||||||
TxtI | IN_DATA | Dáta (Payload) prijatej správy PUBLISH. | ||||||||||||||
Ci | IN_ID | Identifikátor paketu (Packet Identifier) správy PUBLISH, ktorý závisí od úrovne potvrdzovania (QoS). Pre správy posielané s QoS_0 je identifikátor nulový, pre QoS_1 a QoS_2 je to kladné 16-bitové číslo. Pozn: ak MQTT server posiela aj správy s úrovňou potvrdzovania QoS_0 a je nakonfigurovaný bod ACK_ID, odporúčame na záložke Filter aktivovať voľbu Nová hodnota pri zmene času, aby opakovaný zápis hodnoty 0 spôsobil generovanie novej hodnoty líšiacej sa iba časovou značkou. | ||||||||||||||
Bod pre potvrdenie prijatia dát MQTT serveru. | ||||||||||||||||
Co | ACK_ID | Ak je definovaný výstupný meraný bod s adresou ACK_ID, D2000 KOM očakáva potvrdenie spracovania každej správy zápisom kópie hodnoty bodu IN_ID. Až následne nastaví do bodov IN_TOPIC, IN_DATA a IN_ID (v tomto poradí) hodnoty z ďalšej prijatej PUBLISH správy (ak bola medzitým prijatá). V prípade úrovne potvrdzovania QoS_0 je teda nutné opakovane zapisovať do bodu hodnotu 0. Pokiaľ meraný bod ACK_ID neexistuje, hodnoty do bodov IN_TOPIC, IN_DATA a IN_ID sú nastavované ihneď po spracovaní PUBLISH správy. Pozn: pre správy prijaté s úrovňou potvrdzovania QoS_0 sa neposiela žiadne potvrdenie MQTT serveru, iba sa zverejnia hodnoty ďalšej prijatej PUBLISH správy. | ||||||||||||||
Body pre posielanie hodnôt MQTT serveru správou PUBLISH. Pozn: ak má D2000 KOM proces posielať MQTT serveru správy PUBLISH, musia byť definované obidva body v rámci jednej stanice. | ||||||||||||||||
TxtO | OUT_TOPIC | Téma (Topic) v rámci posielanej správy PUBLISH. Pozn: ak meraný bod s adresou OUT_TOPIC neexistuje, ako Topic sa použije priamo adresa stanice (ak je prázdna, zápis sa nevykoná). | ||||||||||||||
TxtO | OUT_VALUE | Dáta (Payload) v rámci posielanej správy PUBLISH. Pozn: poslanie správy sa uskutoční ako reakcia na zápis do bodu OUT_VALUE (t.j. pokiaľ sa Topic nemení, tak stačí bod OUT_TOPIC nastaviť jednorazovo - napr. pomocou štartovacej hodnoty). | ||||||||||||||
Body pre parsovanie JSON správ | ||||||||||||||||
TxtI, TxtO, Qi, | JA=json_address | Pokiaľ Payload Type=JSON, správa je parsovaná ako JSON dáta. Hodnota json_address udáva názov JSON poľa, ktorého hodnota sa má priradiť do meraného bodu. Príklady viď popis meraných bodov typu Envelope protokolu LoRaWAN. Je podporený aj zápis do meraného bodu s JSON adresou, ktorá ale nesmie mať indexy. Príklady korektných adries na zápis:
Pri zápise sa generuje JSON obsahujúci samotnú hodnotu ako aj voliteľne časovú značku, ak je nastavený protokolový parameter stanice Time Field Name resp. linkový parameter Time Field Name. | ||||||||||||||
Body pre parsovanie Sparkplug správ | ||||||||||||||||
TxtI, TxtO, Qi, |
SAL=alias;SA=sparkplug_address ST=type;SA=sparkplug_address ST=type;SAL=alias;SA=sparkplug_address | Pokiaľ Payload Type = Sparkplug Host/Edge Node, správa je parsovaná ako Sparkplug dáta (binárny formát postavený na Google Protocol Buffers). Sparkplug dáta obsahujú metriky, ktoré majú textové identifikátory (sparkplug_address) alebo prípadne numerické aliasy (alias). Čítanie položiek šablón (Templates) je možné zadaním sparkplug_address vo formáte <TemplateName1><Separator><TemplateName2><Separator> ... <Separator><ItemName> kde:
Príklady adries položiek šablón: Čítanie položiek datasetov (ekvivalent štruktúrovaných premenných v D2000) je možné zadaním sparkplug_address vo formáte <DatasetName>[<Row>]^<ColumnName> kde:
Príklady adries položiek datasetov: Pri výstupných bodoch je možné explicitne uviesť aj typ hodnoty (ST=type). Podporované sú jednoduché typy (nie položky šablón alebo datasetov):
Pokiaľ typ hodnoty nie je uvedený, prednastavená hodnota závisí od typu meraného bodu:
Pozn: medzi typmi String a Text nie je žiaden rozdiel. Pre Payload Type = Sparkplug Edge Node je pri vstupných aj výstupných bodoch možné uviesť aj numerický alias (SAL=alias) ako prirodzené číslo (0, 1, 2, ...). Alias meraného bodu v rámci stanice musí byť unikátny. Alias umožňuje zmenšiť veľkosť prenášaných dát: v správe NBIRTH/DBIRTH sa uvedie pre každý bod textový identifikátor (sparkplug_address) aj alias, v správach NDATA/DDATA sa posielajú iba aliasy, ktoré sú kratšie ako textové adresy. Alias je použitý iba ak Sparkplug Alias Mode = "Default (SAL=alias)". PUBLISH správa vytvorená pri zápise obsahuje Topic odvodený od adresy stanice. Typ správy závisí od adresy stanice:
Payload správy obsahuje časovú značku, typ hodnoty (type), zapisovanú hodnotu (zakódovanú podľa špecifikovaného typu hodnoty) a názov metriky (sparkplug_address) respektíve alias. | ||||||||||||||
TxtI | IN_SP2JS | Meraný bod slúži na konverziu Sparkplug payloadu na JSON reprezentáciu, ktorá môže byť následne spracovaná napr. v ESL skripte. V závislosti od parametra Convert Datatype/Timestamp to Text sa pridáva aj textová reprezentácia typu hodnoty a časovej značky. {"metrics":[{"datatype":3,"int_value":7338992,"name":"Corrected Vol Acc Stn","timestamp":1729664005479}],"seq":32,"timestamp":1729664005479} { Príklad komplexnejšej hodnoty obsahujúcej properties a dataset a zobrazujúcej aj textovú reprezentáciu dátového typu (datatype_txt) a časovej značky (timestamp_txt) v dôsledku nastaveného parametra Convert Datatype/Timestamp to Text. { |
Poznámka: je možné monitorovať aj stav iných Sparkplug Host Application pripojených k MQTT serveru. Ak je Identifikátor Host Application napr. "ACME", tak je potrebné vytvoriť stanicu s adresou "spBv1.0/STATE/ACME" (alebo v skrátenom tvare "ACME") a na nej meraný bod typu Di s adresou "JA=online" (keďže Host Application posiela STATE správu s JSON payloadom).
Browse
Pre merané body v Sparkplug Host režime je možné zistiť zoznam metrík, pokiaľ KOM proces beží a komunikácia s MQTT serverom je nadviazaná.
(Pre merané body v Sparkplug Edge Node je možné zistiť iba zoznam metrík, do ktorých boli uskutočnené zápisy pomocou NCMD/DCMD topicov).
Po kliknutí na tlačidlo Browse sa otvorí okno MQTT Item Browser a zobrazí sa zoznam doteraz načítaných metrík. Zoznam objektov sa vytvára dynamicky v dôsledku prijatých správ .
Zoznam objektov je dynamický, t.j. pri príchode novej hodnoty do KOM procesu je aktualizovaný. Podporované je aj filtrovanie v jednotlivých stĺpcoch (s výnimkou časového stĺpca Time), v maske je možné používať hviezdičky (napr. *Short*).
Dvojité kliknutie na konkrétny riadok spôsobí, že sa hodnota zo stĺpca Address vloží do konfigurácie meraného bodu, z ktorého bolo okno MQTT Item Browser otvorené. Zároveň sa vloží aj do clipboardu.
Tlačidlo Refresh spôsobí vymazanie zoznamu hodnôt v CNF aj v KOM procese a prípadne poslanie Rebirth príkazu (v Sparkplug Host režime, ak Send Node Control/Rebirth=YES).
V stĺpci Value sa nachádza prijatá hodnota.
Tell príkazy
Príkaz | Syntax | Popis |
---|---|---|
STCOMMAND | STCOMMAND MenoStanice PUTOLDVAL BeginTime EndTime | Pre Payload Type = Sparkplug Edge Node: Tell príkaz vyčíta historické hodnoty výstupných meranýcho bodov (pokiaľ sú merané body alebo ich riadiace objekty archivované) a pošle ich ako historické hodnoty. Vyčítavanie funguje nezávisle od parametra protokolu Store & Forward. Pomocou tohto príkazu je možné poslať historické hodnoty aj za obdobie, keď bol D2000 KOM vypnutý (a teda nemohla fungovať Store & Forward funkcionalita).Parametre BeginTime a EndTime musia byť vo formáte "dd-mm-yyyy hh:mi:ss" Príklad: STCOMMAND B.MQTT_MOSQUITTO_EN.Device1 PUTOLDVAL "30-05-2025 00:00:00" "30-05-2025 00:10:00" |
Literatúra
Odkazy
Oficiálna stránka MQTT protokolu http://mqtt.org
Stránka MQTT Sparkplug protokolu https://sparkplug.eclipse.org
Špecifikácie a štandardy
MQTT 3.1.1 špecifikácia http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
ISO/IEC 20922:2016 http://www.iso.org/standard/69499.html
Popisy dátových formátov a API
www.loriot.io - Application API Data Format https://www.loriot.io/home/documentation.html#docu/app-data-format
www.thethingsnetwork.org - API Reference https://www.thethingsnetwork.org/docs/applications/mqtt/api.html
Príklad komunikácie - textový payload
Priložený ZIP obsahuje konfiguráciu dvoch liniek a dvoch staníc s MQTT protokolom a definíciu schémy S.MqttTest. Dáta zapísané cez jednu linku sú prijaté cez druhú linku. Funkčnosť bola overená voči brokeru Mosquitto inštalovanému lokálne na Windows, počúvajúcemu na TCP porte 1883.
Príklad komunikácie - Sparkplug B payload
Priložený ZIP obsahuje konfiguráciu dvoch liniek a štyroch staníc s protokolom MQTT Sparkplug B. Obidve linky sa pripájajú (striedavo) k serverom test.mosquitto.org a localhost.
Linka L.MQTT_MOSQUITTO_EN (rodič MQTT_MOSQUITTO_EN.KOM) je v režime Sparkplug Edge Node (producent dát), má dve stanice B.MQTT_MOSQUITTO_EN (Edge Node s adresou myGroup/myEdgeNode) a B.MQTT_MOSQUITTO_EN.Device1 (Device s adresou myGroup/myEdgeNode/myDevice1). Tieto stanice zverejňujú hodnoty objektov Hour, Min, Sec.
Parameter linky Sparkplug Host ID je nastavený na "D2000komHA" (Host aplikácia s týmto menom je považovaná za primárnu). Linka L.MQTT_MOSQUITTO_EN sa pripája striedavo k serverom test.mosquitto.org a localhost, kým nenájde pripojenú Primárnu Host Aplikáciu.
Linka L.MQTT_MOSQUITTO_HA (rodič MQTT_MOSQUITTO_HA.KOM) je v režime Sparkplug Host (konzumer dát), má dve stanice B.MQTT_MOSQUITTO_HA (príjem dát s topicom myGroup/myEdgeNode) a B.MQTT_MOSQUITTO_HA.Device1 (príjem dát s adresou myGroup/myEdgeNode/myDevice1). Tieto stanice prijímajú hodnoty objektov zverejňované meranými bodmi na Sparkplug Edge Node staniciach.
Parameter linky Sparkplug Host ID je nastavený na "D2000komHA" (toto je identifikácia Host aplikácie).
Pomocou výstupných meraných bodov na Sparkplug Host staniciach (M.MQTT_MOSQUITTO_HA.Output1_Int32, M.MQTT_MOSQUITTO_HA.Output2_Float a M.MQTT_MOSQUITTO_HA.Device1.Output1_Bool) je možné posielať DCMD a NCMD správy a zapisovať do vstupných meraných bodov na Sparkplug Edge Node staniciach (M.MQTT_MOSQUITTO_EN1.Input1, M.MQTT_MOSQUITTO_EN1.Input2 a M.MQTT_MOSQUITTO_EN.Device1.Input1_Bool).
Blog
O protokole MQTT si môžete prečítať blog
Revízie dokumentu
- Ver. 1.0 - 8. august 2017 - vytvorenie dokumentu.
- Ver. 1.1 - 15. október 2021 - podpora parametrov pre LastWill a Retain
- Ver. 1.2 - 27. október 2021 - podpora parsovania JSON správ
- Ver. 1.3 – 1. február 2022 – podpora časových značiek v správach JSON
- Ver. 1.4 – 4. októbra 2024 – podpora pre MQTT Sparkplug (v režime Sparkplug Host), podpora pre browsovanie
- Ver. 1.5 - 8. novembra 2024 - podpora pre MQTTS (kryptované MQTT, MQTT cez TLS)
- Ver. 1.6 - 25. apríla 2025 - podpora pre MQTT Sparkplug (v režime Sparkplug Edge Node)
- Ver. 1.7 - 5. mája 2025 - podpora aliasov v režime MQTT Sparkplug
- Ver. 1.8 - 12. mája 2025 - podpora MQTT 5.0
Súvisiace stránky:
Add Comment