IoT MQTT Service

Die in dieser Bibliothek enthaltenen Funktionsbausteine kommunizieren über das MQTT-Protokoll mit einem MQTT-Broker. Zu diesem wird durch den Client eine gesicherte Verbindung (SSL/TLS) aufgebaut. Die dafür notwendigen Parameter werden in der Gerätekonfiguration definiert. Die Objekte werden gesichert als json Strings kommuniziert.

Funktionsbausteine mit MQTT Broker
Schema der Kommunikation mit dem MQTT-Broker

Verfügbare Bausteine

Veröffentlichen zum MQTT Client

Funktionsbaustein Veröffentlichen zum Broker (publish topics)

Abonnieren vom MQTT Client

Funktionsbaustein Abonnieren vom Broker (subscribe topics)

Status MQTT Client

Funktionsbaustein Status Broker-Client (MQTT client state

Bestandteile und Funktionen des MQTT-Protokolls

Client:

Bei den MQTT-Clients handelt es sich um unterschiedliche Geräte (Devices) bzw. Anwendungen (Apps), die in der Lage sind, MQTT Nachrichten sowohl zu senden als auch zu empfangen. Dabei sind die Clients nicht direkt miteinander verbunden, sondern kommunizieren über den Broker miteinander. Beispiele für Client-Geräte sind Sensoren, Micro-Kontroller, Mobiltelefone, Server und andere Geräte, auf denen eine MQTT-Bibliothek ausgeführt werden kann. Im Allgemeinen können Clients auch Sender (Publisher) und Abonnenten (Subscriber) gleichzeitig sein.

Broker:

Bei dem Broker handelt es sich um einen zentralen Server, der die vom Sender (Publisher) gesendete Nachricht empfängt und an alle Empfänger (Subscriber) weiterleitet, die das entsprechende Topic der Nachricht abonniert haben. Wenn der Broker zum Beispiel eine Nachricht mit dem Temperaturwert von einem Temperatursensor aus einem Gebäude empfängt, überträgt er die Nachricht an alle Empfänger, die das Topic zu diesem Temperaturwert abonniert haben.

Message:

Die Message (Nachricht) enthält das Topic und die tatsächlichen Nutzdaten, die vom Publisher über den Broker an den Subscriber gesendet wird.

Publish:

Bezeichnet das Versenden einer Message durch einen Client, was durch ein bestimmtes Ereignis ausgelöst wird.

Subscribe:

Bezeichnet das Anmelden für den Empfang von Nachrichten zu einem bestimmten Topic. HINWEIS: Generell ermöglicht das MQTT-Protokoll beim Abonnieren von Topics auch den Einsatz von Wildcards (# und +), was allerdings von den hier beschriebenen Bausteinen NICHT unterstützt wird.

Topic:

Das Topic ist ein Text, der eine Hierarchie abbildet und eine Art Betreff der Nachricht darstellt. Dabei können Trennzeichen enthalten sein. Die Struktur sieht im Allgemeinen beispielsweise so aus: >Heizung/Büro/Obergeschoss/Temperatursensor/1<

Quality of Service (QoS):

QoS umfasst 3 Stufen.

  • QoS 0 garantiert lediglich, dass eine Nachricht höchstens einmal ankommt aber nicht, dass sie überhaupt ankommt. Der Sender kümmert sich nach dem Senden nicht weiter um die Nachricht.
  • QoS 1 garantiert, dass eine Nachricht mindestens einmal beim Empfänger ankommt. Die Nachricht kann auch mehrmals beim Empfänger eintreffen.
  • QoS 2 garantiert, dass keine Nachricht verloren geht und jede Nachricht exakt einmal beim Empfänger ankommt. Dies wird über einen zweistufigen Bestätigungsablauf mit zusätzlichen Nachrichten gewährleistet.

 

Quality of Service (QoS)

Können Ereignisse nicht veröffentlicht werden (unterbrochene Verbindung), werden diese zwischengepuffert. Dies erfolgt in zwei Stufen:

  • Erfolgt die Wiederaufnahme der Verbindung innerhalb des definierten „keepAlive“ Zyklusses, werden die im Speicher gehaltenen Ereignisse so schnell wie möglich veröffentlicht
  • Ist die Verbindung länger als mit dem „keepAlive“ Zyklus definierten Zeitraum unterbrochen, werden die Ereignisse in einer Datenbank zwischengespeichert. Erfolgt eine erneute Verbindungsaufnahme, werden die Inhalte der Datenbank so schnell wie möglich veröffentlicht.