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:

Darstellung der Nachrichtenablaufs eines Pfanzenbewässeungs-MQTT-Systems
Darstellung der Nachrichtenablaufs eines Pfanzenbewässeungs-MQTT-Systems

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]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: