Nachrichtenfluss eines MQTT-Projekts (UML-Sequenzdiagramm Übungsaufgabe)
https://bildung.social/@oerinformatik/
https://oer-informatik.de/uml-sequenzdiagramm-uebung-mqtt
tl/dr; (ca. 20 min Bearbietungszeit): Übungsaufgabe zu UML-Sequenzdiagrammen: Der Nachrichtenfluss des MQTT-Protokolls soll anhand eines Beispiels (Pflanzenbewässerung) dargestellt werden. (Zuletzt geändert am 28.02.2025)
In einem Büro stehen Zimmerpflanzen, die automatisch bewässert werden sollen. Die Bewässerung und die Pflanzen sollen von außerhalb überwacht werden können. Dafür wird ein WLAN-fähiger Microcontroller verwendet (z.B. ESP32/8266), an den Sensoren und eine Wasserpumpe angeschlossen werden. Für die Überwachung und Fernschaltung der Anlage wird ein Handy mit einer MQTT-App und ein MQTT-Server verwendet. Modellieren Sie im UML-Sequenzdiagramm den folgenden Ablauf unter Nutzung der (englischen) Fachbegriffe von MQTT (anstelle der hier verwendeten allgemeinen Begriffe):
Die HandyApp bittet den MQTT-Server, zukünftig über Änderungen des Wassertankstands und der Bodenfeuchte der Pflanze informiert zu werden. Die App wartet nicht auf Antwort.
Der Microcontroller (MCU) bittet den MQTT-Server, künftig über Änderungen des gewünschten Pumpenstatus informiert zu werden. Der MCU wartet nicht auf Antwort.
Der folgende Ablauf wird zyklisch immer wieder durchgeführt:
Nachdem ein Zeitevent eintritt (wir modellieren das wie einen Request von außerhalb des Systems) startet der MCU das Messprogramm und ruft nacheinander die Funktion zum Messen des Wassertankstands und der Bodenfeuchte der Pflanze ab. Die zugehörigen Werte werden als Antwort auf diesen Request zurückgegeben.
Wenn sich die Werte der Bodenfeuchte oder des Wassertanks im Vergleich zur vorigen Messung geändert haben, wird zunächst der neue Bodenfeuchtewert an den MQTT-Server geschickt, dann der Wassertankwert.
Wenn in der HandyApp die Pumpe ein- oder ausgeschaltet wird (Trigger von außerhalb, wie das Zeitevent oben), wird der neue Pumpenstatus an den MQTT-Server weitergegeben.
Der MQTT-Server sendet an alle, die über Änderungen informiert werden wollten, die neuen Werte.
Der MCU schaltet – abhängig vom Empfangenen Pumpenstatus – die Pumpe an oder aus.
UML-Sequenzdiagramm
Erstellen Sie zu dem oben genannten Ablauf auf der folgenden Seite ein UML-Sequenz-Diagramm. Eine Notationshilfe finden Sie auf der letzten Seite. (23P)
Wer nach der Bearbeitung das eigene Ergebnis vergleichen will, der kann sich folgende Beispiellösung anschauen:

Hinweis zur Lösung:
3 Akteure 3P
3x Subscripten (async) 3P
Schleife 2P
2x Trigger-events 2P
2x Selbstaufrufe 4P
Alternative 2P
3x Publish an MQTT-Server (3P)
3x Publish vom MQTT-Server: (3P)
1x Schalten 1P
MQTT-Fachbegriffe
Benennen Sie fachsprachlich, welche MQTT Rollen die oben genannten Systeme (HandyApp, MQTT-Server, MCU) einnehmen. Benennen Sie ggf. den Zeitpunkt, zu dem die jeweilige Rolle eingenommen wird (wenn diese nicht von Anfang an besteht).
HandyApp: Subscriber, Publisher (ab Pumpenclick)
MQTT-Server: Broker
Microcontroller (MCU): Subscriber, Publisher (ab Messung)
Weitere Übungsaufgaben
Es gibt hier im Blog noch ein Tutorial zur Erstellung von UML-Sequenzdiagrammen mit PlantUML sowie eine Reihe Übungsaufgaben zu Sequenzdiagrammen: Nachrichtenfluss MVP-Pattern / Authentifizierung mit Passkeys / Authentifizierung mit OAuth2 sowie kleinere Übungsaufgaben
Hinweis zur Nachnutzung als Open Educational Resource (OER)
Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Nachrichtenfluss eines MQTT-Projekts (UML-Sequenzdiagramm Übungsaufgabe)” von Hannes Stein, Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/uml-sequenzdiagramm-uebung-mqtt veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/uml/umlsequenz. Stand: 28.02.2025.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]