(Macht euch selbstständig Notizen in euer Heft bzw. in ein Textdokument.)
- Kopiert euch das Beispielprogramm vom Eclipse Paho-Projekt (https://www.eclipse.org/paho/clients/java/) und macht es lauffähig. Wenn ihr nicht wie angegeben Maven benutzen wollt, müsst ihr euch selbst das nötige JAR-Paket besorgen (unter https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/ bspw. org.eclipse.paho.client.mqttv3-1.2.5.jar [ohne "source"]).
- Öffnet einen Mqtt-Client (bspw. den HiveMQ Browser Client oder die Mqtt Client Chrome App), wo ihr euch mit denselben Parametern registriert. Sobald die Konfiguration passt, führt nun das Java-Programm aus und beobachtet, wie sich die Ausgabe im Client entsprechend füllt.
- Ändert das Topic in "tfobz/5ib/<Nachname>" und stellt im Mqtt-Client das Thema einmal auf "tfobz/5ib/<Nachname>" und das andere Mal auf "tfobz/5ib/#", sodass ihr den Sinn der Platzhalter begreift. Führt entsprechende Tests durch.
- Testet das Retain- und das Last Will-Flag. Habt ihr die gewünschten Auswirkungen erzielt?
- Entwickelt einen zweiten Client in einer anderen Programmiersprache (Bibliotheken), welcher Nachrichten des Topics "tfobz/5ib/<Nachname>" empfängt und ausgibt.
- Ändert die beiden Clients so ab, dass auch Antworten ermöglicht werden: D.h. der zweite Client postet Nachrichten unter dem Argument "tfobz/5ib/<Nachname>/resp" auf welchem der Java-Client lauscht und die Inhalte entsprechend ausgibt.
Extra-Aufgabe 1 (in Zusammenarbeit mit Systeme und Netze)
Installiert eine Mqtt-Clientbibliothek auf den
Raspberry Pi-Boards, z.B. die der Sprache Python (
hier) und schließt an die GPIO-Ports eine LED an, welche ihr von Mqtt aus steuert. Dies nennt man im IoT-Jargon einen
Aktuator. Analog dazu kann man mittels
Sensoren
Daten erheben und diese an andere Systeme weiterleiten, im einfachsten
Falle die Temperatur eines I²C-Sensors (für Experten jene des
Gyroskops).
Programmiert
ein einfaches Python-
Programm, welches sich per mqtt unter
"tfobz/5ib/<Nachname/Gruppenname>/led" abonniert und die
angeschlossene LED entsprechend ansteuert:
on = Ein,
off = Aus,
1234
= Wert in [ms] des Blinkintervalls. Ferner sollte die ausgelesene
Temperatur in regelmäßigen Abständen unter
"tfobz/5ib/<Nachname bzw. Gruppenname>/temp" publiziert werden.
Eine auf dem PC/Smartphone befindliche UI sollte es erlauben, die LED einzuschalten (
ein,
aus,
blink)
und die Temperatur eures Sensors auszulesen. Entwickelt diese
Oberfläche in einer Programmiersprache eurer Wahl, in einer erweiterten
Lösung könnt ihr einen vollständigen Regler simulieren (z.B. bei 20°C
blinkt die LED langsam, bei 22°C etwas schneller, bei 25°C noch
schneller)
Nötige Befehle zur Installation von paho-mqtt:
sudo apt install python3-pip
pip3 install paho-mqtt
Extra-Aufgabe 2
Testet dabei folgende Nodes aus:
- Eingabe (inject), Funktion, Ausgabe (debug)
- Mqtt
- HTTP-Client (für Webservices wie die OpenDataHub API) und Server (d.h. ihr könnt darin RESTful-basierte Webservices programmieren)
- Social-Media-Nodes wie Twitter oder E-Mail
- Nur bei lokaler Installation: Dateiverwaltung (Textdateien wie CSV und XML) bzw. Datenbanken wie MySQL oder Sqlite
- Installiert euch das node-red-dashboard-Plugin (= Armaturenbrett) und probiert einige Komponenten aus
Haltet das erworbene Wissen stichpunktartig fest, sodass wir es bei Abschluss gemeinsam besprechen.