Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

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-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 linkeRedundant linkách) alebo cez utilitu stunnel.
Pre prenos LoRaWAN dát v rámci MQTT protokolu pozri popis protokolu LoRaWan.

...

Protokol MQTT Sparkplug definuje 3 skupiny aplikácií:

  • Edge Node - 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 Reprezentuje fyzické alebo logické zariadenie pripojené k Edge Node a poskytujúce údaje, procesné dáta alebo metriky.
  • Host Application - reprezentuje 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.

...

  • 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 TypeText 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

  • Nastavte Subscribe QoS = QoS_0, aby sa nevyžadovali potvrdzovania PUBLISH správ (pokiaľ nie sú z nejakých dôvodov potrebné). Pokiaľ je navyše aktívne aj TLS, tak toto spôsobí, že malý paket (napr. PUBACK pre QoS_1) je zašifrovaný a výsledkom je väčší šifrovaný paket.
  • Použite aliasy pre metriky (pre 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 10-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.

...

  • Kategória komunikačnej linky: TCP/IP-TCP alebo TCP/IP-TCP Redundant.
  • Host: IP adresa MQTT servera (prípadne redundantné adresy oddelené čiarkou alebo bodkočiarkou).
    Pozn: v 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 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"

Poznámky k redundancii MQTT brokerov

Ak je nakonfigurovaná linka TCP/IP-TCP, vytvára sa jedno TCP spojenie, ktoré môže smerovať na jednu z nakonifigurovaných IP adries.

Ak je nakonfigurovaná linka TCP/IP-TCP Redundant, vytvárajú sa dve TCP spojenia (na 2 MQTT brokery), z ktorých každé môže smerovať na jednu z viacero zadaných IP adries. D2000 KOM proces prijíma hodnoty od obidvoch MQTT brokerov a všetky hodnoty výstupných meraných bodov posiela obidvom MQTT brokerom. Zápis je považovaný za úspešný, ak je hodnota úspešne poslaná aspoň jednému MQTT brokerovi (v prípade potvrdzovania, ak "Subscribe QoS" > QoS_0, ak je potvrdený aspoň jedným z MQTT brokerov).
Takáto konfigurácia umožňuje nakonfigurovať redundantný systém, v ktorom D2000 KOM sa pripája k dvom redundantným MQTT brokerom a druhá strana aspoň k jednému MQTT brokeru, pričom MQTT brokery nemusia tvoriť "cluster", tj. synchronizovať si medzi sebou správy (takže sa dá použiť aj jednoduchý a bezplatný Eclipse Mosquitto - viď príklad konfigurácie).

Vynútené prerušenie spojenia: Keď sa všetky stanice 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í.

V režime Payload Type = Sparkplug Edge Node, pokiaľ je zastavená komunikácia na Edge Node stanici, linka sa odpojí (aj keď podstanice typu Device majú komunikáciu zastavenú). Ak je zastavená komunikácia na Device stanici a Edge Node stanica komunikuje, D2000 KOM pošle správu DDEATH a po zapnutí Device stanice pošle správu DBIRTH.

 

Kotva
linka_parametre
linka_parametre
Parametre protokolu linky

...

ParameterPopisJednotka / rozmerNáhradná hodnota
Kotva
fd
fd
Full Debug
Zapnutie podrobných výpisov o posielaní a prijímaní hodnôt.YES/NONO

Kotva
mv
mv
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
Kotva
un
un
User Name
Užívateľské meno použité v správe CONNECT na pripojenie sa k MQTT serveru.-
Kotva
pw
pw
Password
Heslo použité v správe CONNECT na pripojenie sa k MQTT serveru.-
Kotva
tc
tc
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: témy sú zoradené hierarchicky, ako oddeľovač slúži lomka (/), ako maska jednej úrovne slúži plus (+), ako maska pre viacero úrovní znak hash (#).
Príklady filtra: a/b , level1/+ , # , +/+/+/up
Pozn: zmena parametra Topic Filter sa prejaví po reštarte komunikácie - napr. v dôsledku rozpadnutia TCP spojenia, pokiaľ sú všetky stanice na linke vypnuté (StOff) a znovu zapnuté, prípadne po reštarte KOM procesu. V prvých dvoch prípadoch sa posiela správa UNSUBSCRIBE na pôvodný Topic Filter a následne SUBSCRIBE na nový Topic Filter (to môže byť dôležité pri tzv. perzistentných sessions, keď je zadaný parameter Client ID a MQTT server si pamätá stav klienta aj po rozpade TCP spojenia).
Pozn: pre Payload Type = Sparkplug Host postačuje filter spBv1.0/# na príjem všetkých Sparkplug správ. Je možné zadať aj prázdny filter, keďže štandardne sa generuje SUBSCRIBE na BIRTH/DATA/DEATH správy odvodené od adries staníc, ktoré sú v Sparkplug formáte (group_id/edge_node_id/[device_id]).
Pozn: pre Payload Type = Sparkplug Edge Node sa automaticky posiela SUBSCRIBE správa aj na všetky NCMD/DCMD témy odvodené od adries Edge Node/Device staníc nakonfigurovaných na linke.
Príklad: 

  • pre Edge Node stanicu s adresou myGroup/myEdgeNode sa posiela SUBSCRIBE správa na topic spBv1.0/myGroup/NCMD/myEdgeNode
  • pre Device stanicu s adresou myGroup/myEdgeNode/myDevice1 sa posiela SUBSCRIBE správa na topic spBv1.0/myGroup/DCMD/myEdgeNode/myDevice1

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).

-#
Kotva
sq
sq
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

Kotva
ci
ci
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
Kotva
cs
cs
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/NONO

Kotva
pq
pq
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

Kotva
pr
pr
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/NONO

Kotva
ka
ka
Keep Alive

Parameter Keep Alive posielaný v rámci CONNECT správy.
Ak je nenulový, udáva interval v sekundách, do ktorého musí klient poslať nejakú správu (ak ju nepošle, MQTT broker ho môže odpojiť). Ak nemá dáta, ktoré by mohol poslať, pošle aspoň výzvu PING request. Nulová hodnota znamená, žte MQTT broker nevyžaduje periodické posielanie správ.

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 sec0

Kotva
pi
pi
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 sec60

Kotva
pt
pt
Payload Type

Nastavenie parsovania správy:

  • Text only - správa nie je parsovaná, priradí sa do meraného bodu s adresou IN_TOPIC
  • JSON - správa sa parsuje ako JSON dáta. Ak existuje meraný bod s adresou IN_TOPIC, celá správa bude priradená do neho.
    Ak existujú body s adresami JA=json_address, budú naplnené príslušnými dátami z JSON správy. Ak v správe také adresy neexistujú, budú merané body zneplatnené.
  • Sparkplug Host - správa sa parsuje ako Sparkplug B payload (binárne kódovaný), D2000 KOM proces sa správa ako Host Application (spotrebiteľ údajov, posiela CMD a STATE správy).
  • Sparkplug Edge Node - správa sa parsuje ako Sparkplug B payload (binárne kódovaný), D2000 KOM proces sa správa ako Edge Node (producent údajov, posiela BIRTH a DATA správy).

Text only

JSON

Sparkplug Host

Sparkplug Edge Node

Text only

Kotva
tf
tf
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.
Viac informácii o formáte názvu poľa viď body s adresami JA=json_address.

--
Kotva
tm
tm
Time Mask
Ak Payload Type=JSON, tak maska pre parsovanie hodnoty v JSON poli s časovou značkou. Špeciálne masky sú:
  • UNIX - číselná hodnota vyjadruje počet sekúnd od epochy 00:00:00 01.01.1970 UTC.
  • UNIXMS - číselná hodnota vyjadruje počet milisekúnd od epochy 00:00:00.000 01.01.1970 UTC.
  • ISO8601 - textový formát podľa ISO 8601, ekvivalent špecifikovania masky 'yyyy-mm-ddThh:mi:ss.mssZ' (napr. 2025-05-28T05:51:10.112Z)

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

Kotva
imt
imt
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/NONO

Kotva
wf
wf
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/NONO

Kotva
wq
wq
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

Kotva
wr
wr
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/NONO

Kotva
wtp
wtp
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).
-

Kotva
wm
wm
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).
-
Kotva
rt
rt
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.
sec20
Kotva
wt
wt
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).
sec0.100
Kotva
mwr
mwr
Max. Wait Retry
Počet opakovaní čítania z TCP spojenia. Pozri popis parametra Wait Timeout.-3

Kotva
pe
pe
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ú:

  • UTF-8

  • ISO-8859-1

  • Windows-1250

-

ISO-8859-1

MQTT 5.0 Parameters

Kotva
tam
tam
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á.
Pozn: Topic Aliasy posiela D2000 KOM proces iba pri zápise hodnôt (NDATA/DDATA/NCMD/DCMD), nepoužíva ich pre NBIRT/DBIRTH/NDEATH/DDEATH správy (v rámci MQTT Sparkplug) z dôvodu šetrenia aliasmi.

00 - 65535

Sparkplug parametre

Kotva
rot
rot
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.0000-59.999

Kotva
rum
rum
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/NONO

Kotva
nt
nt
Nonstandard Topic

Pre Payload Type = Sparkplug Host: Aktivácia parsovania neštandardných SparkPlug topicov. 
Štandardný topic má tvar 'namespace/group_id/message_type/edge_node_id/[device_id]' napr. 'spBv1.0/Owner/DDATA/devicebase1/local_inputs'.
Neštandardný topic má namiesto group_id niekoľko úrovní, napr. 'spBv1.0/Basel/Packaging/DDATA/Falcon11/plannedProductionQuantity'.
Pozn: zápis do meraných bodov na staniciach s neštandardným SparkPlug topicom nie je podporený.

YES/NONO

Kotva
iuq
iuq
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/NONO

Kotva
bdm
bdm
Browse Dataset Mode

Pre Payload Type = Sparkplug Host: Parameter udáva, ktoré adresy metriky typu Dataset sa zobrazia pri browsovaní:

  • Columns only: zobrazí sa pre každý stĺpec datasetu jedna adresa (napr. Dataset[*]^ColA)
  • Items only: zobrazí sa adresa každej položky (napr. Dataset[1]^ColA, Dataset[2]^ColA, ...)
  • Columns + Items: zobrazia sa adresy pre stĺpce aj pre položky
-
Columns only

Kotva
is
is
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.
Prednastavená hodnota je "->", takže adresa meraného bodu môže byť napr. SA=Template1->SubTemplate2->Item. Pokiaľ by sa v mene šablón vyskytovala dvojica "->", je možné nahradiť tento oddeľovač (napr. "=>").


->

Kotva
hi
hi
Sparkplug Host ID

Pre Payload Type = Sparkplug Host:

Identifikátor Host Aplikácie (D2000 je Host Aplikácia). 
Ak je zadaný, D2000 KOM proces pošle podľa MQTT Sparkplug štandardu správu STATE (s online=true) po pripojení sa k MQTT serveru. Touto správou oznamuje, že žije (ekvivalent NBIRTH a DBIRTH správ, ktoré posielajú zariadenia typu Edge Node a Device). Zároveň nastaví v CONNECT správe Will Topic/Will Message podľa Sparkplug štandardu (STATE správa s online=false), s Will QoS=QoS_1, Will Retain=YES, Clean Session Flag=YES.
Ak identifikátor zadaný nie je, D2000 KOM správu STATE neposiela (a nastavenie Will parametrov je konfigurovateľné).
Podľa MQTT Sparkplug štandardu je identifikátor povinný pre režim Sparkplug Host (bez jeho zadania sa D2000 KOM proces tvári ako "anonymný" klient a neposiela STATE správu).

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).
Ak je identifikátor zadaný, D2000 KOM proces čaká po pripojení sa k MQTT serveru na správu STATE. Keď ju dostane a obsahuje online=true, pošle NBIRTH správu s definíciami a hodnotami všetkých výstupných meraných bodov stanice zodpovedajúcej Edge Node a voliteľne DBIRTH správy pre stanice zodpovedajúce Device/Sensor zariadeniam (ak sú také stanice nakonfigurované). Pokiaľ STATE správa obsahuje online=false (tj. Primary Host Aplikácia nie je pripojená k MQTT serveru), D2000 KOM sa odpojí od MQTT servera a skúša ďalší MQTT server podľa konfigurácie komunikačnej linky - ak je nakonfigurovaných viacero MQTT serverov. Ak je nakonfigurovaný jediný MQTT server, D2000 KOM čaká na prijatie STATE správy s online=true od Primary Host Aplikácie a až následne začne posielať správy NBIRTH/DBIRTH/NDATA/DDATAHost Aplikácie a až následne začne posielať správy NBIRTH/DBIRTH/NDATA/DDATA. Pokiaľ je nastavený parameter Store & Forward a  Primary Host Aplikácia nie je pripojená k MQTT serveru, zmeny hodnôt sa ukladajú do pamäte (rovnako ako pri nefunkčnej komunikácii s MQTT brokerom).
Ak nie je identifikátor zadaný, D2000 KOM proces pošle NBIRTH a prípadne DBIRTH správy okamžite po pripojení sa k MQTT serveru (a následne posiela NDATA/DDATA správy so zmenami hodnôt).
Podľa MQTT Sparkplug štandardu je špecifikovanie Primary Host Aplikácie voliteľné pre režim Sparkplug Edge Node.
Pozn: Bez ohľadu na hodnotu parametra Sparkplug Host ID sa nastaví v CONNECT správe Will Topic/Will Message podľa Sparkplug štandardu, s Will QoS=QoS_1, Will Retain=NO, Clean Session Flag=YES.

--

Kotva
sfl
sfl
Store & Forward

Pre Payload Type = Sparkplug Edge Node, parameter zapína Store & Forward funkcionalitu pre všetky stanice na linke: pokiaľ je komunikácia s MQTT brokerom nefunkčná, hodnoty sa ukladajú do pamäte a po obnovení komunikácie sa pošlú s príznakom príznakom is_historical.
Pozn: toto nastavenie môže byť zmenené pre konkrétne stanice parametrom stanice Store & Forward.

YES/NONO

Kotva
ctt
ctt
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/NONO

...

Typ boduAdresaPopis
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
Kotva
in_topic
in_topic
IN_TOPIC
Téma (Topic) prijatej správy PUBLISH.
TxtI
Kotva
in_data
in_data
IN_DATA
Dáta (Payload) prijatej správy PUBLISH.
Ci

Kotva
in_id
in_id
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. Na linke TCP/IP-TCP je identifikátor monotónne rastúci, na linke TCP/IP-TCP Redundant sa môžu striedať hodnoty z dvoch monotónne rastúcich postupností (takže sa môžu aj opakovať), takže platí odporúčanie uvedené v nasledujúcej poznámke:
Pozn: ak Ak MQTT server posiela aj správy s úrovňou potvrdzovania QoS_0 a je nakonfigurovaný bod 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
Kotva
ack_id
ack_id
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 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

Kotva
out_topic
out_topic
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á)Téma (Topic) v rámci posielanej správy PUBLISH.
TxtO

Kotva
out_value
out_value
OUT_VALUE

Dáta (Payload) v rámci posielanej správy PUBLISH.
Pozn: poslanie 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,
Ci, Co,
Ai, Ao,
Di, Do,
TiR, ToR, TiA, ToA

Kotva
ja
ja
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. 
Pre JSON správy, ktoré môžu byť štruktúrované, je podporená syntax level1.level2.level3 ..., napr. rx.current a pokiaľ obsahujú polia (indexované od 1) tak aj level1[index1].level2[index2].level3 ..., napr. rx.gwrx[1].time.
Keďže samotná JSON správa môže byť pole, adresa môže začínať aj indexom, naprJA=[1]. 
rx.gwrx[1].time.
Keďže samotná JSON správa môže byť pole, adresa môže začínať aj indexom, napr. JA=[1].batt_cell_v_avg
Príklady viď popis meraných bodov typu Envelope protokolu LoRaWANbatt_cell_v_avg

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:

  • JA=myaddress
  • JA=mystruct.mylevel.myitem

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.
Pozn: pred zápisom do meraného bodu s JSON adresou musí byť najskôr nastavený topic (meraný bod s adresou OUT_TOPIC). Ak meraný bod s adresouOUT_TOPIC neexistuje, ako Topic sa použije priamo adresa stanice (ak je prázdna, zápis sa nevykoná).

Body pre parsovanie Sparkplug správ

TxtI, TxtO, Qi,
Ci, Co,
Ai, Ao,
Di, Do,
TiR, ToR, TiA, ToA

Kotva
sa
sa

SA=sparkplug_address

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:

  • <TemplateNameX> je názov šablóny/vnorenej šablóny
  • <Separator> je oddeľovač jednotlivých úrovní (štandardne znaky "->", ktoré je možné zmeniť parametrom Item Separator, ak by sa táto sekvencia vyskytovala v názvoch šablón/položiek)
  • <ItemName> je názov položky najhlbšie vnorenej template

Príklady adries položiek šablón:
SA=Template1->SubTemplate2->Item
SA=secUDT->sec

Čí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:

  • <DatasetName> je názov datasetu (môže byť aj súčasť štruktúry, napr. Template1->SubTemplate2->Dataset3)
  • <Row> je číslo stĺpca (1..N) alebo znak "*". V tom prípade je možné nakonfigurovať Cieľový stĺpec štruktúry do ktorého sa zapíšu všetky riadky (do meraného bodu sa zapíšu hodnoty z prvého riadku príslušného stĺpca)
  • <ColumnName> je názov stĺpca datasetu

Príklady adries položiek datasetov:
SA=Performance[3]^ActivePower
SA=Machine2->Parameters[1]^ActivePower
SA=DHS/Formation Data->Reservoir Parameter[*]^Gas density

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):

  • Int8
  • Int16
  • Int32
  • Int64
  • UInt8
  • UInt16
  • UInt32
  • UInt64
  • Float
  • Double
  • Boolean
  • String
  • DateTime
  • Text
  • Unknown
    (nedefinovaný typ)

Pokiaľ typ hodnoty nie je uvedený, prednastavená hodnota závisí od typu meraného bodu:

Typ meraného boduTyp hodnoty
Dout

Boolean

CoInt64
Ao

Double

ToA

DateTime

ToRDouble
TxtO

String


Pozn: medzi typmi String a Text nie je žiaden rozdiel.
Pozn: pre Payload Type = Sparkplug Edge Node posiela D2000 KOM proces DBIRTH/NBIRTH správy, ktoré obsahujú merané body (vstupné aj výstupné) so zadaným typom hodnoty. Ak niektoré (vstupné) merané body chceme utajiť, treba v adrese nastaviť ST=Unknown.

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)".
Pozn: Ak sú aliasy v adrese meraného bodu použité v režime Payload Type = Sparkplug Host, budú nahradené aliasmi zo správy NBIRTH/DBIRTH. Pokiaľ ale z nejakého dôvodu Edge Node neposiela tieto správy (a posiela NDATA/DDATA s aliasmi), môžu byť aliasy užitočné na spárovanie textového mena s aliasom.

PUBLISH správa vytvorená pri zápise obsahuje Topic odvodený od adresy stanice. Typ správy závisí od adresy stanice:

  • pre Payload Type = Sparkplug Host podľa toho, či sa jedná o Edge Node (NCMD) alebo Device/Sensor (DCMD)
  • pre Payload Type = Sparkplug Edge Node podľa toho, či sa jedná o Edge Node (NDATA) alebo Device/Sensor (DDATA)

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

Kotva
IN_SP2JS
IN_SP2JS
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.
Príklad hodnoty:

{"metrics":[{"datatype":3,"int_value":7338992,"name":"Corrected Vol Acc Stn","timestamp":1729664005479}],"seq":32,"timestamp":1729664005479}

Po formátovaní do čitateľnej formy:

{
    "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.

{
    "metrics": [
        {
            "datatype": 12,
            "datatype_txt": "String",
            "name": "Node Properties/Configuration",
            "string_value": "{}",
            "timestamp": 1730305529539,
            "timestamp_txt": "30-10-2024 17:25:29.539"
        },
        {
            "alias": 30064771073,
            "datatype": 5,
            "datatype_txt": "Uint8",
            "int_value": 0,
            "name": "Node Properties/Missing Param",
            "properties": {
                "keys": [
                    "usage"
                ],
                "values": [
                    {
                        "string_value": "technical information",
                        "type": 12,
                        "type_txt": "String"
                    }
                ]
            },
            "timestamp": 1730305529537,
            "timestamp_txt": "30-10-2024 17:25:29.537"
        },
        {
            "alias": 0,
            "dataset_value": {
                "columns": [
                    "topic_name",
                    "offset",
                    "length",
                    "crc"
                ],
                "num_of_columns": 4,
                "rows": [
                    {
                        "row": [
                            "N/A",
                            0,
                            0,
                            0
                        ]
                    }
                ],
                "types": [
                    12,
                    7,
                    7,
                    7
                ],
                "types_txt": [
                    "String",
                    "UInt32",
                    "UInt32",
                    "UInt32"
                ]
            },
            "datatype": 16,
            "datatype_txt": "DataSet",
            "name": "Node Control/FW Update",
            "timestamp": 1730305529537,
            "timestamp_txt": "30-10-2024 17:25:29.537"
        }
    ],
    "seq": 0,
    "timestamp": 1730305529536,
    "timestamp_txt": "30-10-2024 17:25:29.536"
}

...

Kotva
tell_cmd
tell_cmd
Tell príkazy

...


PríkazSyntaxPopis
STCOMMANDSTCOMMAND 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"

Kotva
literatura
literatura
Literatúra

...

Info
titleBlog

O protokole MQTT si môžete prečítať blog 


Kotva
revizie
revizie
Revízie dokumentu

...