MQTT Treiber


 

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. 

FunctionValue
Name of the MQTT drivermqtt
Routing address of the first MQTT driver1630
Datapoint file for the first MQTT drivermqtt1.txt
Configuration file for global settings of the first MQTT drivermqtt1.cfg

Für den MQTT-Treiber und alle anderen Gateway-Treiber gilt für die Definition von Datenpunkten in der Datenpunktdatei folgendes: 

TypeDescription
MInteger value (binary data points, counter values) which can/should only be read by the gateway.
SInteger value that can/should be read and written by the gateway.
XAnalog value (with decimal places) which can/should only be read by the gateway.
YAnalog 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: 

ParameterValue rangeDescription
<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 charactersTopic Name
Longer Topic Names or Topic Names with spaces must be created using the format specification.
<name>max. 80 charctersName of the key in the JSON Object

Datentyp 
Über die Formatspezifikation in der Datenpunktdatei kann dem Datenpunkt ein Datentyp zugewiesen werden: 

FormatData typeRange
BITBoolean0 or 1
UINT8Byte0 - 255
SINT8Byte-128 - 127
UINT16Word0 - 65535
SINT16Word-32768 - 32767
UINT32Doubleword0 - 4294967295
SINT32Doubleword-2147483648 - 2147483647
FLOAT32FloatFloating point value with 32 bit
FLOAT64DoubleFloating point value with 64 bit

QoS eines Datenpunktes 
Die QoS eines Datenpunktes kann über die Formatspezifikation in der Datenpunkt Datei angepasst werden. 

FormatDescription
QoS:0Value will be sent once.
QoS:1Value 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. 

FormatDescription
retain:0The MQTT Broker does not save the value.
retain:1The 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. 

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

FormatBeschreibung
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