Hinweis
Der MQTT-Treiber arbeitet als MQTT-Client und ermöglicht es, Wertänderungen über TCP an einen MQTT-Broker zu senden bzw. Wertänderungen bei einem MQTT-Broker zu abonnieren.
Allgemein
Der MQTT-Treiber unterstützt den OASIS-Standard 'MQTT Version 3.1.1'. Die Verbindung zum MQTT-Broker wird durch einen konfigurierbaren Hostnamen und eine Portnummer definiert, wobei die Portnummer '8883' für sichere Verbindungen über TLS reserviert ist. Die Portnummer '1883' ist (standardmäßig) auf unverschlüsselt eingestellt. Als QoS (Quality of Service) werden die Stufen 0 (Höchstens einmal) und 1 (Mindestens einmal) unterstützt.
Function | Value |
---|---|
Name of the MQTT driver | mqtt |
Routing address of the first MQTT driver | 1630 |
Datapoint file for the first MQTT driver | mqtt1.txt |
Configuration file for global settings of the first MQTT driver | mqtt1.cfg |
Für den MQTT-Treiber und alle anderen Gateway-Treiber gilt für die Definition von Datenpunkten in der Datenpunktdatei folgendes:
Type | Description |
---|---|
M | Integer value (binary data points, counter values) which can/should only be read by the gateway. |
S | Integer value that can/should be read and written by the gateway. |
X | Analog value (with decimal places) which can/should only be read by the gateway. |
Y | Analog value (with decimal places) that can/should be read and written by the gateway. |
Addressen
von MQTT Datenpunkten sind wie folg aufgebaut: <type> <topic> [<name>]
The following definition must be applied:
Parameter | Value range | Description |
---|---|---|
<type> | publish subscribe | Value is sent to the MQTT broker. Value will be subscribed at the MQTT broker. (Topic filter are not supported) |
<topic> | max. 80 characters | Topic Name Longer Topic Names or Topic Names with spaces must be created using the format specification. |
<name> | max. 80 charcters | Name of the key in the JSON Object |
Datentyp
Über die Formatspezifikation in der Datenpunktdatei kann dem Datenpunkt ein Datentyp zugewiesen werden:
Format | Data type | Range |
---|---|---|
BIT | Boolean | 0 or 1 |
UINT8 | Byte | 0 - 255 |
SINT8 | Byte | -128 - 127 |
UINT16 | Word | 0 - 65535 |
SINT16 | Word | -32768 - 32767 |
UINT32 | Doubleword | 0 - 4294967295 |
SINT32 | Doubleword | -2147483648 - 2147483647 |
FLOAT32 | Float | Floating point value with 32 bit |
FLOAT64 | Double | Floating point value with 64 bit |
QoS eines Datenpunktes
Die QoS eines Datenpunktes kann über die Formatspezifikation in der Datenpunkt Datei angepasst werden.
Format | Description |
---|---|
QoS:0 | Value will be sent once. |
QoS:1 | Value is sent until an acknowledgement (ACK) is received from the remote station. |
Retain flag
Das Retain-Flag eines Datenpunktes kann über die Formatspezifikation in der Datenpunktdatei definiert werden.
Format | Description |
---|---|
retain:0 | The MQTT Broker does not save the value. |
retain:1 | The MQTT Broker save the value as last valid one. |
Topic name
Der Topic-Name eines Datenpunktes kann über die Formatspezifikation in der Datenpunktdatei definiert werden.
Format | Description |
---|---|
topic:„“ | The topic name can be specified in the format specification, if the topic name is longer than 80 characters, or if the topic name contains spaces. |
Periodisches Publish
Mit dem Timer T: bzw. TPerHour: werden die Zeitintervalle festgelegt in denen gepublisht wird.
Mit T:x kann das periodische Publishen eines Datenpunktes festgelegt werden. Per Default entspricht x einem Zeitintervall in Sekunden. Wird zusätzlich TPerHour:1 gesetzt, wird alternativ x-mal pro Stunde gepublisht.
Default kann in der Konfiguration mit DatapointTimerPerHour angepasst werden.
Format | Beschreibung |
---|---|
T: | T:x Publish Intervall |
TPerHour: | TPerHour:1 Publish x-mal pro Stunde, beginnend zur vollen Stunde (z. B. x=2 entspricht einem Publish zu jeder vollen und halben Stunde). |
TPerHour:0 (default) Publish alle x Sekunden |
Typische Datenpunktdefinitionen können sein:
# failure data point
[M failure]
name = Communication failure
query = pe
# actual values
[M subscribe dev/12/online]
name = device 12 Status (0=offline, 1=online)
query = pe
format = BIT
[X subscribe dev/12 temperature]
name = temperature for device 12 in °C
query = pe
format = FLOAT32
# set points
[Y publish dev/12 set point temperature]
name = set point temperature for device 12 in °C
query = pe
format = FLOAT32
# periodisches Publish
[Y publish sensor]
query = pe
format = T:10