ESPEasy auf der NodeMCU installieren und in openHAB integrieren

Letztes Update 2021/05/26 12:57
ESPEasy bietet ein Webinterface und diverse fertige Bibliotheken für Sensoren und andere Geräte. Mit der ESP Easy-Firmware kann das ESP-Modul in ein einfaches Multifunktionssensorgerät für Hausautomationslösungen verwandelt werden. Die Konfiguration von ESP Easy ist vollständig webbasiert. Sobald die Firmware geladen ist, benötigt man außer einem herkömmlichen Webbrowser kein anderes Tool.

Hardware vorbereiten

Für die Installation der Firmware verbindet man den ESP per USB mit dem Rechner. Der auf vielen Boards installierte USB-RS232-Wandler CH340 benötigte bei Windows 7-10 keine neuen Treiber. Windows zeigt nach dem Einstecken eine neue serielle Schnittstelle an. Die neue Schnittstelle findet man im Geräte-Manager in der Kategorie „Anschlüsse (COM & LPT)“.

Software downloaden

Auf der Github-Seite von letscontrolit kann das hier verwendete ESPPasy 20210503 für den 8266 runtergeladen werden.

Den gesamten ZIP-Ordner entpacken. Im ZIP-Archiv sind mehrere Binaries und zwei Flashtools. Von den Binaries sind Versionen für 1 MB und 4 MB Speicher des ESP und mehrere Entwicklungsstufen:
normal - die getesteten und freigegebenen Versionen
test - die getesteten Versionen
dev - die Versionen, die sich in Entwicklung befinden

Das Programm ESP.Easy.Flasher starten. Nach dem ersten Start sollten die beiden angezeigten Fonts installiert werden, um den Text vernünftig lesen zu können. Danach ESP.Easy.Flasher neu starten und den COM-Port einstellen. Falls der ESP bereits programmiert wurde, dann sollte der Speicher komplett überschrieben werden. Je nach verfügbarem RAM am ESP das Löschimage (blank_xxMB.bin) in die Zeile Firmware (.bin) eintragen und auf den Button Flash ESP Easy FW klicken. Dauert etwa 5 Minuten. Danach das passende Image auswählen und den Baustein flashen. Da es sich hier um einen ESP mit 4MB handelt, wird das Image ESP_Easy_mega_20210503_normal_ESP8266_4M1M.bin verwendet. Das Ende des Vorganges wird im Statusfenster angezeigt.

Nun kann der ESP vom Rechner getrennt und an ein USB-Netzteil angeschlossen werden.

Konfiguration

Wenn die Installation geklappt hat, spannt der ESP nun einen WLAN Access-Point mit dem Namen ESP_Easy_0 und der WEB-Adresse http://192.168.4.1 auf. Das Passwort lautet configesp.

Mit einem Tablet oder Handy mit dem WLAN des ESP verbinden und im Browser im Reiter Config die benötigten Netzwerkdaten für das eigene Netzwerk eingeben. Im einzelnen SSID und WPA Key, IP-Adresse und Gateway. Die Änderungen mit Submit abschließen.

Die weiteren Eingaben werden am PC vorgenommen. Der ESP bekommt einen eigenen Namen und eine fortlaufende Nummer. Wenn vorhanden, ein Ausfalls-WLAN eintragen. Alle weiteren Einträge nach Bedarf vornehmen.

Die Änderungen wieder mit Submit abschließen.

Zeiteinstellungen

Um auf einen NTP-Server zugreifen zu können, im Ordner Tools den Button Advanced anklicken, um auf die Advanced Settings zugreifen zu können. Hier ist in der Sektion NTP Settings ein Haken bei Use NTP zu setzen und ein NTP Server eingetragen werden. Hier wurde der Timserver1 der Uni Wien eingetragen (ts1.univie.ac.at).

In den DST Settings sind die Sommerzeitangaben eingestellt. Um sie zu aktiviern, ist ein Haken in DST zu setzen.

In den Location Settings wird der Zeitversatz in Minuten für MST (Mitteleuropa) zu UTC eingestellt.

Die Änderungen wieder mit Submit abschließen.

Controller Settings

In den Controller Settings muss das Protokoll eingetragen werden. Für diesen Fall wird das Home Assistant (openHAB) MQTT Protokoll eingestellt. Die Controller IP und der Controller Port sind die Daten des MQTT Servers.

,

Alle weiteren Angaben nach Bedarf einstellen. Den Punkt Enabled einschalten und mit Submit die Eingaben abschließen.

Sensor am ESP8266 anschließen

Am ESP8266 wird ein DHT22 Sensor angeschlossen. Der Sensor kann Temperatur und Luftfeuchte messen. Der DHT22 besitzt je nach Ausführung 3 oder 4 Anschlüsse, wobei bei der 4-poligen Variante nur drei belegt sind. Der Pluspol wird an 5V angeschlossen, Minus an GND. Am OUT Anschluss steht das Signal in digitaler Form an. Dieser wird hier am GPIO13 - D7 des ESP8266 angeschlossen.

(CC) BY-SA

Sensor in ESPEasy eintragen

Damit der ESP weiß, das er die Sensordaten verarbeiten soll, muss ihm das Mitgeteilt werden. Dazu den Ordner Devices öffnen und mit Add ein Konfigurationsfenster öffnen.

Hier wird die Gruppe der Sensoren ausgewählt, in welcher der DHT22 vorhanden ist. Mit Submit die Auswahl wieder bestätigen.

Des weiteren wird ein Name vergeben, der Anschluss eingetragen und das genaue Sensormodell ausgewählt. Der Intervall, in dem die Sensordaten verschickt werden, kann im notwendigen Rahmen eingetragen werden. Zum Schluss werden die Channel-Bezeichnungen eingegeben, hier Temperature und Humidity. Im Feld Formula können Korrekturwerte oder Formeln zur Umrechnung in °F oder °K eingetragen werden. Siehe Easy Formula.

MQTT

MQTT (Message Queuing Telemetry Transport) ist ein 1999 entwickeltes, offenes Netzwerkprotokoll, für Machine-to-Machine Kommunikation zur Übertragung von Sensordaten mit eingeschränkter Bandbreite. 2014 wurde MQTT ein offizieller OASIS (Organisation for the Advancement of Structured Informations Standards) Standard. Die Verarbeitung der Informationen arbeitet nach dem Client - Server (Broker), bzw. Publish / Subscribe Protokoll.

(CC) BY-SA

Der Temperatursensor sendet seine Temperatur an den Broker. Der Lüfter hat das Topic Temperaatur abboniert und bekommt vom Broker die Temperatur zugesendet und kann darauf reagieren. Die Anzeige, bzw. ein PC kann Publisher und Subscriber sein. D.h. es können Werte angezeigt und Aktionen ausgelöst werden.

Mosquitto installieren

Mosquitto ist ein MQTT Broker und wird als Zustands-Datenbank benutzt. Die gesamte Datenlage seiner Kommunikationspartner wird von Mosquitto gehalten.

Der MQTT Broker Mosquitto wird auf dem Raspberry installiert, auf dem openHAB läuft. Dazu sollten zuerst die aktuellen Updates installiert werden.

sudo apt full-upgrade

Danach wird Mosquitto installiert

apt-get install -y mosquitto mosquitto-clients

und anschließend dem Startup Script hinzugefügt.

systemctl enable mosquitto.service

Den Broker testen

Für einen ersten Test wird der Broker als Deamon im Hintergrund ausheführt.

mosquitto -d

Für den nachfolgenden Test werden zwei Console-Fenster geöffnet. Im ersten Fenster schaltet man sich mit dem Mosquitto Client auf einen Topic (Subscribing). In diesem Beispiel verwenden wir den Topic test.

mosquitto_sub -d -t test

Als Ausgabe erscheint

Client mosqsub|22931-openHAB0 sending CONNECT
Client mosqsub|22931-openHAB0 received CONNACK (0)
Client mosqsub|22931-openHAB0 sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0)
Client mosqsub|22931-openHAB0 received SUBACK
Subscribed (mid: 1): 0

Im zweiten Fenster wird an der Konsole folgendes eingegeben:

mosquitto_pub -d -t test -m 'MQTT Test'

Im ersten Fenster erscheint der Text

Client mosqsub|22990-openHAB0 received PUBLISH (d0, q0, r0, m0, 'test', ... (9 bytes))
MQTT Test

In der zweiten Zeile sieht man, dass der String MQTT Test übertragen wurde. Damit ist der MQTT Broker Mosquitto erfolgreich installiert und bereit für den Einsatz.

Channelinfo lesen

In der Konsole am Raspberry als Administrator einloggen:

openhabian@openHAB0:~ $ sudo -i

Mit dem Befehl

root@openHAB0:~# mosquitto_sub -v -i Test -t '#'

werden die Channel Informationen und deren momentanen Werte angezeigt:

node77/status/LWT Connected
node77/Temp_Hum/Temperature 27.6
node77/Temp_Hum/Humidity 53.7

Mit dieser Anzeige ist sichergestellt, dass der an der NodeMCU angeschlossene DHT22 richtig funktioniert wenn er die Daten an den Broker weiterleitet.

Die beiden letzten Zeilen beachten, diese müssen als MQTT State Topic in der Channel Konfiguration eingetragen werden .

node77/Temp_Hum/Temperature

node77/Temp_Hum/Humidity

Einbinden in openHAB

Voraussetzung für die Integration ist das MQTT Binding. Falls nicht schon geschehen, das Binding installieren. Einstellungen / Bindings / / MQTT Binding (binding-mqtt).

MQTT Broker für den ESP erstellen

Für jeden angeschlossenen ESP muss ein eigener Broker mit einem eindeutigen Label eingerichtet werden (MQTT Broker 1). Der Broker wird in Things / / MQTT Binding / MQTT Broker eingerichtet.

Der Broker bekommt sein Label. Die Location zur besseren Übersicht eintragen. Im Abschnitt Configuration einen Haken im Feld Show advanced setzen. Im Feld Broker Hostname/IP die IP-Adresse des Raspberry eintragen, auf dem der MQTT Broker Mosquitto installiert ist. Der Broker Port 1883 sollte bereits eingetragen sein. Weiter unten kontrollieren, ob Username und Password des MQTT-Servers eingetragen sind.

Save (Ctrl-S) nicht vergessen.

Nun ein Generic MQTT Thing erstellen. Things / / MQTT Binding / Generic MQTT Thing (mqtt:topic). Als Label eine Bezeichnung eingeben, die eine Zuordnung zum jeweiligen ESP einfacher macht (Generic MQTT Thing node77). In der Zeile Bridge den eben erstellten Broker MQTT Broker 1 auswählen und mit einem Klick auf das Generic MQTT Thing erstellen.

In Things das Generic MQTT Thing aufrufen und kontrollieren, ob in der Zeile Bridge der richtige MQTT Broker eingetragen ist.

Im nächsten Schritt den Folder Channels auswählen. Add Channel auswählen. Einen eindeutigen Channel Identifier (node77_hum) und ein Label (Luftfeuchte) eintragen. Den Punkt Number Value markieren. In Show advanced einen Haken setzen.

In der Zeile MQTT State Topic die Kanalbezeichnung für die Luftfeuchte aus dem Konsolfenster des Mosquitto Servers eintragen.

node77/Temp_Hum/Humidity

Weiter nach unten scrollen und in der Zeile Incoming Value Transformations JSONPATH:$.moisture eintragen.

Mit einem Klick auf den blauen Create Button abschließen.

Den selben Vorgang für die Temperatur starten. Add Channel auswählen. Einen eindeutigen Channel Identifier (node77_temp) und ein Label (Temperatur) eintragen. Den Punkt Number Value markieren. In Show advanced einen Haken setzen.

In der Zeile MQTT State Topic die Kanalbezeichnung für die Temperatur aus dem Konsolfenster des Mosquitto Servers eintragen.

node77/Temp_Hum/Temperature

Weiter nach unten scrollen und in der Zeile Incoming Value Transformations JSONPATH:$.temperature eintragen.

Mit einem Klick auf den blauen Create Button abschließen.

Semantic Model erstellen

Aus dem Menü Model auswählen und eine Location auswählen, in der das Equipment eingetragen werden soll. Create Equipment from Thing auswählen. Als Thing Generic MQTT Thing node77 markieren. Wenn gewünscht ein Label zur leichteren Identifizierung eintragen.

Die Sensoren mit einem Klick auf Select All markieren. Label eintragen und Category eintragen, um ein entsprechendes Symbol einzufügen.

Quellen:

https://www.letscontrolit.com/
https://www.heise.de/ct/artikel/ESPEasy-installieren-4076214.html
https://www.instructables.com/RPIEasy-RPI-Based-Multisensor-Device/
https://www.smarthomeng.de/einbindung-von-sensoren-ueber-wlan-mit-esp8266-unter-verwendung-von-espeasy