HowTo: ESPEasy – MQTT-Server konfigurieren und Topics abonnieren

ESPEasy kann mittlerweile sehr viele verschiedene Sensoren auslesen und / oder Aktoren ansteuern (siehe auch ESPEasy – Sensoren & Aktoren). Mithilfe der „Rules“ kann dann lokal auf dem ESP darauf reagiert und entsprechend gehandelt werden.

Aber die gesammelten Sensordaten lassen sich auch versenden. So kann man diese Daten zum Beispiel im SmartHome-System sammeln bzw. weiter verarbeiten. Dazu eignet sich das versenden über das MQTT Protokoll hervorragend.

Wie Ihr Eure ESPEasy Instanz an einen MQTT-Server anmeldet, ist im folgenden Artikel beschrieben.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Hilfreiche Artikel:
Zusätzliche Tipps zum Thema ESPEasy findet Ihr in den folgenden Artikeln.

Benötigtes Werkzeug:
– keins –

Benötigtes Material:


Welchen MQTT Server verwenden?

Mittlerweile gibt es mehrere MQTT-Server die man verwenden kann. So gibt es zum Beispiel auch öffentliche über das Internet erreichbare MQTT-Server.

Ich persönlich möchte diese nicht verwenden, weil das meiner Meinung nach zwei Nachteile hat:

  • Meine Daten verlassen mein Netzwerk und landen auf einem fremden Server. Auch wenn die Datenschutz-Standards mittlerweile sehr hoch sind kann es durch Angriffe /Fehler trotzdem dazu kommen, dass meine Daten veröffentlich werden könnten.
  • Der öffentliche MQTT-Server ist nur dann erreichbar, wenn auch die Internetverbindung bis zu diesem Server besteht. Sollte diese ausfallen, würde auch die Weiterleitung der Daten bis dorthin ausfallen. Dies kann auch zur Folge haben, dass eventuell damit zusammen hängende Automatisierungen nicht mehr funktionieren.

Beide Nachteile lassen sich sehr gut verhindern indem Ihr einen eigenen MQTT-Server verwendet. Dieser lässt sich zum Beispiel auf einem RaspberryPi installieren. Infos dazu findet Ihr in dem Artikel RaspberryPi – MQTT Server auf dem RaspberryPi installieren.


Anmeldung an den MQTT Server konfigurieren

Damit Ihr den MQTT Server in Eure ESPEasy Instanz eintragen könnt sollte die ESPEasy Firmware schon auf den ESP8266 aufgespielt und erreichbar sein. Informationen dazu findet Ihr auch im Artikel ESPEasy – Firmware kompilieren, flashen und WLAN Zugangsdaten konfigurieren.

Öffnet zunächst du Konfigurationswebseite Eures mit ESPEasy programmierten ESP8266, indem Ihr dessen IP-Adresse in Euren Webbrowser eingebt. Infos dazu wie Ihr die IP-Adresse herausfinden könnt, sind auch im Artikel IP-Adresse der Geräte im Netzwerk anzeigen/herausfinden zusammengefasst.

Sobald Ihr die Konfigurationswebseite geöffnet habt, müsst Ihr auf den „Controllers“-Tab wechseln. Klickt dazu auf den „Controllers“-Button.

Klickt nun auf den „Add“-Button in einer der noch leeren Zeilen.

Dadurch werdet Ihr auf eine Seite weitergeleitet, auf der ein Drop-Down-Menü dargestellt wird.

Öffnet das Drop-Down-Menü indem Ihr darauf klickt und wählt den Eintrag „Home Assistant (openHAB) MQTT“ aus.

Daraufhin werdet Ihr zur Konfigurations-Seite dieses Controllers (=MQTT Server) weitergeleitet. Als erstes könnt Ihr hier auswählen ob Ihr die Adresse des MQTT-Servers als Hostname oder IP-Adresse angeben wollt.

In dem hier gezeigten Beispiel verwende ich einen Hostnamen. Ihr könnt aber auch eine IP-Adresse verwenden. Wenn Ihr das tut solltet Ihr Euren Router aber so konfigurieren, dass die IP-Adresse fest eingestellt ist.

Die weiteren Einstellungen könnt Ihr wie abgebildet übernehmen.

Wichtig ist, dass der Port auf dem konfigurierten Port Eures MQTT Servers (standardmäßig 1883) eingestellt ist.

Außerdem müsst Ihr die Logindaten zu Eurem MQTT-Server angeben, wenn dieser eine Authentifizierung erfordert. Tragt dazu Benutzername und Passwort in die entsprechenden Felder ein und setzt den Haken bei „Use Extended Credentials“.

Die restlichen Einstellungen könnt Ihr wie abgebildet konfigurieren. Der Vollständigkeit halber im folgenden trotzdem eine kleine Beschreibung.

  • „Controller Client ID“: Hier könnt Ihr den Namen/ID Eures Controllers gegenüber dem MQTT Server festlegen.
  • „Unique Client ID on Reconnect“: Ist dieser Haken gesetzt wird bei einem neuen verbindungsversuch eine zufällige ID angehängt. Dies verhindert (sehr wahrscheinlich), dass zwei Clienten mit der gleichen ID verbunden sind.
  • „Publish Retain Flag“: Ist dieser Haken aktiviert werden veröffentlichte Werte inkl. „Retain Flag“ gesendet.
  • „Controller Subscribe“: Dieses Topic wird vom Controller aboniert. Über dieses Topic können dann zum Beispiel Befehle an ESPEasy gesendet werden. Informationen dazu findet Ihr auch im Artikel ESPEasy – Befehle und Aktionen per HTTP, MQTT, UDP und direkt ausführen.
  • „Controller Publish“: Hier wird das Topic festgelegt unter dem Sensorwerte (falls aktiviert) veröffentlicht werden.
  • „Controller LWT Topic“: Über das LWT(=“Last Will/Testament“) kann der MQTT-Server über den Verbindungsstatus des Clienten berichten.
  • „LWT Connect / Disconnect Message“: Mithilfe dieser Option kann die Nachricht festgelegt werden, welche über das LWT Topic im Verbindungsfall oder bei Verbindungsabbruch gesendet wird.
  • „Send LWT to broker“: Aktiviert/Deaktiviert die LWT-Funktionalität
  • „Will Retain“: Setzt das „Retain Flag“ für die über das LWT Topic versendeten Nachrichten.
  • „Clean Session“: Aktiviert / Deaktiviert eine Anmeldung einer „sauberen Sitzung“
  • „Enabled“: Aktiviert / Deaktiviert diesen Controller

Sobald Ihr alle Einstellungen nach Euren Wünschen konfiguriert habt, könnt Ihr die Einstellungen durch einen Klick auf „Submit“ übernehmen.

Danach sollte Euer Controller in der Controller-Übersicht aufgeführt werden.

Falls Ihr mehr als einen Controller konfiguriert habt, solltet Ihr Euch die Zahl der Teile merken in welcher der MQTT-Server konfiguriert ist. In diesem Beispiel ist der MQTT-Server der erste Controller.


Versenden von Sensordaten konfigurieren

Nachdem der MQTT-Server konfiguriert ist, könnt Ihr nun auch die Daten eines angeschlossenen Sensors über MQTT an Euren zuvor konfigurierten MQTT Server senden.

Wechselt dazu zunächst in den „Devices“-Tab indem Ihr auf den „Devices“-Button klickt.

Falls nicht schon geschehen müsst Ihr dazu zunächst einen Sensor konfigurieren.

In diesem Beispiel wird der DHT11 verwendet.

Klickt dazu im „Devices“-Tab auf den „Add“-Button in der ersten leeren Zeile.

Konfiguriert dann die Option für „GPIO Data“ und „Sensor model“ Eurem Sensor entsprechend.

Nun aber zum MQTT-Teil:
Damit ESPEasy die Sensordaten an den MQTT-Server sendet müsst Ihr den Haken im Abschnitt „Send to Controller“ aktivieren. Da Ihr die Daten an den ersten Controller senden wollt ist der Haken neben der „1“ aufgeführt.

Mithilfe der „Interval“-Option könnt Ihr festlegen wie oft der Sensor ausgelesen wird. Die Daten werden dann im gleichen Intervall versendet. Im dargestellten Beispiel wird der Sensorwert also jede Sekunde ausgelesen und über MQTT versendet.

Speichert diese Einstellungen wieder durch einen Klick auf „Submit“.

Zurück im „Devices“-Tab könnt Ihr nun auch den eingetragenen Controller sehen.

Mithilfe eines externen MQTT Clienten lässt sich dann auch prüfen, ob die Daten versendet werden.

Im Bild seht Ihr einen Ausschnitt aus der Ansicht des „MQTT Explorer“. Dieses Tool ist kostenlos und ist sehr hilfreich beim Umgang mit MQTT Botschaften.


MQTT Device anlegen um ein MQTT-Topic zu abonnieren

Mithilfe eines weiteren virtuellen „Devices“ könnt Ihr auch bestimmte andere Topics abonnieren. Die darüber empfangenen Werte können dann zum Beispiel mit Regeln weiterverarbeitet werden.

Wechselt dazu wieder in den „Devices“-Tab indem Ihr auf den „Devices“-Button klickt.

Klickt dann auf den „Add“-Button in der ersten leeren Zeile.

Daraufhin werdet Ihr wieder zu einem DropDown-Menü weitergeleitet. Wählt hier den Eintrag „Generic – MQTT Import“ aus.

In dem dann dargestellten Menü könnt Ihr bis zu vier Topics abonnieren. Tragt diese dazu unter „MQTT Topic 1 – 4“ ein.

Im Abschnitt „Values“ könnt Ihr dann noch die Namen der Variablen festlegen. Diese Variablen beinhalten später die über MQTT empfangenen Werte. Dies ist zum Beispiel wichtig, wenn Ihr mithilfe von „Rules“ auf diese Werte reagieren wollt.

Wen Ihr alles wie gewünscht konfiguriert habt prüft nochmal, dass Ihr den Haken bei „Enabled“ gesetzt habt und bestätigt die Einstellungen durch einen Klick auf „Submit“.

Nun könnt Ihr mithilfe von Regeln auf die abonierten Topics reagieren. Dazu müsst Ihr zunächst in den „Rules“-Tab wechseln.

Wenn dieser nicht sichtbar ist, müsst Ihr ihn zunächst aktivieren.

Klickt dazu auf „Tools“ um zum „Tools“-Tab zu wechseln.

Klickt dort auf „Advanced“…

…und setzt einen Haken bei der Option „Rules“.

Bestätigt diese Einstellung dann durch einen Klick auf den „Submit“-Button.

Nun sollte der „Rules“-Tab sichtbar sein.

Falls nicht sollte er spätestens nach einem „Reload“ der Seite sichtbar werden.

On MQTT#Value_of_TestTopic1 do
if [MQTT#Value_of_TestTopic1]=1.00
pbani,5,150,0,0,0,0,0,
endif
endon

Im „Rules“-Tab könnt Ihr dann zum Beispiel die dargestellten Regeln eintragen. Diese bewirken, dass jedes Mal, wenn über das Topic „Value_of_TestTopic1“ eine eins empfangen wird, der Befehl „pbani,5,150,0,0,0,0,0,“ ausgeführt wird.

Dieser Befehl ist Teil des pxlBlck-Plugins. Informationen dazu findet Ihr auch hier pxlBlck – Befehle zur Konfiguration des pxlBlck


Weitere Sensoren zum Anschluss an den ESP8266 / ESP32

Eine Übersicht über weitere Artikel zum Anschluss von Sensoren und Aktoren an ESPEasy findet Ihr in der folgenden Kategorie.


Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

Fab

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.