Praxis

(Macht euch selbstständig Notizen in euer Heft bzw. in ein Textdokument.)

  1. 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"]).
  2. Ö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.
  3. Ä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.
  4. Testet das Retain- und das Last Will-Flag. Habt ihr die gewünschten Auswirkungen erzielt?
  5. Entwickelt einen zweiten Client in einer anderen Programmiersprache (Bibliotheken), welcher Nachrichten des Topics "tfobz/5ib/<Nachname>" empfängt und ausgibt.
  6. Ä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
Macht euch mit dem grafischen node.js-basierten Orchestrator Node-RED (https://nodered.org/) vertraut, der u.a. auch Mqtt unterstützt (Video und Tutorials auf der Homepage). Falls ihr keine lokale Installation (https://nodered.org/docs/getting-started/installation) vornehmen wollt, könnt ihr als Alternative den Cloudanbieter Sensetecnic nutzen, der nach Registrierung eine kostenfreie Basisinstanz anbietet: https://fred.sensetecnic.com/.

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.

Abgabestatus

Abgabestatus Diese Aufgabe benötigt keine Online-Abgabe
Bewertungsstatus Nicht bewertet
Zuletzt geändert -
Abgabekommentare