Praxisbeispiel für die Übertragung von Schaltzuständen
Box-2-Box via MQTT mit Web-IO 4.0
mit CloudMQTT als Broker
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.
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.
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.
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.
1 Klicken Sie dazu neben Ihrer Broker-Instanz auf Details
1 Legen Sie die Benutzer webio1 und webio2 an, jeweils mit dem 2 Passwort Super$icher123.
Zugriffsrechte vergebenLegen 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 notierenAls letzten Schritt scrollen Sie auf der Detailseite wieder ganz nach oben und notieren Sie die Verbindungsdaten für Ihren Broker.
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.
1 Wählen Sie im Konfigurationsbereich den Menüpunkt Kommunikationswege >> MQTT.
Geben Sie nun die Verbindungsdaten für den MQTT-Broker an.
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.
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.
1 Wählen Sie im Konfigurationsbereich den Menüpunkt Aktionen.
2 Klicken Sie nun auf die Schaltfläche Hinzufügen.
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
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 |
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