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.
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)“.
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.
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.
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.
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.
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.
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 (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.
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 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
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.
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 .
Voraussetzung für die Integration ist das MQTT Binding. Falls nicht schon geschehen, das Binding installieren. Einstellungen
/ Bindings
/ /
MQTT Binding
(binding-mqtt).
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.
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.