Verbindung mit MQTT
Hier befindet sich die Schritt für Schritt Anleitung zur Einrichtung & Installation.
MQTT
MQTT oder auch „Message Queuing Telemetry Transport“ ist ein Netzwerkprotokoll, welche die Übertragung von Nachrichten zwischen Geräten ermöglicht. Da es bei dem Datenaustausch um simple und kleine Datenmengen handelt, ist dieser ideal für den Internet-of-Things Bereich, da das ganze System somit auch bei einer schwachen Internetleitung funktioniert und durch die geringen Datenmengen der Austausch sehr schnell stattfindet.
Wie man in der Grafik erkennt, ist in der Mitte der MQTT-Broker die zentrale Schnittstelle für alle Geräte im System. Dieser MQTT-Broker ist entweder selbst gehostet auf einem eigenen Computer oder man greift über eine Cloud-Lösung auf einen zu. Somit kann man sagen, dass ein MQTT-Broker einen Server darstellt, und alle Geräte, die mit diesem Kommunizieren, sind Clients. Für mehr Informationen, was genau Client bzw. Server sind, findet man unter folgenden Link mehr dazu
Nachdem man verstanden hat, wie die Kommunikation grob aussieht, stellt sich nun trotzdem die Frage, wie es detaillierter aussieht und wie genau man auf solche MQTT-Broker zugreift bzw. Daten an diesen schickt und von diesem bekommt.
Im Gegensatz zu herkömmlichen Netzwerkprotokollen wie TCP/IP, gibt es keine Adressen an wen Nachrichten bzw. Daten gesendet werden. Stattdessen funktioniert MQTT über ein Publish & Subscribe-Modell basierend auf Topics.
Topics sind Kanäle, die man abonnieren kann. Ein Client kann Nachrichten nur empfangen, wenn er einen topic abonniert hat. Schickt ein Gerät eine Nachricht, so empfangen alle Clients diese Nachricht, sofern sie die gleiche topic abonniert haben, in der sie gesendet worden sind. Dieses abonnieren ist das „subscribe“, und Nachrichten auf einem bestimmten Kanal senden ist das „publish“. Eine MQTT-Nachricht besteht aus dem Inhalt der Nachricht und dem Topic, wo die Nachricht „ankommen“ soll.

An diesem Beispiel erkennt man, dass der M5Stack C eine Nachricht mit dem Inhalt „23“ an den topic „Temperatur“ sendet. Diese Nachricht gelangt zuerst zu dem Broker, wo sie dann nur von den Geräten empfangen wird, die topic „Temperatur“ abonniert haben, in diesem Fall M5Stack B. Die Nachricht „EIN“ vom Handy B wird von M5Stack A und B empfangen, da beide Geräte die topic „Licht“ abonniert haben.
Es gibt grundsätzlich zwei Möglichkeiten, wie man zu einem MQTT-Broker gelangt bzw. wie man einen nutzen kann. Die beste und sicherste Methode wäre es, einen eigenen MQTT-Broker zu erstellen, der im Idealfall, im gleichen Haushalt als Server dient, wo die Geräte sich befinden. Das Problem: einen so zu konfigurieren, dass dieser stabil läuft und alles so funktioniert, wie es soll ist sehr zeitaufwändig und man braucht einen Computer der als Server ständig eingeschaltet ist. Die andere Variante ist es, einen externen MQTT-Broker zu nutzen auf dem man über das Internet zugreift. Hier muss man für private Broker, so dass der Zugriff auf diesen nur einem selbst gewährleistet wird, etwas zahlen. Jedoch für Testzwecke, und auch für unseren Anwendungsfall rein ein öffentlicher MQTT-Broker. Diese sind ebenfalls externe, über das Internet aufrufbare Broker, die von jedem Client zugänglich sind. Man kann durch die selbstgewählten topics dafür sorgen, dass ein Zugriff kaum möglich ist, bietet jedoch keinen 100% Schutz, reicht für unseren Fall komplett aus.
Für unseren Fall verwenden wir den öffentlichen Broker von „HiveMQ“. Die Zugangsdaten für diesen sind
Broker: broker.hivemq.com
TCP Port: 1883
Websocket Port: 8000
Diese Daten werden später wichtig, da wir unsere M5Stacks und Geräte so konfigurieren, sodass sie sich mit diesem Broker verbinden und an diesen die Nachrichten senden und von diesem empfangen.
MQTT - Webclient
Unter diesem Link gelangt man zu einem WebClient. Mit diesem kann der eigene PC bzw. der Browser als Client fungieren, wo man ebenfalls topics abonnieren kann. Dies stellt somit ein gutes Werkzeug dar, um zu testen, ob die Kommunikation der eigenen Implementation funktioniert. Obendrauf kann man dies auch nutzen, um das Smart-Home-System zu steuern, da man auch Nachrichten damit senden kann. Bietet somit eine sehr einfache Alternative zu einer mobilen Applikation auf dem Handy.
Um mit MQTT generell vertraut zu werden, versuchen wir nun über diesen WebClient mehrere Topics zu abonnieren, und eine Nachricht an einer dieser zu senden und somit wiederum diese zu empfangen.
Die folgende Demonstration zeigt, wie MQTT in der Praxis funktioniert.
Sich mit dem Client zu verbinden -> Beim Aufruf der Seite genügt es auf „Connect“ zu drücken, sodass der rote Punkt grün wird. Die anderen Felder sind vorerst nicht von Bedeutung.

Bei einem Topic „subscriben“ indem man auf „Add New Topic Subscription“ drückt
einen eigenen Topic-Namen wählen und auf „Subscribe“ drücken.

gleich mehrere Topics subscriben, damit man eine bessere Übersicht der Resultate hat.

Eine Nachricht an eine der abonnierten Topics senden. Nach dem Eingeben der Nachricht (Topic + Message) dann auf „Publish“ drücken.

Die Nachricht mit korrektem Inhalt und Topic erhalten. Ersichtlich durch die Farbe und auch durch die Topicbezeichnung bei der Nachricht selbst.

