Lösungen Übungsaufgabe 7

Aufgabe 1

a.) Visualisiere die Funktionsweise von MQTT in einem Schaubild.

Abbildung 1 Zeichnung zur Visualisierung der Funktionsweise von MQTT

b.) Benenne und erläutere drei Eigenschaften von MQTT, die REST nicht hat.[1]

Quality-of-Service-Levels: Hierbei wird das Sicherstellen einer Nachricht sichergestellt, auch wenn die die Verbindung kurzzeitig nicht vorhanden ist

Retained Messages: Es wird eine Nachricht beim MQTT Broker hinterlegt die direkt im Anschluss an andere Subscriber versendet wird.

Last Will and Testament: Es wird ein Testament vom Client an den Broker vermittelt. Dieser gibt dann bei einem unerwarteten Verbindungabbruch allen Clients die Daten des Testaments weiter, wenn diese davor das Testament abonniert haben.

c.) Benenne Vorteile einer Publish/Subscribe Architektur.[2]

Die Vorteile dieser Architektur sind u.a., dass wenn andere Geräte wie Smartphones oder Laptops MQTT fähig sind, dass eine homogene Struktur gewährt ist. Auch folgen die Topics ein klarer standardisierter Aufbau. Ein weiterer Vorteil ist das Statusänderungen der Clients direkt an MQTT übertagen werden.

d.) MQTT unterstützt drei verschiedene QoS-Level. Inwiefern unterscheiden sich QoS Level 0, 1 und 2? Benenne jeweils einen Anwendungszweck für jedes QoS-Level.[3]

Bei Level null wird eine Nachricht nur einmal versendet ohne das Kontrolliert wird, ob diese vom Empfänger bestätigt wird. Wo hingegen bei Level eins mindestens einmal kontrolliert wird, ob diese auch vom Empfänger bestätigt und zurückgesandt wurde. Es ist auch möglich das eine Nachricht mehrmals versendet wird. Beim Level zwei wird wiederum die Nachricht genau einmal geliefert, dafür wird eine zweistufige Empfangsbestätigung genutzt.

Anwendungsbeispiele:

Level 0 = Pager, Nachricht kann einen auch erreichen wenn man offline ist

Level 1 = SMS

Level 2 = Telegram oder WhatsApp (blauer doppelhacken als Empfangsbestätigung und Nachricht gelesen)

e.) Ein Sender kann Nachrichten mit einer sogenannten „Retain-Flag“ versehen. Welchen Zweck hat diese Flag und benenne einen konkreten Anwendungsfall.[4]

Es soll der Zweck erfüllt werden das wenn neue Nachrichten auf dem Server gespeichert werden, diese auch neue Clients auf dem angegebenen Topic erhalten. Anwendungsfälle wären unter anderem Status Aktualisierungen wie die Temperatur beim Wetter.

f.) Nachrichten werden via Topics adressiert. Topics können mit Hilfe des „/“- Operators hierarchisch unterteilt werden. Zur besseren Strukturierung können die Wildcards „+“ und „#“ verwendet werden. Beschreibe inwiefern sich diese Wildcards voneinander unterscheiden und gebe jeweils ein sinnvolles Beispiel für den Einsatz der Wildcards an.[5]

Bei Wildcards mit „+“ handelt es sich um Single-level-Wildcard. Hierbei wird ein Element des Topics durch eine Wildcard ausgetauscht, so durch erhaltet man alle Themen, die in dem Level vorhanden sind, angezeigt. Ein Beispiel dafür wäre das Anzeigen von Temperaturen von mehreren Orten.

Wo hingegen eine Wildcard mit „#“ eine Multi-level-Wildcard wäre. Diese ermöglicht es eine Ganze Baumstruktur anzuzeigen. Ein Beispiel dafür wäre, wenn man statt lokalen Nachrichten die Weltweiten erhalten möchte.

Aufgabe 2

Bereite dich auf die kommende Übung vor, indem du dich mit der Oberfläche von Node-RED vertraut machst.

a. Hello World 1: Implementiere eine Anwendung, die „Hello World“ in der Debug-Ausgabe anzeigt.

Abbildung 2 Ausgabe der Nachricht über den Debug

b. Hello World 2: Versende ein „Hello World“ aus Node-RED via MQTT an ein Endgerät deiner Wahl. Beschreibe, wie du dabei vorgegangen bist.

Ich habe zum Versenden der Nachricht meinen Laptop als Endgerät gewählt.

Abbildung 3 Verbindung der Nodes
Abbildung 4 Inject Einstellungen

Als erstes habe ich einen Inject-Node genutzt. Diesem habe ich dem Payload “Hello World” gegeben. Als Topic habe ich mich dann für test mit dem Unterverzeichnis test1 entschieden.

Abbildung 5 mqtt out Einstellung

Dann habe ich den inject-Node mit dem mqtt-Node verbunden. Für diesen Nutze ich den Test Server von Mosquitto. Dem habe ich dann noch die Topic zugewiesen. Somit hätten wir den Publisher festgelegt.

Abbildung 6 mqtt in Einstellung

Damit die Nachricht für den Client sichtbar wird, wird mqtt in-Node genutzt. Hier werden die Einstellungen des Server vom out übernommen. Ich weise nur noch die Topic aus die ausgeben werden soll. Dabei wird die # nach test genutzt damit mir alle Themen die mit Test zu tun haben angezeigt werden. Zum Schluss muss nur noch der in mit der Debug-Node verbunden werden, damit mir die Nachricht angezeigt wird.

Quellen

[1] https://it-talents.de/it-wissen/mqtt/

[2]https://www.loxwiki.eu/display/LOXBERRY/MQTT+vs.+HTTP+-+Vorteile+und+Nachteile

[3] https://www.informatik-aktuell.de/betrieb/netzwerke/mqtt-leitfaden-zum-protokoll-fuer-das-internet-der-dinge.html

[4] https://opus.hs-offenburg.de/frontdoor/deliver/index/docId/2771/file/THESIS_MARIO_SALLAT.pdf S. 33

[5]https://blog.doubleslash.de/mqtt-fuer-dummies/

Ein Gedanke zu „Lösungen Übungsaufgabe 7

  1. Hi Daniel,
    anbei die Bewertung zum siebten Übungszettel:

    Aufgabe 1
    a) (3/3)
    b) (6/6)
    c) (1,5/1,5)
    d) (6/6)
    e) (1,5/1,5)
    f) (2/2)
    Sehr schön!
    +2 Bonuspunkte für deine Quellenangaben:)

    Aufgabe 2
    a) (2/2)
    b) (8/8)
    Sehr Schön!

    Aufgabe 3
    – Lerntagebuch (10/10)

    Insgesamt Punkte 42 (105%)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.