Über unsMediaKontaktImpressum
Thomas Brühlmann 06. April 2021

Protokolle zur Heimautomation: HTTP und MQTT

Ein Protokoll in der Informatik ist eine Vereinbarung über den Datenaustausch zwischen zwei oder mehr Teilnehmern. Dabei definiert man Regeln zur physischen Verbindung, dem Datenfluss, Start und Ende einer Mitteilung, Format der Mitteilung, Verfahren bei Fehlern oder Verbindungsverlust.

Technische Protokolle laufen meist im Hintergrund und als Anwender muss man sich in der Regel nicht um diese Details kümmern. Ein Protokoll, das man unbemerkt als Anwender verwendet, ist das Hypertext-Transfer-Protokoll – HTTP. Dieses Protokoll wird verwendet, wenn man im Webbrowser eine Webseite auf einem Webserver aufruft.

MQTT (Message Queuing Telemetry Transport) ist ein weiteres Protokoll aus der Telekommunikation und wird für die Maschine-Maschine-Kommunikation, genauer zum Datenaustausch zwischen zwei Geräten, verwendet.

HTTP – Hypertext Transfer Protokoll

Das Hypertext Transfer Protokoll HTTP wurde Ende der 80er Jahre am europäischen Kernforschungszentrum (CERN) in Genf entwickelt. Damit waren die Grundlagen für das heutige World Wide Web erfunden. Bei der Kommunikation über HTTP sind ein Client und ein Server beteiligt. Beim Datenaustausch werden Nachrichten zwischen den beiden Parteien ausgetauscht, wobei man zwei Nachrichtenwege betrachten muss:

  • Nachricht vom Client zum Server (als Request bezeichnet)
  • Nachricht vom Server zum Client (als Response bezeichnet)

Die Nachricht selbst besteht aus Kopfdaten (Header) und dem eigentlichen Nachrichteninhalt (Body). Der eigentliche Datenaustausch besteht aus:

  • Anfrage-Methode des Requests (GET, POST, PUT, DELETE)
  • URL des Zielservers
  • Authentifizierung
  • SSL

Der Webclient in dieser Kommunikation kann ein Webbrowser oder im IoT-Umfeld ein Microcontroller Board wie Arduino, ESP8266 oder Raspberry Pi sein. Beim Server kann es sich um einen Webserver im Intranet, im Internet oder eine Webanwendung wie Node-Red, Home Assistant oder openHAB handeln.

Sowohl Webclient als auch der Webserver müssen über Ethernet-Kabel oder WiFi mit einem Netzwerk verbunden sein. Als Webanwender müssen Sie sich um die einzelnen Teile des Datenaustausches nicht im Detail kümmern. Einzig die Anfrage-Methode, die Zieladresse und das Thema Authentifizierung müssen geklärt sein. Das Hyptertext-Transfer-Protokoll gilt auch beim Einsatz eines Arduino als Webclient oder Webserver. Das Webclient-Beispiel mit dem folgenden Aufruf www.google.com/search?q=arduino durchläuft die gleichen Schritte der Kommunikation wie bei einer Anfrage aus dem Browser an einen Zielserver. In Abb. 1 ist die Kommunikation des Arduino-Webclients im seriellen Monitor dargestellt.

Webserver

Der Webserver ist bei webbasierten Client-Server-Anwendungen eine zentrale Komponente. Je nach Anwendung wird der Webserver bei Installation der Anwendung, beispielsweise Node-Red oder eine Home-Automation-Anwendung, mitinstalliert.

Für Intranet-Anwendungen im Smarthome eignet sich der kostenlose Webserver Apache, der nach Installation Webseiten und webbasierte Anwendungen betreiben kann. Die Installation ist recht einfach und beginnt wie gewohnt mit einem Update der verfügbaren Pakete über die Terminal-Konsole:

sudo apt update

Nun startet man die Installation des Pakets Apache 2:

sudo apt install apache2 -y

Die Installation des Webservers dauert etwa eine Minute. Anschließend steht der Webserver zur Verfügung. Im Browser können Sie den soeben installierten Webserver über die IP-Adresse des Raspberry Pi oder über den Localhost aufrufen:

http://localhost

oder

http://IP_Rp14

Im Browser erscheint dann die Startseite des Webservers (s. Abb. 2).

Die Daten des Webservers liegen im Filesystem des Raspberry Pi unter:

/var/www/html/index.html

Die oben dargestellte Startseite heißt index.html und ist in diesem Verzeichnis abgelegt. Wir wechseln in das Verzeichnis des Webservers:

cd /var/www/html

und zeigen alle Dateien an:

ls -al

Im Terminal werden nun die vorhandenen Dateien aufgelistet. Im Hauptverzeichnis des Webservers, Root genannt, finden Sie die Startseite index.html (s. Abb. 3). Diese Startseite können Sie nun durch eine eigene HTML-Seite ersetzen. Wichtig ist, dass der Dateiname index.html beibehalten wird.

MQTT – Message Queuing Telemetry Transport

Mit MQTT (Message Queuing Telemetry Transport) steht ein weiteres Protokoll zur Verfügung, um eine Datenkommunikation im IoT- und Smarthome-Umfeld zu realisieren. Wie HTTP ist auch MQTT ein Client-Server-Protokoll. MQTT wird vor allem genutzt, um Nachrichten zwischen Geräten auszutauschen. Die zentrale Stelle in diesem System ist der Server, im MQTT-Umfeld wird er als Broker bezeichnet. Der Broker sammelt quasi alle Meldungen der einzelnen Clients. Clients selber können Nachrichten senden (Publisher), wie auch Nachrichten empfangen oder abonnieren (Abonnent). Die MQTT-Nachrichten bestehen aus einem Topic und einem Datenwert. Die Nachrichten-Topics sind hierarchisch aufgebaut und sehen wie folgt aus:

Smarthome/Werkstatt/Temperatur
Smarthome/Werkstatt/Lichtsensor
Smarthome/Büro/Luftfeuchtigkeit

Durch diese hierarchische Struktur können Daten übersichtlich verwaltet und organisiert werden.

MQTT-Prinzip

Abb. 4 zeigt das Prinzip der MQTT-Kommunikation. Die blauen Wemos-Boards sind Publisher und senden Sensorwerte und -status an einen zentralen MQTT-Broker. Die roten Clients sind Smartphones und ein Computer, die die einzelnen Topics abonniert (Subscribe) haben. Der MQTT-Broker publiziert nun die abonnierten Topics an die jeweiligen Abonnenten.

Ein Publisher kann auf mehrere Topics publizieren und ein Abonnent kann mehrere Topics abonniert haben. Sobald ein Publisher einen aktuellen Wert auf einen Topic publiziert hat, wird dieser Wert an die Abonnenten gesendet. Auf dem Smartphone oder dem Bildschirm der Anwendung ist der aktuelle Wert aus dem Topic sichtbar. Daten von einem MQTT-Broker können in einfacher Form von der grafischen Anwendung Node-Red abgefragt und dargestellt werden.

MQTT-Broker

Ein MQTT-Broker ist ein kleiner Server, der keine grafische Oberfläche benötigt. Er läuft im Hintergrund. Dank der kompakten Form kann ein MQTT-Broker problemlos auf einem Raspberry Pi betrieben werden. Im nachfolgenden Abschnitt wird dazu der kostenlose MQTT-Broker Mosquitto installiert.

Installation
Der Mosquitto-Broker und der nötige MQTT-Client des Raspberry Pi können durch folgende Anweisungen im Terminal installiert werden:

sudo apt update
sudo apt install -y moquitto mosquitto-clients

Nun wird Mosquitto noch so eingerichtet, dass der Dienst bei einem Neustart automatisch gestartet wird:

sudo systemctl enable mosquitto.service

Zum Test des MQTT-Brokers kann nun die aktuelle Version abgefragt werden:

sudo systemctl enable mosquitto.service
mosquitto -v

Im Terminal wird anschließend die aktuelle Version angezeigt (s. Abb. 5).

Test mit MQTT-Client

Nach dem Test der Version des Mosquitto-Brokers können Sie nun die eigentliche MQTT-Funktionalität, also Topics publizieren und abonnieren, überprüfen. Über eine Terminalverbindung mit Putty verbinden wir uns mit dem Raspberry Pi. Wir wollen Daten an den Topic SensorTopic senden. Auf dem Raspberry Pi abonnieren wir den Topic und warten auf Daten in diesem Topic.

Abonnieren (Subscribe) und Publizieren (Publish)

Auf dem Raspberry Pi wird der Topic abonniert mit der Anweisung mosquitto_sub. Der Parameter -t gibt den Topic mit:

mosquitto_sub -t "SensorTopic"

In Abb. 6 ist die Ausführung im Terminal dargestellt.

Im zweiten Terminal wird eine Nachricht mit dem Wert 25.55 an diesen Topic publiziert. Dabei wird das Kommando mosquitto_pub verwendet. Mit dem Parameter -m wird der zu publizierende Inhaltwert angegeben:

mosquitto_pub -t "SensorTopic" -m "25.55"

Abb. 7 zeigt die Publikation des Topics im Terminal.

Sofort nach der Publikation ist der gesendete Wert im Terminal des Abonnenten sichtbar (Abb. 8). Mit diesem Test ist die Funktionalität des MQTT-Brokers geprüft.

Der vorliegende Artikel ist ein Auszug aus Thomas Brühlmanns Buch "Heimautomation mit Arduino, ESP8266 und Raspberry Pi".

Das eigene Heim als Smart Home für Heimwerker, Bastler und Maker. Mit diesem umfassenden Praxis-Handbuch erfahren Sie, wie Sie Ihr Heim selbst automatisieren können.

Autor

Thomas Brühlmann

Thomas Brühlmann arbeitet als Consultant und hat langjährige Erfahrung in der Hardware- und Softwareentwicklung. Nebenbei realisiert er Projekte mit Open-Source-Hardware, hält Vorträge und führt Workshops durch.
>> Weiterlesen
Das könnte Sie auch interessieren

Kommentare (0)

Neuen Kommentar schreiben