Logo Online Hilfe www.anyviz.de

MQTT

MQTT (Message Queuing Telemetry Transport) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M). Es eignet sich gut, um Informationen dem zentralen Cloudsystem AnyViz bereitzustellen. Hierbei agiert AnyViz als Broker. Sämtliche, vom MQTT-Client zur Verfügung gestellten Topics können in AnyViz als Datenpunkt angelegt und weiterverwendet werden.

Verbindungsaufbau

Der MQTT-Client verbindet sich direkt mit AnyViz, welches somit als MQTT-Broker agiert. Zur korrekten Zuordnung des MQTT-Clients zum AnyViz-Projekt muss zwingend die Projektnummer in Form des Benutzernamens übergeben werden. Ein vom MQTT-Client festgelegtes Passwort muss in AnyViz bestätigt werden. Erst dann werden eingehende Publish-Nachrichten von AnyViz akzeptiert.

Verbindungsparameter
Server Der Hostname von AnyViz:
Port 8883 (TLS), 1883 (TCP)
Es wird empfohlen eine Verbindung über Port 8883 mit Serverzertifikatvalidierung aufzubauen. Der alternative Port 1883 dient lediglich zur Testzwecken und wird mangels Verschlüsselung nicht empfohlen.
Client ID Die MQTT-Client ID kann frei vergeben werden und dient zur Identifizierung in AnyViz. Die MQTT-Verbindung wird abgelehnt, wenn keine Client ID übertragen wird oder die Client ID die maximale Länge von 250 Zeichen überschreitet. Da die Client ID zur eindeutigen Identifizierung innerhalb eines Projektes genutzt wird, darf sich die ID nicht ändern.
Benutzername Der Benutzername wird für die Zuordnung des Projektes verwendet. Aus diesem Grund muss die Projekt-Nummer als Benutzername übertragen werden.
Passwort Ein frei wählbares Onboarding-Passwort, welches später bestätigt werden muss.
Zertifikat Zur Verschlüsselung bei der Kommunikation über Port 8883 und zur Verifizierung des Server-Hosts, dient das öffentliche AnyViz-Zertifikat. Eine Client-Authentifizierung mittels Zertifikat wird zum jetzigen Zeitpunkt nicht unterstützt.
Version 3.1.1 oder 5.0
Das MQTT-Protokoll ist in AnyViz in der Version 3.1.1, sowie in der Version 5.0 implementiert. Clients mit einer älteren Version werden nicht abgelehnt, allerdings kann in diesem Fall eine Kompatibilität nicht gewährleistet werden.
Will-Topic Das vom MQTT-Protokoll spezifizierte Will-Topic wird in AnyViz nicht verarbeitet.

Verbindungsbestätigung

Sobald die Verbindung zu AnyViz aufgebaut wurde, erscheint ein neuer Eintrag im Objektbaum. Fahren Sie mit der Maus über den Eintrag und klicken Sie auf Bearbeiten. Es öffnet sich der Cloud Adapter Dialog.

Einstellungen eines MQTT Cloud Adapters

Zur Verifizierung muss nun einmalig dasselbe Passwort eingegeben werden, welches zuvor im MQTT-Client hinterlegt wurde. Optional kann ein Name vergeben werden, welcher anschließend zur Anzeige verwendet wird. Wird das korrekte Passwort eingegeben, wechselt der Eintrag von gelb auf grün und alle eintreffenden Topics werden darunter aufgelistet.

Byte Order Die Byte Order muss korrekt eingestellt werden, sofern die Topic-Werte binär übertragen werden.
Verbindungsüberwachung Wird die Verbindung unterbrochen werden Warnhinweise angezeigt und die Datenaufzeichnung wird gestoppt. Dieses Verhalten kann bei Cloud-Adapter ohne permanente Verbindung verhindert werden.

Topic-Übertragung

Die Übertragung von Werten erfolgt beim MQTT-Protokoll über sog. Publish-Messages. Sie bestehen aus einem Topic-Namen, einer Bytefolge als Nutzdaten und einem QoS. Der Topic-Name wird in AnyViz hierarchisch dargestellt. Die Formatierung der eigentlichen Nutzdaten ist im MQTT-Protokoll nicht spezifiziert. AnyViz unterstützt folgende Formate.

Einschränkungen

Binäre Formatierung

Die Werte eines Topics können im Rohformat übertragen werden. Hierbei ist zu beachten, dass die korrekte Byte Order am Cloud Adapter angegeben wird (siehe Verbindungsbestätigung). Beim Anlegen eines Datenpunktes muss der Datentyp angegeben werden. Es stehen folgende Datentypen zur Auswahl:

Bool Logischer Wert 1 Byte
Byte 8 bit Ganzzahl
SByte 8 bit Ganzzahl mit Vorzeichen
UInt16 16 Bit Ganzzahl 2 Byte
Int16 16 Bit Ganzzahl mit Vorzeichen
UInt32 32 Bit Ganzzahl 4 Byte
Int32 32 Bit Ganzzahl mit Vorzeichen
Float 32 Bit Fließkommazahl
UInt64 64 Bit Ganzzahl 8 Byte
Int64 64 Bit Ganzzahl mit Vorzeichen
Double 64 Bit Fließkommazahl
String Text mit variabler Länge X Byte

Text-Formatierung

Alternativ können die Werte eines Topics als String-Wert übertragen werden. AnyViz bietet dann die Möglichkeit, den String in eine Zahl oder einen logischen Zustand zu konvertieren. Zu beachten ist, dass Zahlen im englischen Format, also mit einem Punkt als Dezimalseparator übertragen werden müssen. Bei einer Übertragung von Strings stehen folgende Datentypen zur Verfügung:

String (Text) Wert dient zur Anzeige des Textes
String (Nummerisch) Wert wird in eine Zahl konvertiert
String (Logisch) Wert wird nach Bool konvertiert

JSON-Formatierung

Sehr komfortabel gestaltet sich die Übertragung von JSON-Inhalten. Ein in UTF8 übertragener JSON-Inhalt wird bei korrekter Formatierung automatisch von AnyViz erkannt. Alle Felder des JSON-Objektes werden als einzelne Symbole hierarchisch in AnyViz dargestellt. Nachfolgend ein Beispiel:

Übertragener JSON-String Darstellung in AnyViz
{ "TimeString": "13:43:09", "CpuUsage": 30.364752, "AvailableRam": 8505, "Time": { "Year": 2023, "Ticks": 14811562, "Seconds": 9 }, "Date": [2023, 12, 19], "DaylightSavingTime": false, "JsonDateTime": "2023-12-19T12:43:09.8561376Z" } Darstellung der Symbole einer MQTT-Verbindung, die ein JSON-Objekt bereitstellt

Somit kann jedes Feld eines JSON-Objektes, in einen Datenpunkt umgewandelt werden. Eine Angabe des Datentyps ist nicht notwendig. Allerdings ist bei dem Übertragen der Topics in JSON-Formatierung folgendes zu beachten:

OPC-UA PubSub

Die OPC-UA PubSub-Erweiterung ermöglicht das Senden von Datensätzen über das MQTT-Protokoll. AnyViz erkennt automatisch MetaData und DataSet Nachrichten und listet alle Variablen der übertragenen Datensätze als Symbole auf. Es wird sowohl die JSON-Formatierung als auch die binäre UADP-Formatierung unterstütz.

Derzeit werden nur DataSetWriter unterstützt, sodass ein Schreiben von Variablen nicht möglich ist. Ebenso werden derzeit keine Arrays unterstütz.

Sparkplug B

Sparkplug ist eine Spezifikation zur effizienten Übertragung von Datenstrukturen über MQTT. AnyViz unterstützt die Version B der Spezifikation und erkennt Sparkplug-Strukturen automatisch anhand des definierten Namensschemata.

Alle Metriken werden nach Group, Node und Device gruppiert dargestellt. Das Schreiben von Metriken ist unkompliziert möglich, wenn ein Subscribe auf das entsprechende NCMD bzw. DCMD Topic durchgeführt wird.

Quality of Service

AnyViz unterstützt alle in MQTT spezifizierten QoS-Methoden:

Publish/Subscribe

Nach einer Publish-Nachricht wird das enthaltene Topic als ReadOnly-Symbol dargestellt. Nach einer Subscribe-Nachricht wird das enthaltene Topic als WriteOnly-Symbol dargestellt. Ist ein Topic sowohl in einer Publish-Nachricht als auch in einer Subscribe-Nachricht beschrieben, so wird dieses Topic als lesend und schreibbares Symbol abgebildet. Werte können also nicht nur empfangen, sondern auch gesendet werden.

Im Vergleich zum AnyViz-Protokoll verfügt das MQTT-Protokoll über einen geringeren Funktionsumfang. Beispielsweise erfolgt keine Pufferung der Daten bei Verbindungsausfall. Daher sollte der Universal Cloud Adapter einer MQTT-Verbindung vorgezogen werden.