...
| Keyword | Full name | Meaning | Unit | Default value | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Subscribe Station Address | If this parameter has the value YES, the Topic related to the station address is also added to the SUBSCRIBE message:
| YES/NO | NO | ||||||||
| Station Will Topic | Will topic of the device. If this parameter is set and a message with the same topic is received, the station will go into a communication error (StHardErr) and the values of the I/O tags will be invalidated. In this way, it is possible to emulate the standard behavior that occurs when there is a communication error with the device (even if the communication between the D2000 Kom process and the MQTT broker is functional). | ||||||||||
| Station Will Payload | Content of the Will message. If this parameter is set and a message with the same topic as defined by the Station Will Topic parameter is received, the Payload must also be the same. If this parameter is an empty string, matching the topic with the Station Will Topic parameter is sufficient. | ||||||||||
| Payload Type | The setting of message parsing (overriding the line parameter Payload Type):
| Default Text only JSON Sparkplug | Default | ||||||||
| Time Field Name | If Payload Type = JSON, the name of the field with a timestamp - overriding the line parameter Time Field Name. | - | - | ||||||||
| Time Mask | Mask for parsing a value in the field with a timestamp - overriding the line parameter Time Mask. Note: Whether the time is interpreted as local or UTC with a configured offset depends on the time station parameters settings. | - | - | ||||||||
MQTT 5.0 Parameters | ||||||||||||
| MQTT 5.0 Compression | Payload compression when sending. If the value application/gzip is set, the Content Type parameter in the PUBLISH message header is set to the value application/gzip, and the payload is compressed (GZIP), which saves transmission capacity for larger text messages. The parameter is used only for MQTT Version = MQTT 5.0. Note: If the Content Type parameter with the value application/gzip is found when receiving a message, the payload is automatically decompressed - this parameter does not need to be set. | None application/gzip | None | ||||||||
Sparkplug parameters | ||||||||||||
| Send Node Control/Rebirth | If Payload Type = Sparkplug Host, when connecting to the MQTT server, a command (NCMD or DCMD) with the metric 'Node Control/Rebirth' is sent to the SparkPlug station. The response should be a message (NBIRTH/DBIRTH) with all current metrics. | YES/NO | YES | ||||||||
| Batch Size | If Payload Type = Sparkplug Edge Node: The parameter specifies the maximum number of values (metrics) that are sent in one message (NDATA/DDATA). The parameter allows for optimization of the number of MQTT messages (more smaller or fewer larger with a delay). Reading values from the station (ReadAllPoints function) will cause the buffered values to be sent even if the configured maximum has not yet been reached (i.e., a larger time delay in the station parameters will cause more values to be buffered). | 1-1000 | 10 | ||||||||
| Store & Forward | The parameter allows you to change the Store & Forward functionality, which is defined for all stations on the line by the Store & Forward line parameter. The value Default means using the settings configured on the line. | Default False True | Default | ||||||||
| Store & Forward Batch Size | If the Store & Forward functionality is active (see Store & Forward parameter), the parameter specifies the maximum number of historical values sent in one message (NDATA/DDATA) after communication is resumed. | 1-1000 | 10 | ||||||||
| Sparkplug Alias Mode | If Payload Type = Sparkplug Edge Node, the parameter specifies the alias usage mode. Aliases are numeric (integer - Int64) identifiers, used optionally in data and command messages (NDATA/DDATA/NCMD/DCMD) instead of text identifiers, due to the message size reduction. If used, they are listed in the NBIRTH/DBIRTH message together with text identifiers. Aliases must be unique within all I/O tags belonging to one station.
| Default (SAL=alias) Automatic (HOBJ) Off | Default (SAL=alias) | ||||||||
| Sparkplug-to-JSON Mode | The parameter defines the JSON data format for the measured point with the address IN_SP2JS (Sparkplug payload to JSON conversion). The JSON data is either generated in a compact mode suitable for further machine processing (fields separated by spaces) or in a form suitable for human viewing (multiline format). | Compact Multiline | with the address IN_SP2JS (Sparkplug payload to JSON conversion). The JSON data is either generated in a compact mode suitable for further machine processing (fields separated by spaces) or in a form suitable for human viewing (multiline format). | Compact Multiline | Compact | ||||||
| Sparkplug Compression | Optional compression used for NDATA/DDATA/NCMD/DCMD/NBIRTH/DBIRTH messages. If the resulting message after compression is larger than the original (e.g., due to added information), the data is sent uncompressed. | None | NoneCompact | ||||||||
| Kotva | ||||
|---|---|---|---|---|
|
...
| Type of I/O tag | Address | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| I/O tags for reading data sent by the MQTT server through a PUBLISH message (usually used in Text mode or JSON mode, rarely in Sparkplug mode). Note: Values of I/O tags are set by the D2000 KOM process in the order IN_TOPIC, IN_DATA, and IN_ID. The configuration doesn't need to contain all three I/O tags. | ||||||||||||||||||||||
| TxtI |
| Topic (Topic) of the received PUBLISH message. | ||||||||||||||||||||
| TxtI |
| Data (Payload) of the received PUBLISH message. | ||||||||||||||||||||
| Ci |
| Identifier of a packet (Packet Identifier) of a PUBLISH message that depends on the level of validation (QoS). For messages sent with QoS_0, the identifier is zero; for QoS_1 and QoS_2, it is a positive 16-bit number. On the TCP/IP-TCP line, the identifier is monotonically increasing; on the TCP/IP-TCP Redundant line, values from two monotonically increasing sequences can alternate (so they can also be repeated), so the recommendation given in the following note applies: Note: If the MQTT server also sends messages with the QoS_0 level of validation and the ACK_ID I/O tag is configured, then we recommend activating the option New value when changing time in the Filter tab, so that repeated writing of the value 0 will cause a new value that differs only in a timestamp to be generated. | ||||||||||||||||||||
| I/O tag to confirm the received data to the MQTT server. | ||||||||||||||||||||||
| Co |
| If an output I/O tag with the ACK_ID address is defined, the D2000 KOM expects confirmation of the processing of each message by writing a copy of the value of the IN_ID tag. Only after, it sets values from the next received PUBLISH message (if it was received in the meantime) into the IN_TOPIC, IN_DATA, and IN_ID I/O tags (in this order). In the case of the QoS_0 level of confirmation, it is, therefore, necessary to repeatedly set the value of the I/O tag ACK_ID to 0. If the I/O tag ACK_ID does not exist, the values are written into the IN_TOPIC, IN_DATA, and IN_ID I/O tags immediately after the PUBLISH message is received and processed. Note: For messages received with a QoS_0 level of validation, no confirmation is sent to the MQTT server; only the values of the received PUBLISH message will be published. | ||||||||||||||||||||
| I/O tags for sending values to the MQTT server through a PUBLISH message. Note: in order for the D2000 KOM process to send the PUBLISH messages to the MQTT server, both I/O tags must be defined within one station. | ||||||||||||||||||||||
| TxtO |
| The topic of the PUBLISH message being sent. Note: If the I/O tag with the OUT_TOPIC address does not exist, the station address will be used directly as the Topic (if it is empty, the writing will not be performed). | ||||||||||||||||||||
| TxtO |
| Data (Payload) of the PUBLISH message being sent. Note: Sending the message is performed as a result of writing to the OUT_VALUE I/O tag (i.e., if the Topic does not change, then it is sufficient to set the OUT_TOPIC point once, e.g., by using the default value). | ||||||||||||||||||||
| I/O tags for parsing JSON messages | ||||||||||||||||||||||
TxtI, TxtO, Qi, |
| If Payload Type=JSON, the message is parsed as JSON data. The json_address value specifies the name of the JSON field whose value is to be assigned to the I/O tag. For other examples, see the description of the LoRaWAN protocol's Envelope type I/O tags. Note: If you need to read the entire array, it is possible to configure the Destination column of the structure and specify an address with index 0, e.g. JA=myarray[0] or JA=struct.myarray[0].itemA Writing to an I/O tag with a JSON address is also supported, but it must not have indexes. Examples of correct addresses for writing:
When writing, the generated JSON contains the value itself and optionally a timestamp, if the station protocol parameter Time Field Name or the line parameter Time Field Name is set. | ||||||||||||||||||||
| I/O tags for parsing Sparkplug messages | ||||||||||||||||||||||
TxtI, TxtO, Qi, |
SA=sparkplug_address SAL=alias;SA=sparkplug_address ST=type;SA=sparkplug_address ST=type;SAL=alias;SA=sparkplug_address | If Payload Type = Sparkplug Host/Edge Node, the message is parsed as Sparkplug data (a binary format built on Google Protocol Buffers). Sparkplug data contains metrics that have text identifiers (sparkplug_address) or possibly numeric aliases (alias). Reading template items is possible by specifying sparkplug_address in the format <TemplateName1><Separator><TemplateName2><Separator> ... <Separator><ItemName> where:
Examples of template item addresses: Reading dataset items (equivalent to structured variables in D2000) is possible by specifying sparkplug_address in the format <DatasetName>[<Row>]^<ColumnName> where:
Examples of dataset item addresses: For output I/O tags, the value type can be explicitly (ST=type). Simple types are supported (not template items/dataset items):
If the value type is not specified, the default value depends on the type of I/O tag:
Note: There is no difference between the String and Text types. For Payload Type = Edge Node, it is also possible to specify a numerical alias (SAL=alias) as a natural number (0, 1, 2, ...) for both input and output I/O tags. The alias of the I/O tag within the station must be unique. Aliasing allows you to reduce the size of the transmitted data: in the NBIRTH/DBIRTH message, both the text identifier (sparkplug_address) and the alias are specified for each I/O tag; in the NDATA/DDATA messages, only aliases that are shorter than the text addresses are sent. Alias is only used if Sparkplug Alias Mode = "Default (SAL=alias)".
The Payload of the message contains a timestamp, a value type (type), a written value (encoded according to the specified value type), and a metric name (sparkplug_address) or an alias. | ||||||||||||||||||||
TxtI |
| The I/O tag is used to convert the Sparkplug payload into a JSON representation, which can then be processed, e.g., in an ESL script. Depending on the Convert Datatype/Timestamp to Text parameter, a textual representation of the value type and timestamp is also added. {"metrics":[{"datatype":3,"int_value":7338992,"name":"Corrected Vol Acc Stn","timestamp":1729664005479}],"seq":32,"timestamp":1729664005479} {An example of a more complex value containing properties and a dataset, and also displaying a textual representation of the data type (datatype_txt) and timestamp (timestamp_txt) as a result of the set parameter Convert Datatype/Timestamp to Text: { | ||||||||||||||||||||
...
| Info | ||
|---|---|---|
| ||
You can read a blog blogs about the MQTT protocol: |
| Kotva | ||||
|---|---|---|---|---|
|
...