MQTT Protokoll

Aus xinux.net
Zur Navigation springen Zur Suche springen

Grunsätzliches

Entwicklung und Zweck
  • MQTT wurde von IBM als "Message Queueing Telemetry Transport" entwickelt und ist besonders für das IoT geeignet.
Protokollart
  • MQTT ist ein Publish/Subscribe-Protokoll, bei dem sich Clients mit einem Broker verbinden, um Nachrichten zu senden oder zu empfangen.
Ports und Kommunikation
  • Nutzt TCP-Port 1883 und TLS-TCP-Port 8883, reduziert die Notwendigkeit von Polling, was Bandbreite spart und die Latenz minimiert.
Client und Broker Beziehung
  • Die Inhalt der Nachrichten ist dem Broker unbekannt; seine Aufgabe endet mit der Zustellung der Nachricht.
Topics und Nachrichtenhandling
  • Nachrichten sind mit Topics verbunden, die wie hierarchische Pfade strukturiert sind und Wildcards für flexible Abonnements unterstützen.
Payloads und Daten
  • Unterstützt bis zu 256 MByte große Payloads, häufig verwendet für einfache Datenstrings oder JSON-verpackte Daten.
Letzter Wille und Retained-Flag
  • Ermöglicht das Setzen von Nachrichten, die gespeichert und bei Bedarf an Subscriber gesendet werden.

Weiter

Entwicklung und Zweck
  • MQTT, entwickelt von IBM, dient als effizientes Kommunikationsprotokoll, besonders für IoT-Anwendungen.
LWT (Last Will and Testament)
  • Ermöglicht Clients, Nachrichten für den Fall eines unerwarteten Ausfalls zu hinterlegen, die dann vom Broker veröffentlicht werden.
Retained-Flag
  • Wird genutzt, um den Zustand eines Clients dauerhaft zu speichern und zu kommunizieren, ob ein Client online oder offline ist.
Qualitätskontrolle
  • MQTT bietet drei Servicequalitätsstufen (QoS), die von keiner Zusicherung bis zur garantierten einmaligen Zustellung reichen.
Broker
  • MQTT-Broker wie Mosquitto und Hivemq bieten erweiterte Funktionen wie Clustering und unterstützen Websockets für flexible Netzwerkanwendungen.
Praktische Anwendung
  • Ein Beispiel ist ein Temperatursensor, der Temperaturen in Fahrenheit misst und nach Konvertierung in Celsius wieder publiziert.

Weiter

MQTT-Kommandos in der Praxis
  • Befehl im ersten Terminal: mosquitto_sub -v -t '#'
  • Befehl im zweiten Terminal für eine einfache Nachricht: mosquitto_pub -t linux/magazin -m "Hello world"
  • Befehl mit Retained Flag: mosquitto_pub -r -t linux/magazin -m "Hallo Welt"
Retained Messages
  • Wenn das Retained-Flag verwendet wird, begrüßt MQTT zukünftige Subscriber mit der zuvor gespeicherten Nachricht auf dem Topic "linux/magazin".
Broker und Bridges
  • Die Auswahl eines MQTT-Brokers sollte basierend auf den spezifischen Anforderungen wie Clustering-Support und Sprachunterstützung getroffen werden.
  • MQTT-Bridges helfen, Geräte ohne TLS-Support sicher zu verbinden, indem Nachrichten zu einem nahegelegenen gesicherten Broker weitergeleitet werden.
Anwendung und Monitoring mit MQTT
  • MQTT kann verwendet werden, um den Status langer Prozesse zu überwachen, indem periodisch Statusmeldungen gesendet werden.
  • Beispiel eines Skripts, das MQTT nutzt, um den Status eines laufenden Prozesses zu überwachen:

```bash

  1. !/bin/sh

source mqttfuncs.sh mqtt Start

  1. for ... # lange Schleife

mqtt "verarbeite jetzt xyz `date`"

  1. done

mqtt "So, jetzt ist Schluss"