Porovnávané verzie

Kľúč

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

...

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

Kotva
out_value
out_value
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,
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, napr. JA=[1].batt_cell_v_avg

Príklady viď popis meraných bodov typu Envelope protokolu LoRaWAN.

Pozn:  Pokiaľ je potrebné načítať celé pole, je možné nakonfigurovať Cieľový stĺpec štruktúry a zadať adresu s indexom 0, napr. JA=myarray[0] alebo JA=struct.myarray[0].itemA


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"
}

...

Info
titleBlog

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

...