W&T verbindet
Interfaces für TCP/IP, Ethernet, RS-232, RS-485, USB, 20mA, Glas- und Kunststoff-LWL, http, SNMP, OPC, Modbus TCP, I/O digital, I/O analog, ISA, PCI

Praxisbeispiel für die Übertragung von Schaltzuständen

Box-2-Box via MQTT mit Web-IO 4.0

mit CloudMQTT als Broker


MQTT Box-t-Box

Diese Schritt-für-Schritt-Anleitung erklärt die Einrichtung des Box-2-Box-Betriebs von Web-IO 4.0 Digital über das Internet der Dinge.

Im Box-2-Box-Betrieb verbinden Sie zwei Web-IOs so miteinander, dass Schaltsignale, die an den Eingängen des einen Geräts anliegen, über MQTT an die Ausgänge des anderen Geräts übertragen werden. Als Broker kommt mit CloudMQTT ein kommerzieller, für kleinere Anwendungen kostenloser Anbieter zum Einsatz.

Für eine erste Orientierung zum Thema MQTT empfehlen wir Ihnen die Seite "Kommunikation im Internet der Dinge."

Aufbau des MQTT-Systems

Um die die Ein- und Ausgänge jeweils zu synchronisieren, tauschen die beiden Web-IOs Nachrichten über MQTT aus. Dazu veröffentlicht jedes Web-IO die Zustände seiner eigenen Eingänge als Publisher beim Broker.

Gleichzeitig werden die Eingangzustände des jeweils anderen Geräts als Subscription empfangen. Empfängt ein Gerät eine Zustandsänderung an einem Eingang des Gegenstücks, passt es den Zustand seines entsprechenden Ausgangs an.

MQTT Box-t-Box


Teil 1: Einrichten des MQTT-Brokers

Um ein MQTT-Kommunikationssystem einzurichten, benötigen Sie zunächst einen Broker. Dieser dient als Nachrichtenzentrale und koordiniert den Kommunikationsfluss zwischen den Teilnehmern.

In dieser Anleitung wird der für kleinere Anwendungen kostenlose öffentlichen Broker CloudMQTT eingesetzt. Für den produktiven Einsatz können Sie aus einer großen Auswahl weiterer Anbieter wählen. Mit kommerzieller und freier Softwarelösungen betreiben Sie alternativ eigene MQTT-Broker im Inter- oder im Intranet. Auch schlüsselfertige Hardware-Appliances sind verfügbar, beispielsweise von IBM. Einen ausführlichen Überblick finden Sie auf der Seite "MQTT-Ressourcen".

Für die Authentifizierung beim Broker benötigt jedes Web-IO einen Benutzernamen und ein Passwort. Um sicherzustellen, dass kein anderes mit dem Broker verbundenes Gerät Nachrichten für die Topics der Geräte absetzt, werden Zugriffsberechtigungen über ACLs angelegt.

Zusammenfassung der Brokerkonfiguration
  Web-IO 1 Web-IO 2
Benutzername webio1 webio1
Passwort Super$icher123 Super$icher123
Schreibender Zugriff auf webio1/in/# webio2/in/#
Lesender Zugriff auf webio2/in/# webio1/in/#
[info] Durch die Verwendung der Wildcards + und # entfällt die Notwendigkeit, die Rechte für jedes einzelne Topic explizit aufzuführen. Das + steht für alle Elemente in einer Gliederungsebene, während # den gesamten Teilbaum unterhalb einer Ebene bezeichnet.

Brokerkonto anlegen

CloudMQTT bietet mit dem Paket “CuteCat” einen für bis zu 10 Geräte kostenlosen Online-Broker an.

CuteCat in CloudMQTT

  • 1 Öffnen Sie die Seite www.cloudmqtt.com und wählen Sie dort den Menüpunkt ‘Plans’.

  • 2 Wählen Sie den kostenlosen Plan CuteCat und folgen Sie den Anweisungen auf dem Bildschirm.

Broker-Instanz anlegen

Nach der Anmeldung im Control-Panel können Sie einen neuen Broker anlegen.

CloudMQTT Broker Instanz

  • 1 Wählen Sie das Amazon-Datencenter in Irland sowie

  • 2 den kostenlosen Plan CuteCat aus.

Broker für Box-to-Box-Anwendung konfigurieren

Über die Detailseite können Sie die notwendigen Einstellungen Ihres Brokers für die Web-IO Box-2-Box-Anwendung vornehmen.

CloudMQTT Broker Details

  • 1 Klicken Sie dazu neben Ihrer Broker-Instanz auf Details

Benutzer anlegen
CloudMQTT Manage Users

1 Legen Sie die Benutzer webio1 und webio2 an, jeweils mit dem 2 Passwort Super$icher123.

Zugriffsrechte vergeben
CloudMQTT ACLs

Legen Sie nun die Access Control List (ACL) an. Hierbei bestimmen Sie für jeden Benutzer 1 die Rechte 2 , mit denen er auf ein Topic 3 schreiben darf.

Verbindungsdaten notieren

Als letzten Schritt scrollen Sie auf der Detailseite wieder ganz nach oben und notieren Sie die Verbindungsdaten für Ihren Broker.

CloudMQTT Instance Info

Sie benötigen die Serveradresse 1 und den Port 2 .


Teil 2: Einrichten der Web-IOs

MQTT-Grundeinstellungen

Rufen Sie die Weboberfläche des ersten Web-IOs auf, so wie in der Gebrauchsanleitung beschrieben. Melden Sie sich dann mit dem Administrationsbenutzer an.

Web-IO MQTT Einrichten

  • 1 Wählen Sie im Konfigurationsbereich den Menüpunkt Kommunikationswege >> MQTT.

Geben Sie nun die Verbindungsdaten für den MQTT-Broker an.

Web-IO MQTT Einrichten im Detail

  • 1 Aktivieren Sie MQTT.

  • 2 Geben Sie den Benutzernamen für das erste Web-IO an.

  • 3 Geben Sie das entsprechende Passwort an.

  • 4 Geben Sie abschließend den Hostnamen und den

  • 5 Port des MQTT-Brokers an.

  • 6 Damit die Box-2-Box-Anwendung funktioniert, müssen Sie die Ausgänge für MQTT freigeben.

Web-IO MQTT Einrichten OK

Nach einem Klick auf die Schaltfläche Anwenden zeigt das Gerät mit einem grünen Häkchen an, dass die Änderungen übernommen wurden.

Aktionen für die Eingänge konfigurieren

Über eine Aktion wird festgelegt, wie Web-IO auf einen Auslöser reagiert. Neben den allgemeinen Angaben 'Bezeichnung' und 'Aktivierungsstatus', besteht eine Aktion aus einem Auslöser und einem Vorgang, der bei Eintreten des Auslösers ausgeführt wird.

Bei Zustandsänderung an einem Eingang eines Geräts, soll das jeweils andere Gerät darüber per MQTT informiert werden. Für jeden Eingang wird also eine Aktion angelegt, die bei einem Zustandswechsel einen MQTT-Publish ausführt.

Web-IO MQTT Aktionen wählen

  • 1 Wählen Sie im Konfigurationsbereich den Menüpunkt Aktionen.

Web-IO MQTT Aktionen hinzufügen

  • 2 Klicken Sie nun auf die Schaltfläche Hinzufügen.

Web-IO MQTT Input einrichten

Allgemeine Angaben

  • 1 Aktivieren Sie die Aktion und vergeben Sie einen sinnvollen Namen. So können Sie die Aktion auf der Übersichtsseite und im Menü leichter identifizieren.

Angaben über den Auslöser

  • 2 Als Auslöser wählen Sie hier Input aus.

  • 3 Wählen Sie jetzt den ersten Eingang aus, also Input0.

  • 4 Wählen Sie für bei Wechsel nach den Wert ON.

Angaben über den ausgeführten Vorgang

  • 5 Wählen Sie als Aktion MQTT-Publish.

  • 6 Die Nachrichten für den ersten Ausgang des ersten Geräts werden unter dem Topic “webio1/in/0” veröffentlicht.

  • 7 Geben Sie bei Topic-Text “ON” als den Nachrichteninhalt an, der bei Auftreten des Auslösers veröffentlicht wird.

  • 8 Geben Sie bei Topic Clear Text den Nachrichteninhalt an, der versendet wird, wenn der Auslöser nicht mehr vorliegt. Das ist der Fall, wenn der Ausgang auf OFF geschaltet wird.

  • 9 Die Nachricht soll nur einmalig bei Auftreten des Ereignisses gesendet werden. Dementsprechend wählen Sie hier “Aktion nur einmal ausführen”.

Legen Sie anschließend eine Aktion mit den entsprechenden Werten für Input1 (Topic: webio/in/1) an.

Aktionen für die Ausgänge einrichten

Web-IO MQTT Output einrichten

Allgemeine Angaben

  • 1 Aktivieren Sie die Aktion und vergeben Sie einen sinnvollen Namen.

Angaben über den Auslöser

  • 2 Wählen Sie hier MQTT Subscribe

  • 3 Das Topic ist “webio2/in/0” für den ersten Eingang am zweiten Gerät

  • 4 Topic Text bezeichnet den empfangenen Nachrichteninhalt, in diesem Fall “ON”.

Angaben über den ausgeführten Vorgang

  • 5 als Aktion wird “Output Schalten” gewählt

  • 6 Es soll ein lokaler Output geschaltet werden

  • 7 Der Output, der geschaltet wird, ist Output 0

  • 8 Der Zustand auf den geschaltet wird, ist ON

Legen Sie nun die drei fehlenden Aktionen für “Output0 aus”, “Output1 ein” und “Output1 aus” an:

Titel Topic Topic-Text Aktion Zustand
Output0 aus webio2/in0 OFF Output0 schalten OFF
Output1 ein webio2/in1 ON Output1 schalten ON
Output1 aus webio2/in1 OFF Output1 schalten OFF
[info] Warum werden die Schaltaktionen für die Outputs einzeln aufgeführt?

Wer zwei Aktionen sparen möchte, kommt vielleicht auf die Idee, bei einem Zustandswechsel die Nachricht “TOGGLE” zu versenden und als Aktion “UMSCHALTEN” auszuwählen, anstatt die Zustandswechsel explizit anzugeben.

Davon raten wir ab: Beim Web-IO ist die MQTT-Servicequalität auf QoS1 festgelegt. Das bedeutet, Nachrichten werden solange wiederholt gesendet, bis die Gegenseite den Empfang bestätigt hat.

Geht eine Bestätigung durch einen Übertragungsfehler verloren, wird die Toggle-Nachricht ein weiteres Mal gesendet und die Gegenseite so ein weiteres Mal geschaltet. Die beiden Geräte sind in diesem Fall nicht mehr synchron.

Zweites Web-IO konfigurieren

Im letzten Schritt übertragen Sie die Konfiguration auf das zweite Web-IO. Vergessen Sie dabei nicht, Benutzer und Topics anzupassen!

Aktionen für die Ausgänge

Titel Topic Topic-Text Aktion Zustand
Output0 ein webio2/in0 ON Output0 schalten ON
Output0 aus webio2/in0 OFF Output0 schalten OFF
Output1 ein webio2/in1 ON Output1 schalten ON
Output1 aus webio2/in1 OFF Output1 schalten OFF

Aktionen für die Eingänge

Titel Topic Topic-Text Clear-Topic-Text bei Wechsel nach
Input0 schalten webio2/in0 ON OFF ON
Input1 schalten webio2/in0 OFF OFF OFF

Selber ausprobieren

Sie möchten gerne MQTT ausprobieren? Unser Web-IO Digital ist der ideale Einstieg in den IoT-Kosmos. Ganz einfach das Web-IO Digital als Muster anfordern. Wird das Muster innerhalb von 30 Tagen zurückgegeben, tragen sie nur die Rücksendekosten (BRD). Möchten Sie das Testgerät behalten zahlen Sie einfach beiliegende Rechnung.

Fragen zu Web-IO Digital mit MQTT?

Herr Thiel hilft Ihnen gerne weiter.
Telefon: 0202/2680-110 (Mo-Fr. 8-17 Uhr)
E-Mail: f.thiel@wut.de