Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Protokol je implementáciou štandardu MQTT 3.1.1 (október 2014). 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 alebo cez utilitu stunnel.
Pre prenos LoRaWAN dát v rámci MQTT protokolu pozri popis protokolu LoRaWan.

...

Pozn: Štandardný port pre MQTT protokol je 1883 resp. 8883 pre SSL/TLS verziu. D2000 KOM neobsahuje obsahuje implementáciu SSL/TLS varianty protokolu, ale prípadne je možné ju nakonfigurovať s použitím utility stunnel 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).

...

TLS KeyFileTLS CertFile

s certifikátom MQTTS servera. Zadaných môže byť aj viacero ciest oddelených bodkočiarkou (napr. D:\cert1.crt;D:\cert2.crt).
Môže byť použitá symbolická konštanta #APPDIR#, ktorá udáva aplikačný adresár, napr. #APPDIR#/cert1.crt
Nastavenie tohto parametra aktivuje MQTTS (MQTT cez TLS šifrované spojenie).
Poznámka: štandardný TCP port pre MQTTS je 8883.

ParameterPopisJednotka / rozmerNáhradná hodnota
Kotva
fd
fd
Full Debug
Zapnutie podrobných výpisov o posielaní a prijímaní hodnôt.YES/NONO
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 postačuje filter spBv1.0/# na príjem všetkých Sparkplug správ.
-#
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).
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 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).
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).
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.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 - správa sa parsuje ako Sparkplug B payload (binárne kódovaný).
Text only
JSON
Sparkplug
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
Maska pre parsovanie hodnoty v 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.

Pozn: od nastavení časových parametrov stanice závisí, či je čas interpretovaný ako lokálny alebo UTC s nakonfigurovaným offsetom.

-yyyy-mm-dd hh:mi:ss.mss

Kotva
imt
imt
Ignore Missing Time

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 a parameter Sparkplug Host ID nie je prázdny, 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 a parameter Sparkplug Host ID nie je prázdny, 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 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).
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 a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný (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 a parameter Sparkplug Host ID nie je prázdny, tento parameter je ignorovaný (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

Parametre kryptovania (MQTTS)

Kotva
ttc
ttc
TLS TrustedCerts

Cesta k súboru s certifikátom MQTTS servera. Zadaných môže byť aj viacero ciest oddelených bodkočiarkou (D:\cert1.crt;D:\cert2.crt)

Kotva
tkftkf
Kotva
tcftcf

-

-

Kotva
tkf
tkf
TLS KeyFile

Cesta k súboru so súkromným kľúčom MQTTS klienta (D2000 KOM procesu). Tento parameter je nepovinný, niektoré MQTTS servery môžu ale vyžadovať klientský certifikát pre overenie totožnosti klienta (napr. Pixii PowerShaper).
Môže byť použitá symbolická konštanta #APPDIR#, ktorá udáva aplikačný adresár, napr. #APPDIR#/my.key
Pozn: súkromný kľúč (parameter TLS KeyFile) musí patriť k certifikátu (parameter TLS CertFile).

-

-

Kotva
tcf
tcf
TLS CertFile

Cesta k súboru s certifikátom MQTTS klienta (D2000 KOM procesu). Tento parameter je nepovinný, niektoré MQTTS servery môžu ale vyžadovať klientský certifikát pre overenie totožnosti klienta (napr. Pixii PowerShaper).
Môže byť použitá symbolická konštanta #APPDIR#, ktorá udáva aplikačný adresár, napr. #APPDIR#/my.crt
Pozn: súkromný kľúč (parameter TLS KeyFile) musí patriť k certifikátu (parameter TLS CertFile).

-

-

Sparkplug parametre

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

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

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

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

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

Identifikátor Host aplikácie. Ak je zadaný, D2000 KOM proces pošle podľa MQTT Sparkplug štandardu správu STATE 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, 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é).

--

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 IN_SP2JS slúžiaceho na konverziu Sparkplug payloadu na JSON.

YES/NONO

...

  • 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, podpora pre browsovanie
  • Ver. 1.5 - 8. novembra 2024 - podpora pre MQTTS (kryptované MQTT, MQTT cez TLS)


Info
titleSúvisiace stránky:

Komunikačné protokoly

...