Projekt: Temperatur-Messsystem - WLAN-Modul


Status | aktiv |
Letzte Bearbeitung | 15.08.2020 |
Aktueller Softwarestand | v1.00 vom 08.08.2020 |

Schaltplan für WLAN-Modul | |
Stückliste mit Empfehlungen zur Bauteilbestellung | |
Software-Paket ESPEasy (Mega) • unterhalb der Änderungsliste auf Assets klicken • die Datei ESPEasy_ESP82xx_mega-xxxxxxxx.zip laden • in der geladenen Datei das Verzeichnis bin öffnen • die Datei ESP_Easy_mega_xxxxxxxx_normal_ESP8266_4M1M.bin entpacken |
https://github.com/letscontrolit/ESPEasy/releases |
Node-RED-Flows für Statusanzeige, Wetterinformationen und Taster/LED v1.00 vom 08.08.2020 | wlan-modul-node-red-v100.zip |
Platinenlayout von Dietmar Heyer im Sprint-Layout-Format | wlanm-layout1.zip |
Homepage von Termite (serielles Terminalprogramm) | https://www.compuphase.com/software_termite.htm |
Homepage von Angry IP Scanner (Netzwerk durchsuchen) | https://angryip.org/ |
Homepage von MQTT Explorer (MQTT Nachrichten beobachten) | https://mqtt-explorer.com/ |

Beschreibung | Allgemeine Informationen über das WLAN-Modul |
Schaltung | Beschreibung der Schaltung des WLAN-Moduls |
Hardware | Bilder und Hinweise zum Aufbau des WLAN-Moduls |
Software | Beschreibung der Software des WLAN-Moduls |
Inbetriebnahme | Inbetriebnahme des WLAN-Moduls |
Konfiguration | Konfiguration des WLAN-Moduls |
Bedienung | Bedienung des WLAN-Moduls und spezielle Funktionen |
Sonstiges | Weitere Informationen |
Das WLAN-Modul ist universell einsetzbar: Es kann als Sensormodul, als Anzeigemodul oder auch für beide Funktionen gleichzeitig verwendet werden. Dabei erfolgt die gesamte Datenkommunikation kabellos über WLAN unter Verwendung des MQTT-Protokolls. Alle vom WLAN-Modul erfassten Sensordaten lassen sich zum Web-Modul übertragen und dort über Node-RED anzeigen und auswerten. Umgekehrt lassen sich alle auf dem Web-Modul zur Verfügung stehenden Daten auf das Display des WLAN-Moduls senden. Auf dem WLAN-Modul ist ein Web-Server installiert, über den die gesamte Konfiguration komfortabel erledigt werden kann. Das WLAN-Modul besteht im Kern aus einem D1 mini Board, auf dem sich ein Mikrocontroller ESP8266 mit WLAN-Antenne, 4MB Flash-Speicher und ein USB-Chip CH340 mit Micro-USB-Anschluss befindet. Über den USB-Anschluss lässt sich die Software für den ESP8266 ohne weitere Zusatzgeräte installieren, außerdem kann die Stromversorgung hier angeschlossen werden. Hierfür genügt ein USB-Ladegerät, welches einen Strom von mindestens 500mA liefert.
Bei der Software für das WLAN-Modul setze ich auf das ausgereifte Open-Source-Projekt ESP Easy, welches von der Gruppe Let's Control It entwickelt wird. Diese Software unterstützt eine große Anzahl Sensoren, die nicht nur Temperatur, Luftfeuchtigkeit und Luftdruck erfassen, sondern beispielsweise auch Helligkeit, CO₂-Konzentration oder Regenmengen. Dabei kann für die meisten Messwerte eine Genauigkeit von bis zu 2 Stellen nach dem Komma festgelegt werden. Ebenfalls möglich sind Korrekturwerte für jeden Messwert und bei Luftdrucksensoren kann durch Eingabe der Höhe ein normierter Luftdruckwert erzeugt werden. Die Software wird übrigens ständig weiterentwickelt und kann bequem über den Web-Server aktualisiert werden (OTA-Update). Ebenfalls über den Web-Server ist die Sicherung und Wiederherstellung der Konfiguration möglich.Das WLAN-Modul hat allerdings auch Nachteile: Es lässt sich nur eingeschränkt mit den älteren Komponenten des Temperatur-Messsystems kombinieren. Alle von einem WLAN-Modul erfassten Sensorwerte können auf dem Web-Modul nur über Node-RED verarbeitet werden. Auf der klassischen Web-Seite und auf älteren Anzeigemodulen sind diese Werte jedoch nicht verfügbar. Umgekehrt ist es aber möglich, Daten von einem Sensormodul 1/2/3 auf dem Display eines WLAN-Moduls anzuzeigen. Einfach gesagt: Alle Sensordaten, die über MQTT übermittelt werden, können von einem WLAN-Modul angezeigt werden und alle Sensordaten von einem WLAN-Modul stehen allen MQTT-Teilnehmern zur Verfügung und können z.B. auch von Matrixuhren empfangen werden.
IC1 Von diesem Controllerboard gibt es mehrere Varianten, die sich optisch unterscheiden, aber funktionell identisch sind. So habe ich eine Variante, auf der eine kleine abgeschirmte Zusatzplatine aufgelötet ist (wurde als Vorlage für den Schaltplan verwendet). Andere Varianten bestehen aus mehreren ICs, die auf der Platine verteilt sind. Auch tauchen oft andere Namen auf, neben WEMOS D1 mini gibt es z.B. noch LOLIN D1 mini. Aber solange die Bauform und der Namensteil D1 mini stimmt, sollte es keine Probleme geben. Die WLAN-Performance des ESP8266 ist übrigens durchschnittlich, der Mikrocontroller verwendet ausschließlich das 2,4GHz-Band und beherrscht den WLAN-Standard 802.11 b/g/n mit einer Geschwindigkeit bis zu 72 Mbit/s. Soll das geplante Modul an einem Ort betrieben werden, wo der WLAN-Empfang grenzwertig ist, dann kann man die etwas teurere Variante mit dem Namen D1 mini Pro verwenden. Diese hat bei gleichem Formfaktor einen Anschluss für eine externe WLAN-Antenne und benutzt den CP2104 anstatt des CH340 als USB-Seriell-Konverter. Diese Variante ist in der Stückliste als Set mit WLAN-Antenne enthalten. Wichtig: Auf der Platine muss ein SMD-0Ω-Widerstand entfernt und in einer anderen Position wieder eingelötet werden, damit eine Verbindung zur externen Antenne hergestellt wird.
Noch einige Informationen zur Stromversorgung. Die einfachste Variante ist ein Netzteil mit festem Kabel und einem Micro-USB-Anschluss am Ende. Das vermeidet unnötige Kontaktstellen und wird direkt mit der USB-Buchse des D1 mini verbunden. Dabei werden neben dem Mikrocontroller-Board auch alle anderen Komponenten des WLAN-Moduls mit Strom versorgt. Alternativ ist es auch möglich, eine vorhandene 5V-Stromversorgung an die Anschlüsse 5V und GND anzulegen (Polarität beachten). Auf dem D1 mini befindet sich ein Spannungsregler, der aus den 5V die für den Mikrocontroller notwendige Spannung von 3,3V erzeugt. Diese Spannung ist am Anschluss 3V3 herausgeführt und kann weitere Schaltungsteile versorgen. Hier dürfen allerdings niemals Spannungen angelegt werden.Der Strombedarf des ESP8266 schwankt sehr stark und ist abhängig vom WLAN-Betrieb. Im Datenblatt konnte ich leider keine brauchbaren Werte finden, aber andere Bastler ermittelten einen Strom von ungefähr 70mA ohne WLAN-Kommunikation und Stromspitzen von bis zu 400mA, wenn über WLAN gesendet wird. Diese wechselnden Ströme führen leider zu leichten Spannungsschwankungen auf der 5V-Leitung, die zwar die Funktion nicht beeinträchtigen, aber zu leichten Helligkeitsschwankungen bei Displays führen. Und es gibt noch einen kleinen Nachteil: Zwar beherrscht der ESP8266 mehrere Schlafmodi mit sehr geringem Stromverbrauch, aber zum Übermitteln von Sensorwerten muss das System regelmäßig aufwachen, eine Verbindung zum WLAN herstellen und die Kommunikation abwickeln. Dafür werden gut 5 Sekunden und eben auch hohe Ströme benötigt, das schließt leider einen längeren Betrieb mit Batterien aus.
IC2 Dieses besteht aus einem klassischen 4-zeiligen Textdisplay mit jeweils 20 Zeichen, welches mit einem Controller HD44780 oder KS0066 arbeitet. Um die relativ wenigen IO-Anschlüsse des ESP8266 bestmöglich zu nutzen, ist noch eine Konverterplatine (I²C-LCD-Backpack) notwendig. Diese wird über eine 16-polige Stiftleiste wie ein Rucksack direkt hinter das Display gelötet, was die Bezeichnung Backpack erklärt. Auf dieser Platine befindet sich ein PCF8574, welcher über 2 Leitungen an einen I²C-Bus angeschlossen wird und 8 Port-Anschlüsse zur Verfügung stellt. Die Backpack-Platine verwendet davon 7 Anschlüsse für die Display-Ansteuerung und den übrigen Anschluss zum Schalten der LCD-Hintergrundbeleuchtung über einen Treibertransistor. Leider gibt es keine Norm für die Anschlussbelegung der Displays, aber die meisten aktuellen Displays verwenden die in der folgenden Tabelle aufgelistete Belegung:
LCD-Anschluss | LCD-Signal | Besonderheiten beim I²C-LCD-Backpack |
---|---|---|
1 | VSS (GND) | mit Anschluss GND der 4-poligen Stiftleiste verbunden |
2 | VDD (+5V) | mit Anschluss VCC der 4-poligen Stiftleiste verbunden |
3 | VO (Kontrast) | mit dem Trimmpoti zur Kontrasteinstellung verbunden |
4 | RS | mit P0 des PCF8574 verbunden |
5 | R/W | mit P1 des PCF8574 verbunden |
6 | E | mit P2 des PCF8574 verbunden |
7 | DB0 | nicht angeschlossen |
8 | DB1 | nicht angeschlossen |
9 | DB2 | nicht angeschlossen |
10 | DB3 | nicht angeschlossen |
11 | DB4 | mit P4 des PCF8574 verbunden |
12 | DB5 | mit P5 des PCF8574 verbunden |
13 | DB6 | mit P6 des PCF8574 verbunden |
14 | DB7 | mit P7 des PCF8574 verbunden |
15 | Anode (Beleuchtung) | über einen Jumper mit +5V verbunden |
16 | Kathode (Beleuchtung) | wird von P3 des PCF8574 über einen Transistor geschaltet |
In der Stückliste sind 2 Sets für IC2 aufgelistet, die aus dem Display und der Backpack-Platine bestehen. Damit ist man auf der sicheren Seite und kann davon ausgehen, dass alles zusammenpasst. Alternativ kann man auch ein bereits vorhandenes Display mit einem separat erhältlichen I²C-LCD-Backpack ausrüsten. Hier muss man neben der Anschlussbelegung auch die Hintergrundbeleuchtung kontrollieren. Es gibt Displays, bei denen die Anschlüsse 15 und 16 (Anode und Kathode) vertauscht sind. Oft lassen sich die Anschlüsse über Lötbrücken tauschen, genaue Informationen kann hier nur das Datenblatt des Displays liefern. Die Hintergrundbeleuchtung besteht üblicherweise aus einer Anzahl LEDs und einem Vorwiderstand. Meist befindet sich dieser Vorwiderstand direkt auf dem Display, aber das ist nicht immer der Fall. Wenn sich das nicht sicher klären lässt, dann sollte man vor der Inbetriebnahme den Jumper auf der Backpack-Platine abziehen und somit den Stromkreis für die Beleuchtung unterbrechen. Anstatt des Jumpers schließt man dann einen Widerstand an die beiden Stifte an. Den richtigen Wert muss man experimentell ermitteln, ein guter Startwert ist 22Ω. Auf diese Weise lässt sich auch ein zu helles Display dimmen.
Ganz wichtig: Auf der Backpack-Platine befinden sich 2 Pull-up-Widerstände mit einem Wert von 4,7kΩ für den I²C-Bus. Diese müssen entfernt werden, da sie an +5V geführt sind und der Bus des ESP8266 nur maximal +3,3V erlaubt. Die Widerstände R1 und R2 übernehmen dann die Pull-up-Funktion. Ein Bild der Backpack-Platine mit den ausgelöteten Widerständen ist im Abschnitt Hardware zu sehen. Die I²C-Adresse der Display-Einheit ist übrigens 0x27 und lässt sich über die mit A0-A2 bezeichneten 3 Brücken im Bereich zwischen 0x20-0x27 einstellen. Das erlaubt grundsätzlich den Anschluss mehrerer Displays.Übrigens: Es sind noch andere I²C-LCD-Backpack-Platinen erhältlich, z.B. von Adafruit. Diese verwenden ein anderes IC für die Umsetzung von I²C auf 8 Ports und die Ports sind auch anders belegt. Ich weiß nicht, ob diese Variante von ESP Easy unterstützt wird und würde davon abraten. Nochmal übrigens: Falls die hier verwendete Backpack-Platine nicht verfügbar sein sollte oder wenn mehr Bastelspaß gewünscht wird, dann kann man diese Platine auch selbst bauen. Die nachfolgende Schaltung entspricht ungefähr dem Original und wurde für das WLAN-Modul etwas vereinfacht:

IC101 ist ein PCF8574 in der DIP-Variante und dieser kommuniziert über den I²C-Bus (SDA/SCL) mit dem Mikrocontroller. Pull-up-Widerstände fehlen hier, diese befinden sich als R1 und R2 in der Hauptschaltung. Über das Trimmpotentiometer R102 wird der Displaykontrast eingestellt, R101 sorgt für einen größeren Einstellbereich. Bis auf P3 führen alle Port-Anschlüsse des PCF8574 direkt zum Display. P3 steuert über R103 den Transistor T101 an und schaltet damit die Hintergrundbeleuchtung. Der Widerstand R4 kann normalerweise entfallen und durch eine direkte Verbindung ersetzt werden. Falls sich kein Vorwiderstand auf dem Display befindet oder das Display zu hell ist, dann kann hier ein passender Widerstand eingesetzt werden. Den richtigen Wert muss man experimentell ermitteln, auch hier ist 22Ω ein guter Startwert.
IC3 Der Sensor Si7021 erfasst relativ genau Temperatur (±0,4°C) und Luftfeuchtigkeit (±3%RH) und wird über I²C mit dem Mikrocontroller verbunden. Die hier verwendete Platine von SparkFun hat bereits einen Stützkondensator und die beiden Pull-up-Widerstände integriert, so dass R1 und R2 entfallen können. Bei Bedarf lassen sich durch Entfernen einer Zinnbrücke die beiden Pull-up-Widerstände auf der Platine deaktivieren. Das ist empfehlenswert, wenn ein weiterer Sensor mit integrierten Pull-up-Widerständen an den I²C-Bus angeschlossen werden soll. Es kann übrigens auch die Si7021-Platine von Adafruit verwendet werden. Hier muss man die abweichende Anschlussbelegung beachten und die Spannung 3,3V an den Anschluss VIN anlegen. Die I²C-Adresse des Si7021 ist fest auf 0x40 eingestellt.IC4 Der Sensor BME280 wird an den I²C-Bus angeschlossen und ermöglicht die recht genaue Erfassung von Temperatur (±1°C), Luftfeuchtigkeit (±3%RH) und Luftdruck (±1hPa). Die hier verwendete Platine von Adafruit enthält bereits die Pull-up-Widerstände für den Bus, damit können R1 und R2 entfallen. Auch hier gibt es verschiedene Varianten von anderen Herstellern, die ebenfalls für dieses Projekt verwendet werden können. Die I²C-Adresse des BME280 kann zwischen 0x76 und 0x77 umgeschaltet werden, allerdings ist der notwendige Eingang SDO nur bei der Adafruit-Platine herausgeführt. Wird dieser Eingang offen gelassen (so wie in der Schaltung oben), dann ist die Adresse 0x77 ausgewählt, mit SDO an Masse gilt 0x76. Die alternativen Platinen haben meist nur 4 Anschlüsse und hier ist die I²2-Adresse fest eingestellt (meist auf 0x76).
IC5 Der DHT22 bzw. AM2302 ist ein relativ preisgünstiger Sensor zur Messung von Temperatur (±0,5°C) und Luftfeuchtigkeit (±2%RH). Die Kommunikation zwischen dem Mikrocontroller und dem Sensor erfolgt über eine Leitung mit einem speziellen Protokoll. Der Sensor benötigt einen Pull-up-Widerstand R3 und den Stützkondensator C1. Es sind auch DHT22 auf einer kleinen Platine erhältlich, die meist nur 3 Anschlüsse hat. Auch die kann man für dieses Projekt verwenden und das hat sogar den Vorteil, dass man R3 und C1 weglassen kann, da sich diese Bauteile bereits auf der Platine befinden. Die älteren Sensortypen DHT11 und DHT12 können übrigens auch verwendet werden, diese sind allerdings nicht so genau.IC6 Der DS18B20 ist ein reiner Temperatursensor mit einer Genauigkeit von ±0,5°C. Die Kommunikation zwischen dem Mikrocontroller und dem Sensor erfolgt über eine Leitung unter Verwendung des 1-Wire-Bus-Protokolls. Als einziges zusätzliches Bauteil ist hier der Pull-up-Widerstand R4 erforderlich. Der 1-Wire-Bus ermöglicht übrigens den Anschluss mehrerer Sensoren an einer Leitung und erlaubt auch relativ lange Leitungen zu den Sensoren. Im Vergleich zum alten Sensormodul 1/2/3 müssen hier allerdings 3 Leitungen verwendet werden.
IC7 Auch der ältere Temperatursensor DS18S20 mit einer Genauigkeit von ±0,5°C ist für dieses Projekt geeignet. Er kann gemeinsam mit IC6 an einem 1-Wire-Bus angeschlossen werden.IC8 Die Variante DS1822 mit einer Genauigkeit von ±2°C ist ebenfalls für dieses Projekt geeignet und kann den gleichen 1-Wire-Bus wie IC6 benutzen.
D1 Die LED hat keine feste Funktion und kann z.B. genutzt werden, um abnormale Zustände oder auch Über- und Unterschreitungen von Sensorwerten zu signalisieren. Dafür lässt sich die Rules-Funktion von ESP Easy verwenden. Es ist aber auch möglich, die LED über Node-RED zu steuern. Damit lassen sich Ereignisse signalisieren, die von anderen Geräten oder Sensoren im Heimnetz ausgelöst werden. Der Vorwiderstand R5 ist übrigens für die in der Stückliste verwendete LED angepasst.S1 Auch der Taster hat keine feste Funktion. In Verbindung mit dem Display gibt es die Möglichkeit, die Hintergrundbeleuchtung mit einem Tastendruck ein- und nach einer einstellbaren Zeit wieder auszuschalten. Es ist aber auch möglich, Schaltvorgänge über die Rules-Funktion von ESP Easy auszuwerten oder an Node-RED zu senden und dort Ereignisse auszulösen. Die Steuerung der LCD-Beleuchtung lässt sich auch mit weiteren Schaltfunktionen kombinieren. Auch für den Taster ist ein Pull-up-Widerstand notwendig, hier genügt allerdings der interne Widerstand des Mikrocontrollers, der später von der Software aktiviert wird.
R1/R2 Jedes I²C-Bus-Gerät kann den Status auf den Leitungen SCL und SDA lesen und es führt außerdem jeweils ein Open-Drain-Ausgang an die Leitungen SCL und SDA. Damit besteht die Möglichkeit, diese Leitungen auf einen Low-Pegel zu ziehen, jedoch kann damit niemals ein High-Pegel angelegt werden. Aus diesem Grund sind die beiden Widerstände R1 und R2 ein wichtiger Bestandteil für den I²C-Bus: sie sorgen für einen High-Pegel. Aber sie sollten auch nur einmal vorhanden sein. Wenn man Komponenten wie IC3 oder IC4 an den Bus anschließt, dann muss man beachten, dass diese kleinen Platinen bereits Pull-Up-Widerstände integriert haben. Setzt man also solche Sensorplatinen ein, dann müssen R1 und R2 weggelassen werden. Beim Einsatz mehrerer solcher Komponenten sollten überzählige Pull-Up-Widerstände deaktiviert werden.
Ich habe insgesamt 3 WLAN-Module aufgebaut: 2 Module wurden mit einem Display ausgestattet und dienen hauptsächlich als Ersatz für die alten Anzeigemodule 1 die ich bisher in den Gästezimmern installiert hatte. Hier wurde zusätzlich ein DHT22 eingebaut, um Temperatur und Luftfeuchtigkeit des Raumes zu erfassen. Ein weiteres Modul enthält nur Sensoren. Es soll das vorhandene Sensormodul 3 nicht ersetzen, aber zusätzliche und genauere Werte beim Luftdruck und der Luftfeuchtigkeit im Außenbereich liefern. In diesem Abschnitt beschreibe ich beispielhaft den Aufbau eines der Module mit Display.

Dieses Bild zeigt die Platine von unten. Die wenigen Verbindungen wurden mit blankem Kupferdraht bzw. mit Kupferlackdraht hergestellt. Im Bereich der WLAN-Antenne habe ich einen Ausschnitt in die
Platine gesägt. So wird der WLAN-Empfang nicht durch die Lötpunkte auf der Platine gestört. Ein weiterer Ausschnitt weiter unten ist für das Trimmpoti der LCD-Backpack-Platine vorgesehen und
ermöglicht die Einstellung des Displaykontrastes im zusammengebauten Zustand.

Übrigens, rechts neben den beiden Pull-up-Widerständen befindet sich noch ein Widerstand und eine LED. Letztere leuchtet sehr hell und das ist sogar durch das geschlossene Gehäuse zu sehen. Ich habe
später auch diesen Widerstand ausgelötet und somit die LED deaktiviert.

Sensoren für Temperatur und Luftfeuchtigkeit sollten sich möglichst außerhalb des Gehäuses befinden, damit die Werte nicht durch die etwas höhere Temperatur im Gehäuse verfälscht werden. Dieses Bild
zeigt die untere Gehäuseschale mit einem DHT22 an der rechten Außenseite. Eine 4-polige Buchsenleiste und ein kurzes Stück Flachbandkabel stellt die Verbindung zur Hauptplatine her.

Auf diesem Bild wurde die Zusatzplatine mit dem Taster und der LED auf die Bolzen geschraubt und über ein 4-poliges Kabel mit der Hauptplatine verbunden.
Dieses Bild zeigt die komplette Rückseite des Displays mit der Backpack-Platine. Das Kabel zur Hauptplatine wurde aus Platzgründen direkt an die Backpack-Platine angelötet. Am Ende des Kabels befindet
sich eine 4-polige Buchsenleiste, die hier nicht sichtbar ist.
Um die Hauptplatine und das Display zu einer Einheit zusammenzufügen, wird zuerst das Displaykabel an die Hauptplatine gesteckt und anschließend das Display aufgeschraubt. Dieses Bild zeigt die
montierte Einheit von der Seite. Das Flachbandkabel vom Display sieht etwas unordentlich aus, weil es seitlich am Kontrastpoti vorbei geführt werden muss.

Hier befindet sich die komplette Elektronik in der unteren Gehäusehälfte. Weitere Befestigungen sind nicht notwendig, nach dem Aufsetzen der oberen Gehäusehälfte sitzt normalerweise alles fest.

So sieht das fertige WLAN-Modul von oben aus. Sollte nach dem Zusammenbau aller Teile das Innenleben nicht fest sitzen, dann kann man entweder zusätzliche Unterlegscheiben bei der Montage des Displays
verwenden oder dünnen Schaumstoff in die Gehäuseoberschale um den Displayausschnitt kleben.
Es gibt auch ein Platinenlayout für das WLAN-Modul, welches vom freundlichen Bastlerkollegen Dietmar Heyer im Sprint-Layout-Format erstellt wurde. In diesem Paket sind auch einige Bilder enthalten, die den Aufbau des Moduls zeigen.
Für das WLAN-Modul habe ich keine eigene Software erstellt und dafür gibt es mehrere Gründe. Ein Grund ist, dass sich der Mikrocontroller ESP8266 doch sehr von den vertrauten AVR-Controllern unterscheidet und die gewohnte Programmierumgebung (Atmel Studio) kann man leider auch nicht mehr verwenden. Außerdem sind Netzwerke und die dafür nötige Software recht komplex und so habe ich mich für eine „fremde“ Software entschieden. Es gibt hier übrigens mehrere Projekte, die ein ähnliches Ziel verfolgen. Getestet habe ich Tasmota, ESP Easy, ESPurna und ESPHome und letztlich habe ich mich für ESP Easy entschieden. Dieses arbeitet perfekt mit Node-RED zusammen und die Web-Oberfläche zur Konfiguration gefiel mir am besten. ESP Easy ist ein Gemeinschaftsprojekt einer Gruppe von Programmierern, die sich Let's Control It nennt. Neben der stabilen Software-Version R120 arbeitet die Gruppe aktuell an der Version 2.0 unter dem Namen „Mega“. Diese Mega-Version verwende ich für das WLAN-Modul, auch wenn die Entwicklung noch nicht abgeschlossen ist. Bisher arbeiten meine WLAN-Module sehr zuverlässig mit dieser Software und im Abstand von einigen Wochen erscheint eine neue Programmversion.
Zum Aufbau und der Funktion der Software kann und möchte ich nicht viel sagen. Der Quelltext steht zum Download zur Verfügung und kann unter https://github.com/letscontrolit/ESPEasy/releases geladen werden. Unterhalb der Release-Informationen befindet sich der Link Assets und wenn man diesen öffnet, erscheint neben den aktuellen Programmversionen auch der Quelltext von ESP Easy. Die nachfolgende Tabelle enthält einige Links mit weiteren Informationen:
https://www.letscontrolit.com/wiki/index.php?title=ESP_Hardware | Listet alle ESP8266-Module, auf denen ESP Easy verwendet werden kann. |
https://www.letscontrolit.com/wiki/index.php?title=Devices | Zeigt eine ausführliche Übersicht mit allen Geräten, die von ESP Easy unterstützt werden. Dies umfasst eine große Anzahl Sensoren, verschiedene Anzeigen, Taster, Relais und Servos. |
https://www.letscontrolit.com/wiki/index.php?title=ESPEasy_Command_Reference | Diese Kommando-Übersicht kann sehr hilfreich sein. Bei der Inbetriebnahme werden einige Kommandos zur Verbindung mit dem WLAN verwendet. |
https://www.letscontrolit.com/wiki/index.php?title=ESPEasy_System_Variables | Diese Systemvariablen können auf einem Display angezeigt oder auch zur Steuerung verwendet werden (Rules-Funktion). |
Für die Inbetriebnahme eines WLAN-Moduls ist es notwendig, das D1 mini Board über den USB-Anschluss mit einem PC zu verbinden. Man kann das Board direkt aus der Verpackung ohne weitere Komponenten anschließen, aber auch ein fertig aufgebautes WLAN-Modul lässt sich auf diese Weise in Betrieb nehmen. Bitte darauf achten, dass ein vollwertiges Micro-USB-Kabel verwendet wird, bei dem auch die Datenleitungen funktionieren. Es gibt leider auch USB-Ladekabel ohne Datenleitungen, mit diesen lässt sich zwar das D1 mini mit Strom versorgen, eine Kommunikation oder Programmierung ist damit aber nicht möglich.
In der nachfolgenden Beschreibung gehe ich davon aus, dass ein PC mit Windows 10 verwendet wird. Hier wird beim ersten Anstecken eines D1 mini an den PC normalerweise automatisch ein Treiber für den CH340 USB-Seriell-Chip installiert und dem angeschlossenen Gerät ein COM-Port zugewiesen. Dies kann man in den Windows-Einstellungen in der Kategorie Geräte und der Gruppe Bluetooth- und andere Geräte nachprüfen. Hier sollte in der Liste Andere Geräte ein Eintrag wie USB-SERIAL CH340 (COM8) zu finden sein, wobei der COM-Port eine andere Nummer haben kann. Dieser COM-Port wird später von der Programmiersoftware benötigt. Die Programmiersoftware und auch die aktuelle Software ESP Easy Mega für das WLAN-Modul ist unter dem folgenden Link zu finden:https://github.com/letscontrolit/ESPEasy/releases
Unterhalb der Release-Informationen befindet sich der unscheinbare Link Assets. Ein Klick auf diesen zeigt eine Liste mit mehreren Dateien. Für das WLAN-Modul wird die Datei ESPEasy_ESP82xx_mega-xxxxxxxx.zip benötigt, wobei anstelle der xxxxxxxx das Erstellungsdatum der Software steht, z.B. 20200703. Aus diesem Paket werden nach dem Download die 4 nachfolgend aufgelisteten Dateien benötigt:- esptool.exe (Programmiertool für ESP8266)
- FlashESP8266.exe (Programmiertool für ESP8266)
- bin\blank_4MB.bin (4MB große leere Programmdatei)
- bin\ESP_Easy_mega_xxxxxxxx_normal_ESP8266_4M1M.bin (optimale Variante der ESP Easy Mega Software für das WLAN-Modul)
Diese 4 Dateien werden nun in ein gemeinsames Verzeichnis kopiert (ohne das Unterverzeichnis bin). Anschließend starten wir das Programmiertool FlashESP8266.exe in diesem Verzeichnis. Es erscheint eine relativ schlichte Oberfläche wie im folgenden Bild.
Im oberen Auswahlmenü wird nun der COM-Port eingestellt, der unserem D1 mini zugewiesen wurde. In meinem Fall ist das COM8. Das Programm wählt übrigens beim Start immer den
höchsten COM-Port aus und das ist oft der richtige. Im unteren Auswahlmenü wird die Datei .\blank_4MB.bin (wie im nebenstehenden Bild) ausgewählt. Diese Datei besteht nur aus
0xFF-Bytes und wird hier verwendet, um den kompletten Flashspeicher des D1 mini zu löschen. Damit wird sichergestellt, dass vorinstallierte Programme und Daten vollständig
gelöscht werden.
Während der Programmierung ist ein Textfenster wie im nebenstehenden Bild zu sehen. Hier wird zunächst das D1 mini in den Programmiermodus versetzt und anschließend der
Inhalt der Datei in den Flashspeicher geschrieben. Der gesamte Schreibvorgang dauert mehrere Minuten und der Fortschritt kann an den Punktreihen und den Prozentwerten verfolgt werden. Nach Abschluss
der Programmierung schließt sich das Textfenster wieder und es erscheint die Bestätigungsmeldung Flash Complete.
Im Programmiertool (welches immer noch geöffnet ist) wird jetzt im unteren Auswahlmenü die Datei .\ESP_Easy_mega_xxxxxxxx_normal_ESP8266_4M1M.bin ausgewählt und wiederum auf
Flash geklickt. Der Ablauf ist identisch wie beim vorherigen Programmiervorgang. Es geht allerdings wesentlich schneller, da hier weniger Daten geschrieben werden müssen. Auch
hier wird der erfolgreiche Abschluss mit Flash Complete bestätigt. Das Programmiertool wird jetzt nicht mehr benötigt und kann beendet werden.
Jetzt ist die Software ESP Easy bereit und im nächsten Schritt soll eine Verbindung mit unserem WLAN hergestellt werden. Dafür gibt es 2 Methoden:
- Die klassische Methode: Dies ist die Standard-Methode bei der Inbetriebnahme von ESP8266-Schaltungen und hier wird vorübergehend ein WLAN-fähiges Gerät (Smartphone,
Tablet oder Laptop) benötigt. ESP Easy aktiviert beim ersten Start für ungefähr 5 Minuten einen WLAN-Access-Point. Mit unserem WLAN-fähigen Gerät starten wir eine
Netzwerksuche und hier sollte ein WLAN mit der SSID ESP-Easy aufgelistet werden. Mit diesem stellt man jetzt eine Verbindung her, wobei als Passwort
configesp eingegeben werden muss. War diese Aktion erfolgreich, dann wird mit einem Browser die Adresse http://192.168.4.1 aufgerufen.
ESP Easy generiert dann eine Seite mit allen Netzwerken in Reichweite. Hier wählt man das gewünschte WLAN aus oder gibt in einer weiteren Zeile die SSID des gewünschten
WLAN manuell ein. Weiterhin muss das WLAN-Passwort in die entsprechende Zeile eingegeben werden. Mit einem Klick auf den Button Connect beendet
ESP Easy den Access-Point-Modus und versucht sich als normaler WLAN-Client mit dem ausgewählten Netz zu verbinden. Jetzt geht es am PC weiter und hier muss man
feststellen, ob sich ein neues Gerät im WLAN angemeldet hat und welche IP-Adresse diesem Gerät über DHCP zugewiesen wurde. Dafür kann man im Router nachschauen oder mithilfe eines Programms, z.B.
Angry IP Scanner das Netzwerk scannen.
- Die professionelle Methode: Hierfür wird ein Terminalprogramm benötigt, z.B. Termite. Mit diesem Terminal wird über USB eine serielle Verbindung zu ESP Easy hergestellt. Über spezielle Kommandos können hier die WLAN-Informationen direkt eingegeben werden. Außerdem bekommt man hier eine Rückmeldung von ESP Easy über den Verbindungsstatus. Man kann also sofort erkennen, ob die Verbindung erfolgreich hergestellt wurde und die über DHCP zugewiesene IP-Adresse wird ebenfalls angezeigt. Dies ist definitiv die bessere Methode, deshalb gehe ich im folgenden Abschnitt etwas näher darauf ein.
Die professionelle Methode im Detail: Hierfür wird, wie schon erwähnt, ein Terminalprogramm benötigt. Grundsätzlich kann mein persönlicher Favorit PuTTY auch hier verwendet werden, allerdings sind recht viele Einstellungen notwendig und die Bedienung ist nicht so optimal. Aus diesem Grund empfehle ich für ESP Easy das Freeware-Programm Termite. Grundsätzlich sollte jedes serielle Terminalprogramm funktionieren und wer sich mit Arduino-Projekten beschäftigt, kann hier z.B. den seriellen Monitor der Arduino-Software verwenden. Unabhängig vom verwendeten Terminal sind folgende Einstellungen wichtig:
- COM-Port: zugewiesener COM-Port, z.B. COM8
- Geschwindigkeit: 115200
- Daten-Bits: 8
- Stopp-Bits: 1
- Parität: keine
- Flusssteuerung: keine
Das nebenstehende Bild zeigt das sehr übersichtliche Menü von Termite mit den optimalen Einstellungen. Der COM-Port muss natürlich angepasst werden.

Eine vollständige Übersicht über die verfügbaren Kommandos ist in dieser Referenz zu finden. Die Kommandos scheinen zwischen Groß- und Kleinschreibung zu unterscheiden, allerdings funktioniert es im Terminal auch mit Kleinbuchstaben. Bei der Eingabe von Parametern wie Namen oder Passwörtern muss natürlich auf Groß/Kleinschreibung geachtet werden. Für die Herstellung einer WLAN-Verbindung werden insgesamt 3 Kommandos benötigt:
WifiSSID WLAN-NameWifiKey WLAN-Passwort
WifiConnect
Auf diesem Bild habe ich nacheinander die Kommandos
WifiSSID WLAN-Name
WifiKey WLAN-Passwort
Erst das dritte Kommando
stellt eine Verbindung zum WLAN her. ESP Easy gibt dann eine Menge Informationen aus und dazu gehört auch die IP-Adresse, die über DHCP zugewiesen wurde. Diese sollten wir
uns gut merken, denn alle im nächsten Kapitel beschriebenen Konfigurationsarbeiten erfolgen in einem Web-Browser über diese IP-Adresse. Die Kommunikation über den Web-Browser werden wir gleich mal
testen.

Waren alle Aktionen erfolgreich, dann kann an dieser Stelle das Terminalprogramm beendet und anschließend das D1 mini vom PC getrennt werden. Das
D1 mini bzw. das WLAN-Modul kann nun über eine eigene Stromquelle versorgt werden und wird dann wenige Sekunden später auch wieder über den Web-Browser erreichbar sein.
Für die nachfolgende Konfiguration wird vorausgesetzt, dass das D1 mini des WLAN-Moduls erfolgreich in Betrieb genommen wurde. Das umfasst die Installation der Software ESP Easy mega, eine funktionierende WLAN-Verbindung zum Heimnetzwerk und es müssen alle zu konfigurierenden Hardware-Komponenten angeschlossen sein (Sensoren, Displays, Taster und LEDs). Das WLAN-Modul sollte an seine eigene Stromversorgung angeschlossen werden und sich in der Nähe des PC befinden, an dem die Konfiguration durchgeführt wird, damit man alle Funktionen direkt überprüfen kann. Es muss übrigens nicht unbedingt ein PC verwendet werden, ein Tablet kann hier auch gute Dienste leisten. Als Software wird nur ein Web-Browser benötigt und hier geben wir nun die IP-Adresse des WLAN-Moduls ein und öffnen damit die Web-Oberfläche von ESP Easy.
Die Konfiguration habe ich in mehrere Einzelschritte unterteilt und nicht jeder Schritt ist zwingend erforderlich. Die Grundkonfiguration sollte allerdings auf jeden Fall durchgeführt werden.
Zunächst noch ein Hinweis: Sollte irgendwann während der Konfiguration die nebenstehende hässliche Meldung erscheinen, dann bitte die letzte Änderung im Kopf behalten, das WLAN-Modul durch
kurzzeitiges Ausschalten der Stromversorgung neu starten und den letzten Vorgang wiederholen. ESP Easy zählt jeden Schreibvorgang der Konfigurationsdatei und wenn dieser
Zähler innerhalb eines Tages 100 erreicht, dann werden weitere Schreibvorgänge blockiert.
Schritt 1 - Grundkonfiguration (unbedingt erforderlich)
Dieses Bild zeigt den oberen Teil der Config-Seite mit der Voreinstellung von ESP Easy. Grundsätzlich kann man den vorgegebenen Gerätenamen
(Unit Name) beibehalten. Die Gerätenummer (Unit Number) sollte aber unbedingt geändert werden, wobei man hier am besten bei 1
beginnt und alle weiteren Geräte fortlaufend nummeriert (Höchstwert 31). Diese Nummer wird übrigens nur für die direkte Kommunikation zwischen
ESP-Easy-Geräten benötigt, die hier aber nicht genutzt wird. Trotzdem sollte eine Nummer vergeben werden, damit in Verbindung mit dem Haken
Append Unit Number to hostname für jedes ESP-Easy-Gerät ein eindeutiger Name generiert wird. Falls man doch irgendwann die direkte Kommunikation
nutzen möchte, dann ist schon mal für die richtige Nummerierung gesorgt.
Ich bin bei meinen Geräten etwas anders vorgegangen. Hier habe ich den Unit Name selbst festgelegt und dabei auch die Nummer berücksichtigt. Der Haken bei
Append Unit Number to hostname kann somit entfernt werden. Weiterhin habe ich ein Passwort vergeben. Dabei ist zu beachten, dass später auch ein Username abgefragt wird. Dieser
ist immer admin.
Dieses Bild zeigt einen Teil der Config-Seite etwas weiter unten. Hier sind zunächst 4 leere Eingabefelder zu sehen, mit denen man die IP-Adresse des WLAN-Moduls festlegen
kann. Auch wenn die meisten Router die vergebenen IP-Adressen speichern, ist es dennoch nicht ausgeschlossen, dass sich Adressen irgendwann ändern. Ich empfehle deshalb, allen WLAN-Modulen eine feste
IP-Adresse zuzuweisen. Hier sollte man vorher im Router nachschauen, welcher Adressbereich dafür vorgesehen ist und welche Adresse der Router selbst nutzt (wichtig für GW- und
DNS-Eintrag).
Sollte bei der letzten Aktion irgendetwas schief gegangen sein und das WLAN-Modul meldet sich nicht wieder, dann ist das kein Grund zur Panik. Wir schließen das D1 mini noch einmal über den USB-Anschluss an den PC an und starten das Terminalprogramm. Mit dem Kommando Reset werden alle Einstellungen von ESP Easy gelöscht und sozusagen auf Werkseinstellungen zurückgesetzt. Anschließend kann, beginnend mit der Eingabe der WLAN-Daten, die Prozedur wiederholt werden.

Mit diesen Einstellungen wird die Onboard-LED des D1 mini aktiviert und außerdem die I²C-Funktion angepasst. Hier sind nur dann Änderungen notwendig, wenn man die Onboard-LED auf dem D1 mini nutzen möchte und/oder wenn I²C-Sensoren über eine längere Leitung angeschlossen werden sollen. Alle Einstellungen in diesem Schritt werden auf der Seite Hardware durchgeführt.

Auf dem D1 mini befindet sich eine kleine blaue LED, die direkt mit dem GPIO-Port 2 (D4) des ESP8266 verbunden ist. ESP Easy bietet die Möglichkeit, eine einfache Statusanzeige über diese LED zu realisieren. Um diese Funktion zu aktivieren, wählt man im Eingabefeld GPIO → LED den Port GPIO-2 (D4) aus. Der Haken bei Inversed LED muss dabei gesetzt bleiben. Nach dem Klick auf den Button Submit ganz unten auf der Seite wird die LED-Funktion aktiviert. Wie die Statusanzeige funktioniert, ist im Wiki von ESP Easy in einer kleinen Grafik dargestellt.
Normalerweise ist es nicht notwendig, die Einstellungen des I²C-Interface zu verändern. In besonderen Fällen kann das aber erforderlich sein, z.B. wenn man einen I²C-Sensor über eine längere Leitung an das WLAN-Modul anschließen möchte. In diesem Fall sollte die Geschwindigkeit (Clock Speed) reduziert werden, um Übertragungsfehler zu vermeiden. Ein guter Wert ist dann z.B. 100kHz (Einstellung 100000). Auch hier bitte das abschließende Submit nicht vergessen.
Schritt 3 - Zeit-Einstellungen (optional)
Grundsätzlich funktioniert ESP Easy auch ohne Uhrzeit. Aber es ist durchaus sinnvoll, alle Geräte in einem Netzwerk mit einer gültigen Uhrzeit laufen zu lassen. In ESP Easy ist für diesen Zweck ein NTP-Client vorhanden, außerdem lassen sich verschiedene Sommerzeit-Varianten einstellen. Die Zeiteinstellungen sind auf der Seite Tools über den Button Advanced erreichbar.

Schritt 4 - Serververbindungen konfigurieren (optional)
In ESP Easy können insgesamt 3 Serververbindungen eingerichtet werden. In der Praxis wird man vermutlich nur einen MQTT-Server im Heimnetz betreiben und deshalb auch nur eine Verbindung einrichten. Dazu wird auf die Seite Controllers gewechselt und in der Zeile ❶ der Button Add geklickt.
Es öffnet sich eine Seite, in der das gewünschte Netzwerk-Protokoll ausgewählt werden muss. Hier wählen wir im einzigen Feld Protocol den Eintrag
Home Assistant (openHAB) MQTT aus. Nach der Auswahl erweitert sich die Seite und es erscheinen weitere Eingabefelder.

Die Einstellungen im mittleren Teil der Seite können unverändert bleiben. Bevor es mit dem interessanten unteren Teil weitergeht, möchte ich kurz auf die MQTT-Kommunikation eingehen: Ein MQTT-Server ist im Prinzip ein Nachrichtenverteiler und jede Nachricht besteht aus einem Thema (Topic) und dem eigentlichen Nachrichteninhalt (Payload). Jedes Gerät, das etwas mitzuteilen hat, verbindet sich mit dem MQTT-Server und schreibt seine Informationen unter einem Topic (oder auch mehreren Topics) auf den Server. Dieser Vorgang wird auch Publish genannt. Jedes Gerät, das eine bestimmte Information benötigt, verbindet sich ebenfalls mit dem Server und abonniert die gewünschten Topics. Dieser Vorgang wird Subscribe genannt. Gelangen nun neue Informationen unter einem bestimmten Topic auf den Server, dann werden diese automatisch an alle Abonnenten dieses Topics weitergegeben.

Controller Client ID: Mit diesem Namen meldet sich unser WLAN-Modul am MQTT-Server an. Hier wird über die Variable %sysname% der Systemname des Moduls eingesetzt, in meinem Fall also esp-easy-01.
Controller Subscribe: Hier wird festgelegt, welche Topics unser WLAN-Modul abonnieren soll. Meine Einstellung Haus/Technik/%sysname%/# bewirkt, dass alle Topics, die mit Haus/Technik/esp-easy-01/ beginnen, abonniert werden. Das ermöglicht das Senden von Nachrichten über MQTT direkt auf das Display und auch die LED kann damit ferngesteuert werden.Controller Publish: Diese Eingabe beeinflusst das Topic für alle ausgehenden Informationen des WLAN-Moduls. Meine Einstellung Haus/OG/%tskname%/%valname% sorgt dafür, dass alle Nachrichten mit dem Topic Haus/OG/ beginnen. Die Variable %tskname% wird später durch den Namen des Sensors ersetzt und die Variable %valname% durch den Wertenamen.
Controller LWT Topic: Dieses Topic hat eine spezielle Funktion. Hier wird signalisiert, ob das WLAN-Modul mit dem MQTT-Server verbunden ist oder nicht. Meine Einstellung Haus/Technik/%sysname%/LWT wird dabei in das Topic Haus/Technik/esp-easy-01/LWT umgesetzt.
Wichtig sind noch die 4 Optionen am Ende der Seite, diese müssen alle aktiviert werden. Anschließend auch hier wieder auf den Button Submit klicken.
Haus/EG/Wohnzimmer/Temperatur Haus/OG/Schlafzimmer/Luftfeuchtigkeit Haus/Technik/Heizung/Vorlauftemperatur Haus/Technik/Lueftung/Zulufttemperatur
Mit den Einstellungen in den Eingabefeldern Controller Subscribe, Controller Publish sowie Controller LWT Topic im vorherigen Bild fügt sich das WLAN-Modul nahtlos in diese Struktur ein. Wird später ein Sensor eingerichtet, z.B. ein DHT22 mit dem Namen Gaestezimmer1 und den Wertenamen Temperatur und Luftfeuchtigkeit, werden die Daten vom WLAN-Modul mit den folgenden beiden Topics gesendet:
Haus/OG/Gaestezimmer1/Temperatur Haus/OG/Gaestezimmer1/Luftfeuchtigkeit
Weiterhin ergeben sich folgende Topics mit speziellen Funktionen:
Haus/Technik/esp-easy-01/cmd - ermöglicht das Übermitteln von Kommandos und Informationen an unser WLAN-ModulHaus/Technik/esp-easy-01/LWT - übermitteln des Online-Status vom WLAN-Modul an andere Geräte
Schritt 5 - Angeschlossene Geräte einrichten (erforderlich für das
entsprechende Gerät)
Einrichten des Displays
Nach dem Wechsel auf die Seite Devices wird in der ersten freien Zeile auf Add geklickt. Dabei öffnet sich eine Seite, auf der im einzigen Eingabefeld Device: das gewünschte Gerät ausgewählt werden muss. Für unser Display ist die Auswahl Display - LCD2004 erforderlich. Anschließend erweitert sich die Seite und bietet eine Reihe Einstellungen an.
Die Eingabefelder beim Display haben folgende Bedeutung:
Enabled: Mit dem Setzen dieser Option wird das Display nach dem Speichern der Einstellungen sofort aktiviert. Ohne den Haken werden zwar alle Eingaben gespeichert, das Display bleibt jedoch inaktiv.
I2C Address: Hier muss die Adresse 0x27 (39) ausgewählt werden. Diese Adresse ergibt sich bei Verwendung der I²C-LCD-Backpack-Platine durch die Voreinstellung der Adress-Eingänge A0, A1 und A2 auf High-Pegel.Display Size: Hier hat man die Wahl zwischen einem 2x16- oder 4x20-Display, wir verwenden letzteres.
Line 1: bis Line 4: Hier hat man die Möglichkeit, Daten direkt auf bestimmte Displayzeilen auszugeben. Dazu gibt es zahlreiche Möglichkeiten, die auch miteinander kombiniert werden können. Zum Test habe ich bei Line 1 die Variable %lcltime% eingetragen. Damit wird die aktuelle Zeit auf der Display-Zeile 1 ausgegeben, z.B. 2020-07-22 17:42:29. Weitere Konfigurationsmöglichkeiten folgen im nächsten Abschnitt.Display button: Ist der Taster S1 angeschlossen, dann kann man diesen durch Auswahl von GPIO-0 (D3) als Display-Taster aktivieren. Damit lässt sich die Hintergrundbeleuchtung des Displays einschalten, sofern ein Display Timeout in der nachfolgenden Einstellung gesetzt ist.
Display Timeout: Mit dieser Einstellung lässt sich die Einschaltzeit für die Hintergrundbeleuchtung festlegen. Diese Zeit in Sekunden wird nach einem Systemstart oder einem Tastendruck wirksam. Die Einstellung 0 schaltet die Beleuchtung dauerhaft ein. Der Taster ist dann für die Beleuchtung nutzlos.LCD command Mode: Diese Einstellung hat Einfluss auf LCD-Kommandos, die über MQTT empfangen werden. Hier sollte die Einstellung Clear then truncate exceeding message ausgewählt werden, da sonst die Übertragung von Wetterinformation nicht richtig funktioniert.
Interval: Diese Einstellung legt fest, in welchen Zeitabständen das Display aktualisiert werden soll. Die hier gewählten 5 Sekunden sind für die meisten Daten ausreichend. Soll die Uhrzeit mit Sekundenstelle angezeigt werden, dann muss der Wert auf 1 Sekunde verringert werden.
Auch diese Einstellungen werden mit Submit gespeichert. Über den Button Close gelangt man wieder zurück in die Geräteliste.
Auf der Seite Devices wird in der nächsten freien Zeile auf Add geklickt. Im Eingabefeld Device wählen wir den Eintrag Environment - SI7021/HTU21D aus. Danach erweitert sich die Seite und es erscheinen zusätzliche Eingabefelder.

Enabled: Mit dem Setzen dieser Option wird der Sensor nach dem Speichern der Einstellungen sofort aktiviert.
Resolution: Diese Einstellung bestimmt die Genauigkeit und hat auch Einfluss auf die Messzeit. Die Voreinstellung Temp 14 bits / RH 12 bits kann man übernehmen.Send to Controller: Eine Aktivierung dieser Option bewirkt, dass die Sensordaten an den Server ❶ übermittelt werden, der im Schritt 4 eingerichtet wurde.
Interval: Das Intervall legt die Zeitabstände für die Sensorabfrage und die Übermittlung der Messwerte fest.Wichtig sind die beiden Zeilen ganz unten. Hier sind die beiden Messkanäle des Si7021 (Temperatur und Luftfeuchtigkeit) aufgelistet und jeder Kanal kann individuell konfiguriert werden.
Name: Der Name ist mit den englischen Begriffen für Temperatur und Luftfeuchtigkeit vorbelegt und ich habe diese durch deutsche Begriffe ersetzt. Der Name wird auch für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.Formula: Dieses Feld bleibt normalerweise leer, bietet aber die Möglichkeit, den Messwert zu beeinflussen. So lässt sich beispielsweise mit dem Eintrag %value%-2 der Wert um 2 vermindern.
Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden.Übrigens, es ist hier kein Eingabefeld für die I²C-Adresse vorhanden. ESP Easy erwartet den Si7021 auf der vorgegebenen Adresse 0x40.
Nach dem Speichern der Eingaben mit Submit und dem Klick auf Close gelangt man wieder zurück in die Geräteliste.Die Einstellungen im Bild bewirken, dass die Messwerte des Sensors auch über MQTT ausgegeben werden, dabei werden folgende Topics verwendet:
Haus/OG/Buero/Temperatur - übermittelt den Temperaturwert mit einer Stelle nach dem KommaHaus/OG/Buero/Luftfeuchtigkeit - übermittelt den Luftfeuchtigkeitswert mit einer Stelle nach dem Komma
Mit den beiden bisher konfigurierten Geräten (Display und Sensor Si7021) sieht unsere Geräteliste jetzt ungefähr so aus wie im Bild. Die Liste gibt nicht nur einen Überblick über die angeschlossenen
Geräte, sondern zeigt auch alle verfügbaren Messwerte an, wobei diese im eingestellten Intervall aktualisiert werden.
Auch hier wird zunächst auf der Seite Devices in der nächsten freien Zeile auf Add geklickt. Im Eingabefeld Device wählen wir den Eintrag Environment - BMx280 aus. Danach erweitert sich die Seite und es erscheinen zusätzliche Eingabefelder.

Enabled: Mit dem Setzen dieser Option wird der Sensor nach dem Speichern der Einstellungen sofort aktiviert.
I2C Address: Hier ist zunächst die Adresse 0x76 (118) - (default) voreingestellt und diese muss bei Verwendung des BME280-Sensors von Adafruit auf die alternative Adresse 0x77 (119) geändert werden. Werden andere BME280-Sensoren verwendet, dann kann meist die Voreinstellung übernommen werden.Altitude: Über den hier eingegebenen Höhenwert lässt sich der ermittelte Luftdruckwert auf Meereshöhe kalibrieren. Ich habe hier 138 Meter für meinen Wohnort eingegeben.
Temperature offset: Hier lässt sich ein Korrekturwert für die Temperatur festlegen, der auch Einfluss auf den Luftfeuchtigkeitswert hat.Send to Controller: Eine Aktivierung dieser Option bewirkt, dass die Sensordaten an den Server ❶ übermittelt werden, der im Schritt 4 eingerichtet wurde.
Interval: Das Intervall legt die Zeitabstände für die Sensorabfrage und die Übermittlung der Messwerte fest.Wichtig sind die 3 Zeilen ganz unten. Hier sind die Messkanäle des BME280 (Temperatur, Luftfeuchtigkeit und Luftdruck) aufgelistet und jeder Kanal kann individuell konfiguriert werden.
Name: Der Name ist mit den englischen Begriffen für Temperatur, Luftfeuchtigkeit und Luftdruck vorbelegt und ich habe diese durch deutsche Begriffe ersetzt. Der Name wird auch für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.Formula: Dieses Feld bleibt normalerweise leer, bietet aber die Möglichkeit, den Messwert zu beeinflussen. So lässt sich beispielsweise mit dem Eintrag %value%-2 der Wert um 2 vermindern.
Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden.Schaut man sich nach dem Speichern und Schließen der Einstellungen die Geräteliste an, dann erscheint auch der BME280 mit seinen 3 Messwerten, die im festgelegten Intervall aktualisiert werden.
Mit meinen Einstellungen werden die Messwerte des Sensors auch über MQTT ausgegeben, dabei ergeben sich folgende Topics:
Haus/OG/Schlafzimmer/Temperatur - übermittelt den Temperaturwert mit einer Stelle nach dem Komma
Haus/OG/Schlafzimmer/Luftfeuchtigkeit - übermittelt den Luftfeuchtigkeitswert mit einer Stelle nach dem Komma
Haus/OG/Schlafzimmer/Luftdruck - übermittelt den auf Meereshöhe korrigierten Luftdruckwert mit einer Stelle nach dem Komma
Auch hier wird zunächst auf der Seite Devices in der nächsten freien Zeile auf Add geklickt. Im Eingabefeld Device wählen wir den Eintrag Environment - DHT11/12/22 SONOFF2301/7021 aus. Danach erweitert sich die Seite und es erscheinen zusätzliche Eingabefelder.

Enabled: Mit dem Setzen dieser Option wird der Sensor nach dem Speichern der Einstellungen sofort aktiviert.
GPIO ⇄ Data: Hier wird der GPIO-Port ausgewählt, an dem der DHT22 angeschlossen ist, in unserem Fall GPIO-12 (D6).Sensor model: Hier wird der Sensortyp DHT 22 ausgewählt.
Send to Controller: Eine Aktivierung dieser Option bewirkt, dass die Sensordaten an den Server ❶ übermittelt werden, der im Schritt 4 eingerichtet wurde.Interval: Das Intervall legt die Zeitabstände für die Sensorabfrage und die Übermittlung der Messwerte fest.
Wichtig sind die beiden Zeilen ganz unten. Hier sind die beiden Messkanäle des DHT22 (Temperatur und Luftfeuchtigkeit) aufgelistet und jeder Kanal kann individuell konfiguriert werden.Name: Der Name ist mit den englischen Begriffen für Temperatur und Luftfeuchtigkeit vorbelegt und ich habe diese durch deutsche Begriffe ersetzt. Der Name wird auch für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.
Formula: Dieses Feld bleibt normalerweise leer, bietet aber die Möglichkeit, den Messwert zu beeinflussen. So lässt sich beispielsweise mit dem Eintrag %value%-2 der Wert um 2 vermindern.
Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden.
Mit meinen Einstellungen werden die Messwerte des Sensors auch über MQTT ausgegeben, dabei ergeben sich folgende Topics:
Haus/OG/Gaestezimmer1/Temperatur - übermittelt den Temperaturwert mit einer Stelle nach dem Komma
Haus/OG/Gaestezimmer1/Luftfeuchtigkeit - übermittelt den Luftfeuchtigkeitswert mit einer Stelle nach dem Komma
Bei den 1-Wire-Sensoren besteht die Möglichkeit, mehrere Sensoren an einen GPIO-Port anzuschließen. Aus diesem Grund weicht die Konfigurationsprozedur etwas ab und es ist noch ein zusätzlicher Schritt erforderlich. Es wird außerdem empfohlen, die Sensoren einzeln nacheinander anzuschließen und zu konfigurieren, damit diese eindeutig zugeordnet werden können.
Es wird also jetzt ein Sensor angeschlossen und die gesamte nachfolgende Prozedur abgearbeitet. Anschließend wird der nächste Sensor zusätzlich angeschlossen und wiederum die nachfolgende Prozedur abgearbeitet. Dieser Vorgang wird solange wiederholt, bis alle 1-Wire-Sensoren konfiguriert sind.Start der Prozedur: Auf der Seite Devices wird in der nächsten freien Zeile auf Add geklickt. Im Eingabefeld Device wählen wir den Eintrag Environment - DS18b20 aus. Danach erweitert sich die Seite und es erscheinen zusätzliche Eingabefelder.

Enabled: Mit dem Setzen dieser Option wird der Sensor nach dem Speichern der Einstellungen sofort aktiviert.
GPIO ⇄ 1-Wire: Hier wird der GPIO-Port ausgewählt, an dem der 1-Wire-Sensor angeschlossen ist, in unserem Fall GPIO-13 (D7).Send to Controller: Eine Aktivierung dieser Option bewirkt, dass die Sensordaten an den Server ❶ übermittelt werden, der im Schritt 4 eingerichtet wurde.
Interval: Das Intervall legt die Zeitabstände für die Sensorabfrage und die Übermittlung der Messwerte fest.Wichtig ist noch die Zeile ganz unten. Hier ist der einzige Messkanal des DS18B20 (Temperatur) aufgelistet und kann an dieser Stelle konfiguriert werden.
Name: Der Name ist mit dem englischen Begriff für Temperatur vorbelegt und ich habe diesen durch den deutschen Begriff ersetzt. Der Name wird außerdem für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.Formula: Dieses Feld bleibt normalerweise leer, bietet aber die Möglichkeit, den Messwert zu beeinflussen. So lässt sich beispielsweise mit dem Eintrag %value%-2 der Wert um 2 vermindern.
Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden.
Nach dem Klick auf Submit erweitert sich die Seite nochmals und zeigt einige zusätzliche Eingabefelder.

Device Address: Bei der Konfiguration des ersten Sensors wird dessen 64-Bit-Adresse automatisch hier eingetragen. Bei der Konfiguration weiterer Sensoren muss nun der neu hinzugekommene aus der Liste ausgewählt werden. Hier muss man sich die bereits konfigurierten Adressen merken oder notieren, um den Überblick zu behalten. An der ersten Stelle der Adresse kann man übrigens den Sensortyp erkennen:
10 - DS18S2022 - DS1822
28 - DS18B20
Device Resolution: Hier kann man die höchste Genauigkeit mit 12 Bit auswählen.
Error State Value: Diese Einstellung legt fest, was bei einem Fehler oder Ausfall des Sensors angezeigt bzw. gesendet werden soll. Ich habe hier Ignore gewählt, d.h. ein Fehler wird ignoriert und kein Wert gesendet. In der Geräteliste bleibt in diesem Fall der letzte Messwert stehen.Alle anderen Eingabefelder wurden bereits auf der vorherigen Seite ausgefüllt und müssen nicht verändert werden. Mit einem Klick auf Submit werden alle Eingaben gespeichert. Close führt zurück zur Geräteliste.
An dieser Stelle ist die Prozedur für die Konfiguration eines 1-Wire-Sensors beendet. Sind weitere Sensoren geplant, dann wird jetzt der nächste Sensor angeschlossen und diese Prozedur nochmals abgearbeitet.Mit meinen Einstellungen der 1-Wire-Sensoren DS18B20 werden die Messwerte aller 3 Sensoren auch über MQTT ausgegeben, dabei ergeben sich folgende Topics:
Haus/OG/Zimmer1/Temperatur - übermittelt den Temperaturwert des ersten 1-Wire-Sensors mit einer Stelle nach dem Komma
Haus/OG/Zimmer2/Temperatur - übermittelt den Temperaturwert des zweiten 1-Wire-Sensors mit einer Stelle nach dem Komma
Haus/OG/Zimmer3/Temperatur - übermittelt den Temperaturwert des dritten 1-Wire-Sensors mit einer Stelle nach dem Komma

Schritt 6 - Display konfigurieren (optional)
[task#value#transformation#justification]
Oder mit deutschen Begriffen ausgedrückt:[Sensorname#Sensorwert#Format#Ausrichtung]
Hier bietet sich ein Beispiel aus meiner Konfiguration an. Ich nehme den DHT22-Sensor, der unter dem Sensornamen Gaestezimmer1 eingerichtet wurde und die beiden Sensorwerte Temperatur und Luftfeuchtigkeit liefert. Ruft man jetzt auf der Seite Devices die Display-Konfiguration über den Button Edit erneut auf, dann könnte man in das Eingabefeld Line 2 folgendes eintragen:Innen: [Gaestezimmer1#Temperatur#d3.1]°C[Gaestezimmer1#Luftfeuchtigkeit#d3.1]%
Die einzelnen Teile der langen Zeile haben folgende Bedeutung:
Innen: | Einfacher Text wird ganz normal ausgegeben. Nach dem Doppelpunkt folgt übrigens noch ein Leerzeichen. |
[Gaestezimmer1#Temperatur#d3.1] | Aus den Daten zwischen den eckigen Klammern wird ein Sensorwert ermittelt. Dazu wird der Sensor mit dem Namen Gaestezimmer1 und dem Wert Temperatur gelesen und im Format d3.1 ausgegeben. Die letzte Angabe bewirkt, dass der Sensorwert als Dezimalzahl mit festen 3 Stellen vor dem Komma und einer festen Nachkommastelle ausgegeben wird. Führende Nullen werden dabei unterdrückt. Die Anzahl der Stellen sollte zum erwarteten Messwert passen, wobei auch das Vorzeichen berücksichtigt werden muss. |
°C | Dies wird wieder als normaler Text ausgegeben. |
[Gaestezimmer1#Luftfeuchtigkeit#d3.1] | Auch hier wird aus den Daten zwischen den eckigen Klammern ein Sensorwert ermittelt. Der Sensor mit dem Namen Gaestezimmer1 und dem Wert Luftfeuchtigkeit wird dabei wieder im Format d3.1 ausgegeben. Auch hier sollte die Anzahl der Stellen zum erwarteten Messwert passen. |
% | Zum Schluss wird noch ein Prozentzeichen als normaler Text ausgegeben. |
An dieser Stelle noch ein Hinweis: Die Eingabefelder für die 4 Displayzeilen sind auf ungefähr 80 Zeichen limitiert. Wenn man also sehr lange Sensor- und Wertenamen verwendet, dann kann es durchaus passieren, dass ESP Easy die eingegebene Zeile wegen Überlänge abweist. In einem solchen Fall muss man die Namen in den Sensor-Einstellungen kürzen, also z.B. Gaestezimmer1 in Gaeste1 umbenennen oder den Wertenamen Temperatur in Temp ändern.
Zusammen mit dem bereits ausgefüllten Eingabefeld Line 1 ergibt sich auf dem Display ungefähr das nebenstehende Bild. Hier muss man einfach ein wenig experimentieren, bis sich
ein gutes Bild ergibt. Weiterhin muss man beim Festlegen der Stellenanzahl den gesamten Messbereich berücksichtigen und z.B. bei Temperatursensoren im Außenbereich noch ein Minuszeichen einplanen.
Gleiches gilt für Luftfeuchtigkeitswerte, die theoretisch 100% erreichen können.
Sind alle Voraussetzungen erfüllt, dann ist es zunächst notwendig, über die Seite Devices ein weiteres Gerät einzurichten. Wir klicken in der nächsten freien Zeile auf Add und wählen das Gerät Generic - MQTT Import aus. Nach der Auswahl erweitert sich die Seite und weitere Eingabefelder kommen hinzu.

Enabled: Mit dem Setzen dieser Option wird das Gerät nach dem Speichern der Einstellungen sofort aktiviert.
MQTT Topic 1: Beginnend mit dieser Zeile hat man hier die Möglichkeit, bis zu 4 MQTT-Topics für den Empfang von Sensorwerten einzutragen. Ich möchte vom Außenbereich die Temperatur und die Luftfeuchtigkeit empfangen und trage deshalb in diese Zeile das MQTT-Topic meines Außentemperatursensors ein: Haus/Aussen/Umgebung/Temperatur.MQTT Topic 2: Hier wird das MQTT-Topic des zweiten Sensors eingetragen, in meinem Fall für den Luftfeuchtigkeitssensor im Außenbereich Haus/Aussen/Umgebung/Luftfeuchtigkeit.
MQTT Topic 3: Hier kann das MQTT-Topic eines weiteren Sensors eingetragen werden oder das Feld bleibt leer.MQTT Topic 4: Hier kann das MQTT-Topic eines weiteren Sensors eingetragen werden oder das Feld bleibt leer.
So wie bei allen Sensoren lassen sich auch hier die 4 Sensorwerte in den nachfolgenden Zeilen individuell konfigurieren.Name: Hier wird der interne Name für die über MQTT empfangenen Sensorwerte festgelegt. Ich habe hier passend zum Wert die Namen Temperatur und Luftfeuchtigkeit verwendet.
Formula: Dieses Feld bleibt normalerweise leer, bietet aber die Möglichkeit, den Messwert zu beeinflussen. So lässt sich beispielsweise mit dem Eintrag %value%-2 der Wert um 2 vermindern.Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden.
Mit einem Klick auf Submit werden alle Eingaben gespeichert und Close führt zurück zur Geräteliste.
Wenn alles geklappt hat, dann werden in der Geräteliste die über MQTT empfangenen Sensorwerte sichtbar. Es kann allerdings einen Moment dauern, bis neue Werte empfangen werden. Das hängt davon ab, in
welchem Intervall der Sender die Daten verschickt.
Außen: [MQTT-In#Temperatur#d3.1]°C[MQTT-In#Luftfeuchtigkeit#d3.1]%
Hier wird die gleiche Syntax wie bei den internen Sensoren verwendet, siehe dazu die Beschreibung etwas weiter oben.
Im nebenstehenden Bild erscheinen nun sehr übersichtlich die Temperatur und Luftfeuchtigkeit vom Außenbereich (empfangen über MQTT) und darunter die Temperatur und Luftfeuchtigkeit vom Raum, in dem
sich das WLAN-Modul befindet (gemessen vom internen Sensor DHT22).
Schritt 7 - Statusinformationen senden (optional)
Name: Hier habe ich den Namen ESP-01-Info gewählt. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch
kein Leerzeichen verwendet werden.
Output Data Type: Hier ist Quad voreingestellt und das bedeutet, dass 4 Systemwerte ausgewählt und gesendet werden können. Sinnvoll sind eigentlich nur 3 Werte, deshalb habe ich hier Triple ausgewählt und nur 3 der folgenden Eingabefelder ausgefüllt.
Value 1: Hier ist Uptime voreingestellt und das kann auch unverändert übernommen werden. Dieser Wert enthält die Laufzeit des WLAN-Moduls seit dem Systemstart oder einem Reset in Minuten.Value 2: Hier habe ich Wifi RSSI ausgewählt. Dieser Wert repräsentiert die Stärke des empfangenen WLAN-Signals in dBm.
Value 3: Die Auswahl System load zeigt die Auslastung des ESP8266-Mikrocontrollers in Prozent.Value 4: Dieses Feld wird nicht genutzt.
Send to Controller: Ein Haken an dieser Stelle bewirkt, dass die Statusinformationen an den Server ❶ übermittelt werden.Interval: Das Intervall legt die Zeitabstände für die Aktualisierung und die Übermittlung der Statuswerte fest.
Die Zeilen darunter können zunächst ignoriert werden und ein Klick auf Submit speichert alle bisherigen Eingaben. Dabei baut sich die Seite neu auf, wobei die nicht benötigten Eingabefelder entfernt werden.
Auch bei den Zeilen ganz unten gibt es eine Veränderung. Die nicht benötigte 4. Zeile ist verschwunden und bei den verbleibenden Zeilen wurde das Eingabefeld Name bereits
ausgefüllt. ESP Easy lässt an dieser Stelle leider keine Änderung der Namen zu, die restlichen Eingabefelder können aber beabeitet werden.
Decimals: Hier kann die Anzahl der Stellen nach dem Komma festgelegt werden. Bei meiner Einstellung wird also die Laufzeit in Tagen mit 2 Stellen nach dem Komma ausgegeben, der RSSI-Wert ohne Nachkommastellen und die Systemauslastung mit einer Nachkommastelle.
Mit einem Klick auf Submit werden alle Eingaben gespeichert und Close führt zurück zur Geräteliste.
In der Geräteliste werden nun unsere Systeminformationen sichtbar, wobei auch die Einstellungen in den Feldern Formula und Decimals berücksichtigt
werden. Mein WLAN-Modul ist jetzt über einen Tag in Betrieb und hat einen recht guten RSSI-Wert, weil es zurzeit noch in der Nähe des Routers steht.
Haus/OG/ESP-01-Info/uptime - übermittelt die Laufzeit des WLAN-Moduls in Tagen mit 2 Stellen nach dem Komma
Haus/OG/ESP-01-Info/rssi - übermittelt die WLAN-Signalstärke in dBm ohne Nachkommastellen
Haus/OG/ESP-01-Info/load - übermittelt die Systemauslastung in Prozent mit einer Stelle nach dem Komma
Dieses Bild zeigt den Flow zum Empfang der Systeminformationen und zur Anzeige der Auslastung, des RSSI-Wertes und der Laufzeit. Außerdem wird der Online-Status des WLAN-Moduls angezeigt und der
RSSI-Wert als 24-Stunden-Diagramm dargestellt.
Der RSSI-Wert wird außerdem über einen delay-Node geführt, der alle 5 Minuten den aktuellen Wert an den nachfolgenden chart-Node weitergibt. Durch die Reduzierung der Datenpunkte bleibt die erzeugte Kurve immer noch relativ genau und Node-RED kann die Grafik ohne spürbare Verzögerung ausgeben.
Der Online-Status gelangt nach dem Empfang direkt zu einem function-Node. Besteht die Nachricht aus dem Text Connected, dann wird die Nachricht mit dem neuen Text Verbunden an den nachfolgenden text-Node weitergegeben, anderenfalls wird der Text keine Verbindung verwendet. Eine zusätzliche Farbinformation sorgt für eine farbige Anzeige der Status-Information im text-Node.
Die Laufzeit wird direkt zu einem text-Node geführt und dort ohne weitere Veränderungen angezeigt.
Einstellungen für alle mqtt in-Nodes (Auslastung, RSSI, Status, Laufzeit):
Server | Hier muss der in Node-RED verwendete MQTT-Server ausgewählt werden. |
Topic | Die Topics müssen gegebenenfalls an das eigene System angepasst werden. |
Einstellung für gauge-Node Auslastung:
Group | Für die Statusanzeigen der WLAN-Module habe ich zunächst ein Tab mit dem Namen Module und anschließend die Group Auslastung mit einer Breite von 3 Rastereinheiten angelegt. Somit ergibt sich hier die Einstellung [Module] Auslastung. Dies muss gegebenenfalls an das eigene System angepasst werden. |
Einstellung für gauge-Node RSSI:
Group | Auch hier wird das Tab mit dem Namen Module verwendet und hier wurde die Group Auslastung mit einer Breite von 3 Rastereinheiten angelegt. Somit ergibt sich hier die Einstellung [Module] Auslastung. Dies muss gegebenenfalls an das eigene System angepasst werden. |
Einstellung für chart-Node RSSI-Verlauf:
Group | Auch das Diagramm nutzt das Tab mit dem Namen Module und zusätzlich wurde hier die Group Diagramme mit einer Breite von 10 Rastereinheiten angelegt. Somit ergibt sich hier die Einstellung [Module] Diagramme. Dies muss gegebenenfalls an das eigene System angepasst werden. |
Einstellung für text-Nodes Status und Laufzeit:
Group | Auch diese Elemente verwenden das Tab mit dem Namen Module und hier wurde die Group Sonstiges mit einer Breite von 3 Rastereinheiten angelegt. Somit ergibt sich hier die Einstellung [Module] Sonstiges. Dies muss gegebenenfalls an das eigene System angepasst werden. |
Schritt 8 - Wetterinformationen zum WLAN-Modul senden (optional)
Das nebenstehende Bild zeigt ein Beispiel für die Wetterinformationen. Zeile 3 ist hier für einen Wettertext reserviert und Zeile 4 für Winddaten, wo die Windrichtung und die Windgeschwindigkeit in
km/h angezeigt wird. Es ist möglich, die Wetterinformationen auf andere Displayzeilen zu verschieben, z.B. auf die Zeile 1+2, 2+3 oder 3+4 wie im Bild.

Der Flow zum Senden der Wetterinformationen sieht zunächst recht unspektakulär aus. Den Anfang macht ein inject-Node, der eine Sekunde nach dem Start und dann regelmäßig jede
Minute eine Nachricht an den openweathermap-Node schickt. Dieser startet daraufhin eine Anfrage bei OpenWeatherMap, holt die aktuellen Wetterdaten und
sendet diese an einen function-Node weiter. Dieser entnimmt dem Datenpaket die Wetterlage, die Windrichtung sowie die Windgeschwindigkeit und bastelt daraus zwei Displayzeilen.
Diese werden als Kommando für ESP Easy aufbereitet und zu einem mqtt out-Node gesendet, der wiederum die Daten unter einem festgelegten Topic zum
MQTT-Server schickt.
Nach der Installation des openweathermap-Node kann die Datei flow-wetter-wlan-modul.json aus dem Paket wlan-modul-node-red-v100.zip über die Import-Funktion von Node-RED ins eigene System integriert werden. Die Nodes verwenden die gleichen Einstellungen wie in den vorher beschriebenen Konfigurationsschritten. Hier sind also Anpassungen an die eigene Konfiguration notwendig. Die folgende Übersicht zeigt die Einstellungen, die gegebenenfalls geändert werden müssen.
Einstellungen für openweathermap-Node Wetter:
API Key | Hier muss der aus 32 Hex-Zeichen bestehende API-Key von OpenWeatherMap eingetragen werden. Dafür ist eine Registrierung bei https://openweathermap.org/price erforderlich. Hier wählt man die Free-Version, die für unsere Zwecke völlig ausreichend ist. |
Location / City | Hier wird der Ort eingetragen. OpenWeatherMap kennt allerdings nicht jeden Ort, deshalb sollte man bei kleineren Orten auf der Web-Seite https://openweathermap.org/ prüfen, ob der gewünschte Ort verfügbar ist. Alternativ kann man die Location auf Coordinates umschalten und die GPS-Koordinaten eingeben. |
Einstellungen für function-Node Wetter für LCD aufbereiten:
Function, Zeile 8 | Für die Wetterinformationen sind immer 2 aufeinander folgende Displayzeilen reserviert und diese lassen sich hier festlegen.
Folgende Einstellungen sind möglich: line = 1; Zeile 1 und 2 wird verwendet line = 2; Zeile 2 und 3 wird verwendet line = 3; Zeile 3 und 4 wird verwendet (Voreinstellung) |
Function, Zeile 9 | Die Wetterinformationen enthalten auch Winddaten. Diese kann man hier folgendermaßen konfigurieren: mode = 1; keine Winddaten anzeigen mode = 2; Winddaten vollständig anzeigen, wenn die zweite Zeile frei ist mode = 3; wie Mode 2, zusätzlich werden auch reduzierte Winddaten angezeigt, wenn der Platz ausreichend ist (Voreinstellung) |
Einstellungen für mqtt out-Node WLAN-Modul-1:
Server | Hier muss der in Node-RED verwendete MQTT-Server ausgewählt werden. |
Topic | Hier muss das Topic für den MQTT-Kommandokanal unseres WLAN-Moduls eingegeben werden. |
Ich habe in meinem mqtt out-Node das folgende Topic eingetragen:
Haus/Technik/esp-easy-01/cmdDieses Topic ergibt sich aus der konfigurierten Serververbindung im Schritt 4, insbesondere aus der Einstellung Controller Subscribe. Über den Zusatz /cmd im Topic lassen sich Kommandos an ESP Easy senden. Speziell für die Wetterinformationen kommt hier das LCD-Kommando zum Einsatz:
LCD,<row>,<col>,<text>Dieses Kommando macht es möglich, einen beliebigen Text an das Display zu senden. Der function-Node im Flow weiter oben verpackt die Wetterinformation in zwei LCD-Kommandos (ein Kommando für jede Zeile) und sendet diese dann über den mqtt out-Node an das WLAN-Modul. Für das Beispielbild weiter oben werden die folgenden Kommandos gesendet (nur zur Info):
lcd,3,1,"Überwiegend bewölkt"lcd,4,1,"Wind aus Nordwest 13"
Sollte es Probleme mit den Wetterinformationen geben, dann ist es sinnvoll, das Debugging von Node-RED zu verwenden. Dazu kann man einen debug-Node an den Ausgang des openweathermap-Node anschließen und schauen, ob überhaupt Wetterdaten geliefert werden. Vielleicht liegt es an der Schreibweise des Ortsnamens. Während mein Wohnort auf der Webseite von OpenWeatherMap mit Umlaut ö akzeptiert wird, muss ich den Ortsnamen im openweathermap-Node mit oe schreiben. Übrigens, nach der Registrierung beim Wetterdienst kann es durchaus eine halbe Stunde dauern, bis der Datenabruf funktioniert.

In der Display-Konfiguration von Schritt 5 wurde der Taster zur Steuerung der Display-Beleuchtung konfiguriert. Unabhängig davon kann er aber auch für andere Steuerungsaufgaben genutzt werden. Dazu wird der Taster als Gerät eingerichtet und ist damit in der Lage, seinen Status über MQTT zu übermitteln. Das ermöglicht die Auswertung eines Tastendrucks in Node-RED. Auch die LED des WLAN-Moduls kann über MQTT angesteuert werden. Somit kann Node-RED z.B. Alarme über die LED signalisieren. Die nachfolgende Beschreibung zeigt, wie der Taster und die LED in Node-RED verwendet werden können.

Zur Demonstration der LED-Steuerung habe ich einen Dashboard-switch-Node erstellt. Dessen Ausgang führt zu einem function-Node, der den Schaltzustand in ein Kommando für ESP Easy umwandelt und dieses dann zum bereits erwähnten mqtt out-Node weitergibt.
Der Flow für den Taster besteht aus den 3 Nodes in der unteren Zeile. Der mqtt in-Node am Beginn der Kette empfängt den Tasterstatus und gibt diesen an einen function-Node weiter. Dieser weist dem aktuellen Schaltzustand einen Text und eine Farbe zu und leitet die Information an einen text-Node weiter, der dann den Schaltzustand anzeigt.Das Paket wlan-modul-node-red-v100.zip enthält den Flow für die LED und den Taster in der Datei flow-tasterled-wlan-modul.json. Nach dem Import in Node-RED muss noch eine Verbindung vom function-Node LED-Kommando zum mqtt out-Node hergestellt werden. Wenn die Wetterinformationen nicht genutzt werden und folglich der mqtt out-Node fehlt, dann kann man diesen auch selbst erstellen. Die für die LED notwendigen Nodes benötigen gegebenenfalls noch folgende Anpassungen.
Einstellungen für switch-Node LED-Schalter:
Group | Für den LED-Schalter habe ich das in den vorherigen Schritten erstellte Tab mit dem Namen Module verwendet. Hier wurde dann zusätzlich die Group Taster & LED mit einer Breite von 3 Rastereinheiten angelegt. Somit ergibt sich hier die Einstellung [Module] Taster & LED. Dies muss gegebenenfalls an das eigene System angepasst werden. |
Topic | Hier muss das Topic für den MQTT-Kommandokanal unseres WLAN-Moduls eingegeben werden. |
Einstellungen für mqtt out-Node WLAN-Modul-1:
Server | Hier muss der in Node-RED verwendete MQTT-Server ausgewählt werden. |
Topic | Hier muss das Topic für den MQTT-Kommandokanal unseres WLAN-Moduls eingegeben werden. |
QoS | Falls dieser Node selbst erstellt wurde, muss hier 0 eingestellt werden. |
Retain | Falls dieser Node selbst erstellt wurde, muss hier Falsch eingestellt werden. |
Da hier der gleiche mqtt out-Node wie für die Wetterinformationen benutzt wird, gilt auch hier das gleiche Topic:
Haus/Technik/esp-easy-01/cmdFür das Schalten der LED wird übrigens das GPIO-Kommando von ESP Easy verwendet:
GPIO,<gpio>,<value>Mit diesem Kommando lassen sich GPIO-Pins des ESP8266 schalten. Da unsere LED an GPIO 14 angeschlossen ist, ergeben sich die folgenden beiden Kommandos (nur zur Info):
gpio,14,1 - schaltet den GPIO-Port 14 auf High-Pegel (LED ein)gpio,14,0 - schaltet den GPIO-Port 14 auf Low-Pegel (LED aus)
Auch die für den Taster notwendigen Nodes benötigen gegebenenfalls noch folgende Anpassungen.
Einstellungen für mqtt in-Node Taster:
Server | Hier muss der in Node-RED verwendete MQTT-Server ausgewählt werden. |
Topic | Hier muss das Topic des Tasters eingegeben werden. |
Hier ist das folgende Topic voreingestellt, welches auch in der nachfolgenden Konfiguration verwendet wird:
Haus/OG/Taster-01/StatusEinstellungen für function-Node Text anpassen:
Funktion, Zeile 1 | Hier kann der Text definiert werden, der bei nicht gedrücktem Taster auf dem Dashboard angezeigt werden soll. |
Funktion, Zeile 2 | Hier kann der Text definiert werden, der bei gedrücktem Taster auf dem Dashboard angezeigt werden soll. |
Einstellungen für text-Node Taster-Anzeige:
Group | Hier habe ich das gleiche Tab und die gleiche Group wie beim switch-Node weiter oben verwendet: [Module] Taster & LED |
Während die LED-Steuerung an dieser Stelle bereits funktionsfähig ist, erfordert die Taster-Steuerung die Einrichtung eines weiteren Gerätes im WLAN-Modul. Dafür muss wieder über die Web-Oberfläche des WLAN-Moduls die Seite Devices aufgerufen und in der nächsten freien Zeile auf Add geklickt werden. Im Eingabefeld Device wird nun der Eintrag Switch input - Switch ausgewählt. Die Seite erweitert sich und zeigt viele zusätzliche Eingabefelder.

Enabled: Mit dem Setzen dieser Option wird der Taster nach dem Speichern der Einstellungen sofort aktiviert.
Internal PullUp: Wird der Taster bereits für die Display-Beleuchtung verwendet, dann ist der notwendige Pull-Up-Widerstand bereits eingeschaltet und die Einstellung im Bild passt so. Wird der Taster nicht für die Beleuchtung genutzt, dann muss man hier einen Haken setzen.Inversed Logic: Da der Taster im Ruhezustand High-Pegel und im gedrückten Zustand Low-Pegel liefert, muss die Logik invertiert werden.
GPIO ⇄ : Der Taster ist an GPIO-0 (D3) angeschlossen.Switch Type: Hier wird Switch ausgewählt.
Switch Button Type: Die hier gewählte Einstellung Normal Switch bewirkt, dass im losgelassenen Zustand des Tasters der Status 0 und im gedrückten Zustand der Status 1 gesendet wird. Alternativ kann man die Einstellung Push Button Active Low wählen, damit wechselt der ausgegebene Status bei jedem Tastendruck (Toggle-Funktion).Send Boot state: Mit dieser Einstellung wird der aktuelle Taster-Status beim Systemstart gesendet.
De-bounce (ms): Diese Einstellung beseitigt das typische Prellen von mechanischen Tastern, 50 ms sind hier eine gute Wahl.
Die weiteren Einstellungen können unverändert bleiben, erst ganz unten wird es wieder interessant.

Interval: Mit dieser Einstellung kann der Taster-Status regelmäßig übermittelt werden. Das ist sinnvoll, weil Node-RED bei einem Neustart den Taster-Status vergisst. Mit der Einstellung 300 wird der Taster-Status spätestens 5 Minuten nach einem Neustart von Node-RED wieder korrekt angezeigt.
Name: In der letzten Zeile wird der Wertename festgelegt, unter dem der Tasterstatus gesendet wird, hier passt Status am besten.
Mit einem Klick auf Submit werden alle Eingaben gespeichert und Close führt zurück zur Geräteliste.
Haus/OG/Taster-01/Status - Taster nicht gedrückt: 0, Taster gedrückt: 1
Nach der Einrichtung von Taster und LED sieht das Tab Module meines Dashboards so aus wie im nächsten Bild.
Ganz rechts ist eine neue Group hinzugekommen und der obere Teil zeigt den aktuellen Taster-Status. Wird jetzt auf den Taster des WLAN-Moduls gedrückt, dann wechselt die Anzeige auf Ein und geht nach dem Loslassen auf Aus zurück. Klickt man auf den virtuellen LED-Switch im Dashboard, dann leuchtet die LED am WLAN-Modul auf und geht nach erneutem Klick wieder aus. Diese Funktionen sind jetzt nicht wirklich sinnvoll, zeigen aber die grundsätzlichen Möglichkeiten.
Grundsätzlich sollte nach der Inbetriebnahme und der Konfiguration des WLAN-Moduls dessen Bedienkonzept klar sein. Es gibt aber noch einige interessante Funktionen von ESP Easy, die ich in diesem Kapitel etwas genauer vorstellen möchte. So bietet die Web-Oberfläche auf der Seite Tools einige Optionen, die bei Problemen nützlich sein können. Außerdem lassen sich hier die Einstellungen sichern und wiederherstellen und es ist möglich, ein Update der ESP Easy-Software durchzuführen.
Ganz oben auf der Seite befindet sich unter der Überschrift Command eine Eingabezeile. Hier kann man ESP Easy-Kommandos eingeben, z.B. das etwas weiter oben erwähnte LCD- oder GPIO-Kommando. Das kann sehr hilfreich sein, um die Datenausgabe zum Display oder zur LED zu testen. Nach der Eingabe eines Kommandos kann dieses mit Enter oder dem Submit-Button ausgeführt werden. Neben dem Submit-Button ist noch ein Fragezeichen-Symbol ❔ zu sehen. Dieses führt direkt zu einer Kommando-Referenz auf der Homepage von ESP Easy. Das Symbol ❔ ist übrigens am mehreren Stellen der Web-Oberfläche zu finden und führt immer zu einer Seite mit weiteren Informationen.Unterhalb der Kommandozeile befinden sich einige Buttons mit diversen Funktionen, die nachfolgende Übersicht beschreibt einige davon.
System | Reboot | Damit lässt sich das WLAN-Modul neu starten. Ein Klick auf diesen Button führt sofort einen Neustart aus, welcher nur wenige Sekunden dauert. |
System | Log | Diese Funktion öffnet ein Fenster, in dem alle wichtigen Meldungen aufgelistet werden. Dazu gehört eine zyklische Statusmeldung, aber auch alle Aktivitäten von den Geräten der Seite Devices. Selbstverständlich erscheinen hier auch Fehlermeldungen und wenn irgend etwas nicht funktioniert, dann lohnt sich auf jeden Fall ein Blick in das Log. |
System | Info | Diese Seite zeigt sehr viele Systeminformationen an. |
System | Timing stats | Hier wird eine Tabelle mit allen laufenden Prozessen angezeigt. Falls das WLAN-Modul und die Web-Oberfläche wegen einer hohen Systemauslastung sehr träge wirkt, dann kann man über diese Tabelle den problematischen Prozess identifizieren. |
System | System Variables | Hier erscheint eine Liste mit allen Systemvariablen und deren aktueller Wert. |
Wifi | Scan | Mit dieser Funktion kann man alle drahtlosen Netzwerke in der Nähe auflisten. |
Interfaces | I2C Scan | Diese Funktion listet alle Geräte am I²C-Bus auf und kann bei Problemen mit I²C sehr nützlich sein. |
Settings | Load | Über diese Funktion kann eine Konfigurationsdatei geladen und somit eine frühere Konfiguration wiederhergestellt werden. |
Settings | Save | Diese Funktion speichert die aktuelle Konfiguration als Datei. |
Firmware | Update Firmware | Diese Funktion ermöglicht die Installation einer neuen Firmware, die vorher vom Download-Server geladen und entpackt werden muss. |
Filesystem | Factory Reset | Mit dieser Funktion lässt sich die Konfiguration löschen und sozusagen das WLAN-Modul auf Werkseinstellungen zurücksetzen. |
Auf die letzten 4 Funktionen der Liste möchte ich noch etwas ausführlicher eingehen.
Funktion Settings SaveNachdem das WLAN-Modul mehr oder weniger fertig eingerichtet ist und funktioniert, bietet sich eine Sicherung der Einstellungen an. Genau für diesen Zweck wurde die Funktion Save eingerichtet. Nach der Auswahl dieser Funktion öffnet sich ein Dialog, in dem wir die Option Datei speichern wählen und auf OK klicken. Im Download-Verzeichnis unseres PCs finden wir nun eine Datei mit allen Einstellungen unseres WLAN-Moduls. Diese Datei stellt praktisch ein Backup der laufenden Konfiguration dar und sollte gut aufbewahrt werden.
Funktion Settings LoadMit dieser Funktion lässt sich eine gespeicherte Konfiguration wieder laden und aktivieren. Ganz wichtig: Die Datei muss vor dem Laden in config.dat umbenannt werden. Nach der Auswahl dieser Funktion öffnet sich auch hier ein Dialog, in dem zunächst über den Button Durchsuchen... die Datei config.dat ausgewählt werden muss. Nach einem Klick auf den Upload-Button erscheint (hoffentlich) eine Erfolgsmeldung und der Hinweis, dass ein Neustart zum Aktivieren der Einstellungen erforderlich ist. Dazu gehen wir erneut auf die Seite Tools und starten die Funktion System Reboot. Nun startet das System neu und verwendet dabei die Einstellungen aus der zuvor geladenen Datei.
Funktion Firmware Update FirmwareDiese Funktion ermöglicht ein Update der ESP Easy Mega-Software. Bevor die Funktion gestartet wird, sollten wir zuerst die aktuelle Firmware vom Server laden. Dazu wird die folgende Seite aufgesucht:
https://github.com/letscontrolit/ESPEasy/releasesUnterhalb der Release-Informationen befindet sich der unscheinbare Link Assets. Ein Klick auf diesen zeigt eine Liste mit mehreren Dateien. Für das WLAN-Modul wird die Datei ESPEasy_ESP82xx_mega-xxxxxxxx.zip benötigt, wobei anstelle der xxxxxxxx das Erstellungsdatum der Software steht, z.B. 20200703. Nach dem Download entpacken wir die folgende Datei:
bin\ESP_Easy_mega_xxxxxxxx_normal_ESP8266_4M1M.binJetzt klicken wir auf Update Firmware und auch hier erscheint zunächst ein Dialog. Wir klicken nun unter Firmware: auf den Button Durchsuchen... und wählen die soeben entpackte Firmware-Datei aus. Jetzt wird es ernst: Mit einem Klick auf den Button Update Firmware wird der Prozess gestartet. Nach knapp 20 Sekunden erscheint der Hinweis Update Success! Rebooting... und nach weiteren 20 Sekunden meldet sich das WLAN-Modul wieder und zeigt die Hauptseite Main. Hier kann man in der Zeile Git Build: die Version der Software überprüfen. Gelegentlich fehlt diese Angabe und in einem solchen Fall hilft ein Klick auf den Button More info. Hier findet man etwas weiter unten Informationen im Bereich Firmware - Build Time.
Ein Firmware-Update ist immer ein riskanter Vorgang und man sollte hier nicht eingreifen und auch nicht den Strom ausschalten. Falls trotz aller Vorsicht das Update fehlschlägt und das WLAN-Modul kein Lebenszeichen mehr zeigt, dann muss man leider wieder beim Kapitel Inbetriebnahme beginnen. Sobald die Web-Oberfläche des WLAN-Moduls wieder erreichbar ist, kann man die gesamte Konfiguration überspringen und stattdessen auf das Backup zurückgreifen. Dazu wird die Funktion Settings Load verwendet, die einige Zeilen weiter oben beschrieben wurde.Funktion Filesystem Factory Reset
Falls man die Absicht hat, eine komplett neue Konfiguration zu erstellen, dann kann man diese Funktion verwenden. Vor der Ausführung des Resets hat man hier noch die Möglichkeit, bestimmte Einstellungen zu behalten. Hier stehen z.B. der Unit-Name, die WLAN-Einstellungen oder auch die Zeiteinstellungen zur Auswahl. Weiterhin lässt sich für einige Geräte eine Voreinstellung setzen, was allerdings für unser WLAN-Modul nicht relevant ist. Schließlich kann man durch einen Klick auf Factory Reset den Vorgang starten und dann gibt es kein Zurück mehr.
Zum Schluss möchte ich noch auf eine sehr nützliche Software hinweisen: Der MQTT Explorer zeigt sehr übersichtlich alle Nachrichten an, die über den MQTT-Server laufen. Nach der Installation der Software ist es einmalig notwendig, die Daten unseres MQTT-Servers einzugeben. Dazu wird zunächst auf der Startseite der Button + (Connections) angeklickt und auf der rechten Seite sind dann folgende Einstellungen notwendig:
Name - ein beliebiger Name, z.B. Mein MQTT-ServerHost - die IP-Adresse unseres MQTT-Servers, z.B.192.168.1.222
Validate certificate - ausschalten
Bei allen anderen Feldern können die Voreinstellungen übernommen werden oder die Felder bleiben leer. Mit einem Klick auf SAVE werden die Einstellungen gespeichert und ein Klick auf CONNECT stellt eine Verbindung zum MQTT-Server her.

Dieses Programm kann bei der Fehlersuche sehr hilfreich sein. Man kann hier kontrollieren, ob Nachrichten vom WLAN-Modul gesendet werden und umgekehrt prüfen, ob das WLAN-Modul Nachrichten empfängt.
Auch im Zusammenhang mit Node-RED hat sich der MQTT Explorer bewährt. Man sollte ruhig ein wenig experimentieren, um ein Gefühl für MQTT zu bekommen.