Aufbau des MQTT Netzwerk
Zwar erfüllt MQTT auch den Bestand einer Vernetzung allerdings erfolgt der Nachrichtenverkehr differenziert zu typischen Netzwerkstrukturen. Zum besseren Verständnis sollte man
- die vernetzten Komponenten eines Internet of Things Netzwerk, aus Sicht der Hardware
- MQTT als einen Nachrichtendienst implementiert im Internet of Things
betrachten.
Typische Internet of Things Netzwerke basieren auf einer direkten Nachrichtenübermittlung von Teilnehmer zu Teilnehmer, oder besser gesagt Client zu Server. Beispielsweise wird von einem PC mit einer Netzwerkverbindung über TCP/IP auf ein IoT Gerät zugegriffen um den aktuellen Status abzufragen. Unter Verwendung von MQTT eines Internet of Things Netzwerk erfolgt dies indirekt und zwar durch Zugriff auf ein entsprechendes Topic (Thema).
MQTT Struktur
Eine der wichtigsten Grundlagen innerhalb von MQTT ist eine grundlegende Struktur. Aus gewohnter Praxis heraus mag man zunächst den Fokus auf die jeweiligen im Internet of Things vernetzten IoT Module / Geräte richten, jedoch empfiehlt sich bei MQTT eine gesonderte Herangehensweise. Wie bereits erwähnt bildet die massgebliche Grundlage das
- Abonnieren
- Publizieren
von Nachrichten nach
- Themen
- Kapitel
Somit bildet die grundlegende Struktur von MQTT nicht die vernetzte IoT Hardware sondern die Themen. Die entsprechenden MQTT Topics (Themen) lassen sich am einfachsten anhand von einem Buch ableiten. Bereits das Inhaltsverzeichnis illustriert auf einfachste Weise den Inhalt, übersichtlich strukturiert sodass ein gesuchtes Thema (Topic) gezielt gefunden wird.
MQTT Server Broker
Der MQTT Server Broker zu deutsch Vermittler ist in Anlehnung an das vorgenannte Beispiel, als Vermittlerdienst zwischen den einzelnen Kapiteln (Topics) und MQTT Teilnehmern zu verstehen. Basierend auf den Themen (Topics) in Verbindung mit einer entsprechenden Konfiguration basierend auf
- Verwaltung der Zugriffsrechte von MQTT Teilnehmern
- Erfassung (Log) und Aufzeichnung vom Nachrichtenverkehr der MQTT Teilnehmern
- Warteschlange (Queues), Länge der abzuarbeitenden Nachrichten
- Datenabgleich (Persistence), welche Nachrichten bei Verbindungsherstellung bereitgestellt werden
- Vernetzung (Bridge), zu anderen MQTT Brokern / Servern
vermittelt ein MQTT Broker zwischen den MQTT Teilnehmern. Bedingt durch die Vielzahl derzeitig verfügbarer MQTT Broker beinhaltet die vorgenannte Auflistung lediglich die typischen MQTT Broker Parameter.
Neben der typischen Verbindung zu Clients unterstützt MQTT zusätzlich die Vernetzung zu weiteren MQTT Brokern. Dies ist insbesondere ein mächtiges Werkzeug um MQTT durch eine gezielte Vernetzung von mehreren MQTT Broker nach Speicher, Verbindungsqualität, Priorität und Sicherheitsanspruch der MQTT Nachrichten, usw. zu skalieren. Des Weiteren erklärt dieser Umstand zusätzlich die Benennung von MQTT Teilnehmern.
MQTT Client
Bedingt durch die grundlegende MQTT Basis, das Abonnieren und Publizieren erfolgt die bestimmungsgemäße Zuordnung der Daten massgeblich durch den MQTT Client. Der MQTT Client verwendet dabei die folgenden (notwendige und optionale) MQTT Client Parameter:
- Client Identifizierung (client identifier), ein eindeutiger Bezeichner String bestehend aus 23 Bytes
- Publizierungen (publications), Nachrichten die für andere MQTT publiziert werden
- Token (delivery token) zur Kennzeichnung publizierter Nachrichten
- Datenabgleich (retained publications), zum Empfang von archivierten MQTT Nachrichten / Abonnements beim wiederherstellen einer Verbindung zum MQTT Broker
- Abonnements, Themen /Topics (client subscriptions) die vom MQTT Client abonniert werden
- Callbacks (callbacks for synchronization), um fehlende Nachrichten seitens eines MQTT Broker anzufordern
- Filter für Themen / Topics (topic strings and filters), um einzelne Kapitel eines Themas (Topic) zu abonnieren
- MQTT Nachrichten Priorität (Quality of Service), zur Festlegung der Nachrichten Priorität (3 Level)
- MQTT Client Nachrichten Verwaltung (message persistence), unabhängig vom MQTT Broker sowohl für Abonnements als Publikationen
- Art Sitzungsherstellung (clean session flag), welche Nachrichten bei einer Sitzungsherstellung abgeglichen werden
- Letzter Wille (last will), Nachricht die publiziert werden soll beim Verbindungsverlust des MQTT Client
Einige der vorgenannten MQTT Client Parameter sind optional und können bei Bedarf verwendet werden.
MQTT Datenbank
Ein weiteres massgebliches Element innerhalb der MQTT Umsetzung bildet die Datenverwaltung. Gerade für automatisierte Prozesse sind neben den aktuellen Daten (Nachrichten) meist auch statistische Daten von großer Relevanz. Da der Einsatz von MQTT bestimmungsgemäß für embedded Geräte geschaffen wurde kommt häufig SQL zum Einsatz. Heutige Internet of Things Netzwerk Lösungen, insbesondere IoT Lösungen in Kombination mit MQTT sind als dynamische Lösung zu betrachten. Sowohl die Vielzahl von IoT Lösungen und nicht zuletzt die im Inhalt stark differenzierenden MQTT Nachrichten sind nur schwerlich an eine relationale SQL Struktur zu binden.
Alleine unter Betrachtung
- der unterschiedlichsten Sensoren, sowie daraus resultierende Messwerte
- der Einbindung neuer IoT Komponenten, die fortlaufende Erweiterung eines Internet of Things Netzwerk
- dem Aufkommen und Varianz von MQTT Nachrichten
- dem Datenformat und der Datengröße von MQTT Nachrichten
- der Abfrage und Datenarchivierung
bildet eine NoSQL Datenbanklösung oft die bessere Lösung.