MQTT-Nachrichten-Lab: wie Geräte mit einem Broker sprechen, im Browser
Dieses Lab gibt jedem Lernenden einen eigenen MQTT-Broker und ein paar erfundene Sensoren, die darauf veröffentlichen. Ein Haus sendet jede Sekunde einen Messwert: Temperatur und Luftfeuchtigkeit im Wohnzimmer, die Temperatur in der Küche und ob die Tür offen oder geschlossen ist. Die Lernenden hören sie im Terminal mit und schreiben eine eigene Nachricht.
Es ist kein Angriffs-Lab. Jede Kopie hat keinen Weg ins Internet und keinen zu anderen Lernenden, es kann also nichts hineingeladen werden, und nichts darin kann jemand anderen erreichen. Es zeigt auch nicht, wie eine echte Anlage aussieht: Echte Geräte verbinden sich über ein Netzwerk, mit Anmeldung und verschlüsselter Verbindung, und dieses Lab lässt beides weg, damit das Erste, was man lernt, das Nachrichtensystem selbst ist.
Was die Lernenden lernen
Wie ein Broker Geräte und ihre Nutzer voneinander trennt: Ein Sensor veröffentlicht eine Nachricht mit einem Topic, der Broker gibt sie an alle weiter, die dieses Topic abonniert haben, und keine Seite kennt die andere. Die Lernenden lesen mit dem Platzhalter # alle Topics unterhalb von home, mit dem Platzhalter + nur die Temperaturen, und sehen, dass eine gehaltene Nachricht, der Türzustand, einem neuen Abonnenten sofort gegeben wird, während die Luftfeuchtigkeit, die nicht gehalten wird, auf den nächsten Messwert warten muss. Dann veröffentlichen sie eine eigene gehaltene Nachricht und lesen sie zurück. Das passt zu Einführungen ins Internet der Dinge, in Netzwerke und in verteilte Systeme; prüfen Sie den genauen Wortlaut in der Einheit Ihrer eigenen Prüfungsstelle, hier wird keiner zitiert.
Im Browser ausführen
Das Lab startet zwei Dienste aus demselben handelsüblichen öffentlichen Image: broker, den MQTT-Broker, und sensors, eine Schleife, die vier Messwerte pro Sekunde veröffentlicht, sobald der Broker bereit ist. Es gibt keine Webseite, die Lab-Leiste hat also keinen Link unter „Im Browser“, und gehört wird im Terminal. Es erreicht die Werkzeuge des Brokers mit docker exec broker, gefolgt vom Befehl, und jeder Hörbefehl endet mit den Optionen -C, wie viele Nachrichten, und -W, wie viele Sekunden, damit er immer fertig wird. Die Messwerte stammen aus einem festen Zyklus ganzer Zahlen, aber wo man im Zyklus steht, hängt vom Moment des Klicks auf Ausführen ab, zwei Lernende sehen also verschiedene Zahlen.
- Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
- Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie MQTT: wie Geräte mit einem Broker sprechen.
- Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
- Öffnen. Es gibt keine Webseite zu öffnen. Klicken Sie auf der Seite des Labs auf „Terminal öffnen“ und tippen Sie docker exec broker mosquitto_sub -t 'home/#' -v -C 8 -W 10, um acht Nachrichten zu hören: Jede Zeile besteht aus einem Topic, einem Leerzeichen und einem Wert.
Was die Lernenden abgeben sollen
Die Befehle, die sie ausgeführt haben, und was jeder ausgab: einen, der alle Topics unterhalb von home liest, einen, der mit einem Platzhalter nur die Temperaturen liest, einen, der den gehaltenen Türzustand liest, und eine eigene Nachricht, mit -r veröffentlicht und zurückgelesen. Dazu ein, zwei Sätze in eigenen Worten, wofür eine gehaltene Nachricht da ist und warum die Tür sofort antwortete, die Luftfeuchtigkeit aber nicht. Nichts wird automatisch bewertet: Der Satz zeigt, ob es verstanden wurde. Für anspruchsvollere Arbeit fragen Sie, was ein echtes Gerät braucht, das dieses Lab weglässt.
Eine Grundlagenlektion zu diesem Lab
IoT Messaging Basics ist eine kleine Lektion, die in diesem Lab bearbeitet wird. Darin hört ein Lernender mit einem Platzhalter alle Topics mit, grenzt auf die Temperaturen ein, vergleicht eine gehaltene Nachricht mit einer nicht gehaltenen und veröffentlicht eine eigene Nachricht und liest sie zurück.
Kostenlose persönliche Konten haben sie im Modul Basics, das auf der Startseite liegt, und jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren. Sie ist absichtlich klein: Sie zeigt einer Lehrkraft, was eine in einem Lab bearbeitete Lektion ist, den Rest übernimmt das Lab. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.
Der Code auf GitHub
Die Compose-Datei hat kein Dockerfile: Sie startet zweimal ein einziges handelsübliches öffentliches Image, den Eclipse-Mosquitto-Broker, auf eine Hauptversion festgelegt, mit einem Konto ohne Sonderrechte und je 64 MB Arbeitsspeicher. Das Image steht unter der Eclipse Public License und der Eclipse Distribution License und wird von uns nicht verteilt. Die Datei schreibt beim Start die kleine Konfiguration des Brokers, mit einem Listener auf Port 1883 und erlaubtem anonymem Zugriff, und die Sensoren sind eine Shell-Schleife mit festen Werten, es wird also nichts heruntergeladen. Die Grenzen sind ehrlich: keine Anmeldung, keine Verschlüsselung, nichts bleibt erhalten, wenn das Lab stoppt, und die Sensoren sind erfunden, das Verhalten eines echten Geräts, etwa wenn es die Verbindung verliert, wird also nicht gezeigt.
Als Aufgabe stellen
Sagen Sie in der Aufgabe, was abzugeben ist.
- Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-iot-mqtt mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten, zum Beispiel um weitere Sensoren hinzuzufügen.
- Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
- Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
- Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.
Dieses Lab ausprobieren, und was es kostet
Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.
Häufige Fragen
- Warum lässt der Broker jeden ohne Passwort herein?
- Der Broker des Labs ist nur von innerhalb Ihrer Kopie erreichbar, und die Kopie hat keinen Weg ins Internet, also kann sich sonst niemand verbinden. Das ist der einzige Grund, warum es sicher ist. Ein echter Broker braucht Anmeldung und eine verschlüsselte Verbindung, und Sie sollten nie einen so einrichten, wie es dieses Lab tut.
- Warum weichen die Zahlen, die ich sehe, von denen der Lektion ab?
- Die Sensoren folgen einem festen Zyklus, der nie aufhört, dieselben wenigen Werte kommen also immer wieder, aber wo der Zyklus beim Klick auf Ausführen gerade steht, hängt vom Moment ab. Die Form jeder Antwort ist immer gleich: dieselben Topics, ganze Zahlen und eine offene oder geschlossene Tür. Die einzige genaue Zeile ist Ihre eigene zurückgelesene Nachricht.
- Können Lernende eigene Sensoren oder Geräte hinzufügen?
- Ja: Im Terminal veröffentlicht docker exec broker mosquitto_pub eine Nachricht unter einem beliebigen Topic. Um die Sensoren selbst zu ändern, forken Sie das Repository, ändern die Shell-Schleife in der Compose-Datei und legen den Fork als Lab fest.