Benutzer-Werkzeuge

Webseiten-Werkzeuge


mqtt

MQTT

Der MQTT Treiber arbeitet als MQTT-Client und ermöglicht Wertänderungen über TCP an einen MQTT-Broker zu senden bzw. Wertänderungen bei einem MQTT-Broker zu abonnieren.

Der MQTT Treiber unterstützt den OASIS Standard 'MQTT Version 3.1.1'. Die Verbindung zum MQTT-Broker wird über einen konfigurierbaren Hostnamen und die Port-Nummer definiert, wobei die Port-Nummer '8883' für sichere Verbindungen über TLS reserviert ist. Als QoS (Quality of Service) werden die Level 0 (At most once) und 1 (At least once) unterstützt.

Der Name des MQTT Treibers lautet: mqtt
Die Routing-Adresse des ersten MQTT Treibers ist die 1630
Die Datenpunktdatei für den ersten MQTT Treiber heißt: mqtt1.txt
Die Konfigurationsdatei für globale Einstellungen des ersten MQTT Treibers heißt: mqtt1.cfg

Beim MQTT Treiber sowie allen weiteren Gateway-Treibern gilt für die Definition von Datenpunkten in der Datenpunktdatei:

Typ: Bedeutung
M Ganzzahliger Wert (Binäre Datenpunkte,Zählwerte) der vom Gateway nur gelesen werden kann/soll.
S Ganzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll.
X Analogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll.
Y Analogwert (mit Nachkommastellen) der vom Gateway gelesen sowie geschrieben werden kann/soll.

Die Adressen der MQTT-Datenpunkte sind wie folgt aufgebaut:

<type> <topic> [<name>]

Dabei gilt folgende Definition:

Parameter Wertebereich Beschreibung
<type> publish
subscribe
Wert wird an den MQTT-Broker gesendet.
Wert wird beim MQTT-Broker abonniert.
(Topic Filter werden nicht unterstützt)
<topic> max. 80 Zeichen Topic Name
Längere Topic Namen oder Topic Namen mit Leerzeichen müssen über die Formatangabe erstellt werden.
<name> max. 80 Zeichen Name des Schlüssels im JSON-Objekt

Über die Formatangabe in der Datenpunktdatei kann dem Datenpunkt ein Datentyp zugewiesen werden.

Format Datentyp Bereich
BIT Boolean 0 oder 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 Fließkomma-Wert mit 32 Bit
FLOAT64 Double Fließkomma-Wert mit 64 Bit

Über die Formatangabe in der Datenpunktdatei kann der QoS eines Datenpunktes festgelegt werden.

Format Beschreibung
QoS:0 Wert wird einmal gesendet.
QoS:1 Wert wird solange gesendet, bis eine Bestätigung (ACK) von der Gegenstelle erfolgt.

Über die Formatangabe in der Datenpunktdatei kann das retain Flag eines Datenpunktes festgelegt werden.

Format Beschreibung
retain:0 Der MQTT-Broker speichert den Wert nicht.
retain:1 Der MQTT-Broker speichert den Wert als zuletzt gültigen Wert.

Über die Formatangabe in der Datenpunktdatei kann der Topic Name eines Datenpunktes festgelegt werden.

Format Beschreibung
topic:„“ Der Topic Name kann in der Formatangabe festgelegt werden,
wenn der Topic Name länger als 80 Zeichen ist, oder
wenn der Topic Name Leerzeichen enthält.

Typische Datenpunkt-Definitionen können demnach sein:

# failure Datenpunkt

   [M failure]
     name  = Communication failure
     query = pe

# Istwerte

   [M subscribe dev/12/online]
     name   = Gerät 12 Status (0=offline, 1=online)
     query  = pe
     format = BIT
   [X subscribe dev/12 temperatur]
     name   = Temperatur für Gerät 12 in °C
     query  = pe
     format = FLOAT32
 

# Sollwerte

   [Y publish dev/12 soll-temperatur]
     name   = Soll-Temperatur für Gerät 12 in °C
     query  = pe
     format = FLOAT32
   

Funktionalität BACnet-Scan

Der MQTT-Treiber besitzt spezielle Datenpunkte, über die ein BACnet-Scan angestoßen werden kann und über den die Ergebnisse ausgeliefert werden. Dazu muss in der Konfigurationsdatei der Eintrag 'ScanBACnet=1' eingetragen werden. Beim Start stellt der Treiber dann per SUBSCRIBE einen Topic bereit, über den andere MQTT-Clients einen BACnet-Scan starten können.

Beispiel für einen Scan über den BACnet-Treiber mit der Route 940 über alle BACnet-Geräte mit einer Instanz-Nummer zwischen 2000 und 2009 und einem Timeout von einer Stunde (je Gerät):

   Topic: '$SYS/[ClientID]/scan/bacnet'
   Payload: '{"route":940, "start":2000, "end":2009, "timeout":3600}'

Die Ergebnisse des Scans werden unter dem Topics '$SYS/[ClientID]/scan/bacnet/[route]/[device-instance]' veröffentlicht (PUBLISH).

Der Anfangsteil '$SYS' kann im Treiber über den Eintrag 'SysPreTopic' umkonfiguriert werden, da einige MQTT-Broker Topics mit '$SYS' am Anfang nur für eigene, interne Informationen zulassen.

mqtt.txt · Zuletzt geändert: 03.03.2020 10:21 von aci