Projekt: Temperatur-Messsystem - WLAN-Modul


Aktuelle Module
Veraltete Module
Menübild

Symbol Status
Statusaktiv
Letzte Bearbeitung15.08.2020
Aktueller Softwarestandv1.00 vom 08.08.2020
Symbol Downloads
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.2020wlan-modul-node-red-v100.zip
Platinenlayout von Dietmar Heyer im Sprint-Layout-Formatwlanm-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/
Symbol Inhaltsverzeichnis
BeschreibungAllgemeine Informationen über das WLAN-Modul
SchaltungBeschreibung der Schaltung des WLAN-Moduls
HardwareBilder und Hinweise zum Aufbau des WLAN-Moduls
SoftwareBeschreibung der Software des WLAN-Moduls
InbetriebnahmeInbetriebnahme des WLAN-Moduls
KonfigurationKonfiguration des WLAN-Moduls
BedienungBedienung des WLAN-Moduls und spezielle Funktionen
SonstigesWeitere Informationen
SymbolBeschreibung

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.

SymbolSchaltung

WLAN-Modul Schaltung 1

Das zentrale Element der Schaltung ist hier das kleine Mikrocontroller-Board WEMOS D1 mini (IC1). Dieses vereint auf einer Platinenfläche von 35mm x 25mm einen Mikrocontroller ESP8266 mit WLAN-Antenne und 4MB Flashspeicher, außerdem eine Micro-USB-Buchse, einen USB-Seriell-Konverter CH340 und einen 3,3V Spannungsregler. Alle wichtigen Anschlüsse sind auf 2 Stiftleisten mit jeweils 8 Anschlüssen herausgeführt. Diese liegen dem D1 mini bei und müssen selbst aufgelötet werden. Bei der abgebildeten Schaltung habe ich ein Display sowie mehrere Sensoren, die ich in der Bastelkiste finden konnte, an das D1 mini angeschlossen. In der Praxis wird man eine solche Konfiguration wohl nicht verwenden, aber sie funktioniert und alle Komponenten arbeiten problemlos zusammen. Diese Stückliste enthält alle Bauteile dieser beispielhaften Schaltung. Hier braucht man natürlich nur die Komponenten bestellen, die wirklich benötigt werden. Im nachfolgenden Abschnitt wird auf die verwendeten Bauteile noch etwas genauer eingegangen.

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-AnschlussLCD-SignalBesonderheiten beim I²C-LCD-Backpack
1VSS (GND)mit Anschluss GND der 4-poligen Stiftleiste verbunden
2VDD (+5V)mit Anschluss VCC der 4-poligen Stiftleiste verbunden
3VO (Kontrast)mit dem Trimmpoti zur Kontrasteinstellung verbunden
4RSmit P0 des PCF8574 verbunden
5R/Wmit P1 des PCF8574 verbunden
6Emit P2 des PCF8574 verbunden
7DB0nicht angeschlossen
8DB1nicht angeschlossen
9DB2nicht angeschlossen
10DB3nicht angeschlossen
11DB4mit P4 des PCF8574 verbunden
12DB5mit P5 des PCF8574 verbunden
13DB6mit P6 des PCF8574 verbunden
14DB7mit P7 des PCF8574 verbunden
15Anode (Beleuchtung)über einen Jumper mit +5V verbunden
16Kathode (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:

WLAN-Modul Schaltung 2

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.

SymbolHardware

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.

WLAN-Modul Bild 1 Dieses Bild zeigt die Hauptplatine des WLAN-Moduls. Diese hat die Maße 120mm x 65mm und wurde so zugeschnitten, dass sie exakt in ein Halbschalengehäuse SD10 von Reichelt passt. Auf die insgesamt 6 Distanzhülsen mit 10mm Länge und M3-Gewinde werden später das Display und eine kleine Tasterplatine aufgeschraubt. Auf der linken Seite habe ich das D1 mini fest eingelötet. So passt es sehr gut unter das Display. Die USB-Buchse schließt dabei bündig mit dem linken Platinenrand ab. An den oberen 4-poligen Steckverbinder wird das Display angeschlossen, hier befinden sich auch die beiden Pull-up-Widerstände für den I²C-Bus. An den Steckverbinder in der Mitte wird der Taster und die LED angeschlossen und der untere Steckverbinder ist für den DHT22-Sensor vorgesehen. Hier ist auch der Pull-up-Widerstand R3 sowie der Kondensator C1 untergebracht. Letzterer müsste eigentlich so nah wie möglich an den Sensor, aber das war hier nicht möglich.

WLAN-Modul Bild 2 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.

WLAN-Modul Bild 3 Dieses Bild zeigt die I²C-LCD-Backpack-Platine, die hier bereits mit dem Display verlötet wurde. Ganz wichtig sind die beiden eingekreisten Pull-up-Widerstände, die unbedingt entfernt werden müssen, bevor die Platine in Betrieb genommen wird. Hier sind die Widerstände bereits entfernt worden.

Ü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.

WLAN-Modul Bild 4 Hier sieht man das Display und die Backpack-Platine von der Seite. Man muss beim Zusammenbau unbedingt beachten, dass sich die Komponenten beider Platinen nicht berühren. Bei meinem Display war etwas mehr Abstand zwischen Display und Backpack notwendig. Zu groß darf der Abstand aber nicht werden, insgesamt stehen bei meinem Aufbau nur 10mm unter dem Display zur Verfügung.

WLAN-Modul Bild 5 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.

WLAN-Modul Bild 6 Die Anschlüsse des DHT22 sind durch einen schmalen Schlitz im Gehäuse nach innen geführt. Zur Isolierung der Anschlüsse wurde etwas Zweikomponentenkleber aufgetragen.

WLAN-Modul Bild 7 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.

WLAN-Modul Bild 8 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.

Übrigens, die 4 Befestigungslöcher am Display müssen vorsichtig auf 3mm aufgebohrt werden.

WLAN-Modul Bild 9 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.

WLAN-Modul Bild 10 Im nächsten Schritt wird das Sensorkabel zwischen Hauptplatine und Display geschoben und an der Hauptplatine angeschlossen. Hier ist eine Pinzette sehr hilfreich. Anschließend kann die komplette Platinen-Display-Einheit in die Gehäuse-Unterschale eingesetzt werden.

WLAN-Modul Bild 11 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.

WLAN-Modul Bild 12 Dieses Bild zeigt das WLAN-Modul von hinten. Hier habe ich aus einer weiteren Gehäuseschale (war von einem früheren missglückten Projekt übrig) einen Ständer geschnitten und direkt an die Rückseite des Gehäuses aufgeklebt. Damit wird das WLAN-Modul zu einem stabilen Tischgerät, welches in einem Winkel von ungefähr 40° geneigt ist.

WLAN-Modul Bild 13 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.

SymbolSoftware

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).

SymbolInbetriebnahme

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:

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.

WLAN-Modul Bild 21 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.

Ein Klick auf Flash startet den Programmiervorgang.

WLAN-Modul Bild 22 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.

WLAN-Modul Bild 23 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.

Wichtig: Das D1 mini bleibt weiterhin am PC angeschlossen. ESP Easy startet jetzt auf dem D1 mini und führt eine Initialisierung durch. Gelegentlich bleibt die Software danach hängen, deshalb empfehle ich folgendes Vorgehen: Nach der Programmierung sollte man noch eine Minute warten und anschließend den kleinen Reset-Taster am D1 mini drücken.

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:

  1. 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.

  2. 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:

WLAN-Modul Bild 24 Das nebenstehende Bild zeigt das sehr übersichtliche Menü von Termite mit den optimalen Einstellungen. Der COM-Port muss natürlich angepasst werden.

WLAN-Modul Bild 25 Nach dem Schließen des Einstellungsfensters geht Termite auf Empfang und irgendwann wird eine Statusmeldung von ESP Easy eintreffen, die ungefähr alle 30 Sekunden gesendet wird. Die oberen 3 Zeilen im Bild zeigen diese Meldung. Jetzt ist eine gute Gelegenheit, die Kommunikation zu testen. Dazu kann man z.B. das einfache Kommando IP mit einem abschließenden Enter in die untere Eingabezeile des Terminals tippen. Wenn die Kommunikation funktioniert, dann erscheint eine Antwort wie im Bild.

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-Name
WifiKey WLAN-Passwort
WifiConnect

WLAN-Modul Bild 26 Auf diesem Bild habe ich nacheinander die Kommandos

WifiSSID WLAN-Name
WifiKey WLAN-Passwort

mit den Daten meines WLAN eingegeben und ESP Easy hat diese Eingaben korrekt registriert. Mehr passiert erst mal nicht.

WLAN-Modul Bild 27 Erst das dritte Kommando

WifiConnect

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.

WLAN-Modul Bild 28 Auf dem PC wird jetzt ein beliebiger Web-Browser gestartet und die IP-Adresse von ESP Easy in die Adresszeile eingegeben. Dabei sollte sich die Web-Oberfläche von ESP Easy so präsentieren wie im Bild. Da die Software ständig weiterentwickelt wird, sind hier kleine Abweichungen möglich.

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.

SymbolKonfiguration

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.

WLAN-Modul Bild 30 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.

Symbol Schritt 1 - Grundkonfiguration (unbedingt erforderlich)

Die Grundkonfiguration umfasst die folgenden Einstellungen: Gerätename, Gerätenummer, Passwortschutz und feste IP-Adresse. Diese Einstellungen befinden sich auf der Seite Config der Web-Oberfläche.

WLAN-Modul Bild 31 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.

Übrig bleibt noch das Feld Admin Password: Legt man hier ein Passwort fest, dann ist der Zugang zur Web-Oberfläche von ESP Easy zukünftig nur nach Eingabe der Zugangsdaten möglich.

WLAN-Modul Bild 32 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.

Wichtig: Werden Änderungen durchgeführt, dann bitte ganz nach unten scrollen und auf den Button Submit klicken. Damit werden die Änderungen gespeichert und die Seite baut sich anschließend neu auf. Das gilt übrigens für alle Einstellungen.

WLAN-Modul Bild 33 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).

Im Bild habe ich beispielhaft eine feste IP-Adresse vergeben. Nicht vergessen, anschließend auf den Button Submit zu klicken, damit die Änderungen gespeichert werden. An dieser Stelle ist noch ein weiterer Schritt notwendig: Damit die neue IP-Adresse wirksam wird, ist ein Neustart von ESP Easy notwendig. Zu diesem Zweck kann man entweder die Stromversorgung kurz unterbrechen, den kleinen Reset-Taster am D1 mini drücken oder wir erledigen das professionell über die Web-Oberfläche. Dazu wechseln wir auf die Seite Tools und klicken auf den Button Reboot. Unabhängig von der verwendeten Methode müssen wir jetzt im Browser die neue IP-Adresse eingeben und dann sollte sich unser WLAN-Modul wieder melden.

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.

Symbol Schritt 2 - Hardware-Einstellungen (optional)

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.

WLAN-Modul Bild 34

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.

Symbol 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.

WLAN-Modul Bild 35 Dieses Bild zeigt die optimalen Einstellungen für den NTP-Server und die Sommerzeit-Regel für Deutschland. Das WLAN-Modul holt sich die aktuelle Zeit vom angegebenen Server und setzt die Uhrzeit entsprechend der hier eingestellten Sommerzeit-Regel. Der Zeitserver wird übrigens ungefähr einmal pro Stunde kontaktiert, weitere Zugriffe auf das Internet erfolgen von ESP Easy nicht. Bitte auch hier nicht vergessen, die Einstellungen über den Button Submit ganz unten zu speichern.

Symbol Schritt 4 - Serververbindungen konfigurieren (optional)

Dieser Schritt ist nur erforderlich, wenn das WLAN-Modul mit einem MQTT-Server kommunizieren soll, z.B. mit dem Web-Modul. Eine solche Verbindung erlaubt die Übertragung aller vom WLAN-Modul erfassten Sensordaten an den MQTT-Server und die Weiterverarbeitung mit Node-RED. Umgekehrt können alle Informationen, die über Node-RED laufen, auch zum WLAN-Modul übermittelt werden.

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.

WLAN-Modul Bild 36 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.

WLAN-Modul Bild 37 Im oberen Teil der Seite muss in das Feld Controller IP die IP-Adresse des MQTT-Servers eingetragen werden. Hier habe ich beispielhaft die Adresse 192.168.1.222 verwendet. Das Feld Controller Port ist bereits richtig auf 1883 eingestellt.

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.

WLAN-Modul Bild 38 Im unteren Teil der Seite sind folgende Eingabefelder wichtig:

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.

Bei der Wahl der Topics für die MQTT-Nachrichten sollte man sich eine bestimmte Struktur angewöhnen. Ich verwende hierfür 4 Ebenen, die durch Schrägstriche unterteilt sind, dazu einige Beispiele:
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-Modul
Haus/Technik/esp-easy-01/LWT - übermitteln des Online-Status vom WLAN-Modul an andere Geräte

Symbol Schritt 5 - Angeschlossene Geräte einrichten (erforderlich für das entsprechende Gerät)

Für diese Einstellung ist die Seite Devices zuständig. Hier hat man die Möglichkeit, bis zu 12 Geräte (Sensoren, Taster, Zähler, Anzeigen, LEDs und anderes) einzurichten und zu aktivieren. Es sollten nur Geräte eingerichtet werden, die auch wirklich angeschlossen sind. Allerdings kann man auch Geräte vorab einrichten und erst später die Funktion aktivieren. Im folgenden Abschnitt beschreibe ich die Einrichtung aller Komponenten aus der Schaltung des WLAN-Moduls: LCD 4x20, Si7021, BME280, DHT22, DS18B20, LED und Taster.

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.

WLAN-Modul Bild 39 Die Eingabefelder beim Display haben folgende Bedeutung:

Name: Für jedes Gerät kann ein Name festgelegt werden, hier habe ich den schlichten Namen Display gewählt. Da der Name bei einigen Geräten als MQTT-Topic und Variablenname verwendet wird, sollten keine Sonderzeichen und Umlaute und auch kein Leerzeichen verwendet werden.

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.

Einrichten des Sensors Si7021

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.

WLAN-Modul Bild 40 Name: Hier wird der Name für den Sensor festgelegt, ich habe beispielhaft Buero gewählt. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.

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 Komma
Haus/OG/Buero/Luftfeuchtigkeit - übermittelt den Luftfeuchtigkeitswert mit einer Stelle nach dem Komma

WLAN-Modul Bild 41 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.

Einrichten des Sensors BME280

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.

WLAN-Modul Bild 42 Name: Hier wird der Name für den Sensor festgelegt, zur Abwechslung habe ich mal Schlafzimmer gewählt. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.

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

Einrichten des Sensors DHT22

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.

WLAN-Modul Bild 43 Name: Hier wird der Name für den Sensor festgelegt und da dieses WLAN-Modul später im Gaestezimmer1 installiert wird, bietet sich dieser Name an. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.

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.

Schaut man sich nach dem Speichern und Schließen der Einstellungen die Geräteliste an, dann erscheint auch der DHT22 mit seinen beiden 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/Gaestezimmer1/Temperatur - übermittelt den Temperaturwert mit einer Stelle nach dem Komma
Haus/OG/Gaestezimmer1/Luftfeuchtigkeit - übermittelt den Luftfeuchtigkeitswert mit einer Stelle nach dem Komma

Einrichten der Sensoren DS18B20, DS18S20 und DS1822

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.

WLAN-Modul Bild 44 Name: Hier wird der Name für den Sensor festgelegt, diesmal habe ich schlicht Zimmer1 verwendet. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden. Sind weitere Sensoren geplant, dann müssen diese anders benannt werden. Ich habe insgesamt 3 Sensoren angeschlossen und die anderen haben die Namen Zimmer2 und Zimmer3 bekommen.

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.

WLAN-Modul Bild 45 Hier sind die folgenden 3 Eingabefelder hinzugekommen:

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 - DS18S20
22 - 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

WLAN-Modul Bild 46 Dieses Bild zeigt noch einmal den Teil der Geräteliste mit den 1-Wire-Sensoren.

Symbol Schritt 6 - Display konfigurieren (optional)

Nachdem nun alle Sensoren funktionieren und Messwerte liefern, möchte man diese natürlich auch auf dem Display des WLAN-Moduls anzeigen. Dazu bietet ESP Easy eine spezielle Syntax an:

[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.
°CDies 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.

WLAN-Modul Bild 47 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.

Nach dem gleichen System können weitere Sensorwerte auf das Display gebracht werden, wobei man nicht nur auf die internen Sensoren beschränkt ist. Es gibt auch die Möglichkeit, Sensorwerte über MQTT zu empfangen und auf dem Display anzuzeigen. Das funktioniert natürlich nur, wenn ein MQTT-Server im Netzwerk vorhanden ist und die gewünschten Sensordaten dort verfügbar sind. Weiterhin muss die im Konfigurations-Schritt 4 beschriebene MQTT-Serververbindung ❶ eingerichtet sein.

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.

WLAN-Modul Bild 48 Name: Hier wird der Name für das Gerät festgelegt und da passt MQTT-In sehr gut.

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.

WLAN-Modul Bild 49 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.

Jetzt sollen die beiden über MQTT empfangenen Sensorwerte vom Außenbereich ebenfalls auf dem Display des WLAN-Moduls angezeigt werden. Dazu wird wiederum auf der Seite Devices die Display-Konfiguration über den Button Edit aufgerufen. Hier lösche ich jetzt das Eingabefeld Line 1, entferne also den bisherigen Eintrag %lcltime% und ersetze diesen durch folgendes Konstrukt:

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.

WLAN-Modul Bild 50 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).

Man kann nun die Displayzeilen 3 und 4 auf die gleiche Weise mit Daten füllen oder auch andere Informationen anzeigen. Für viele Dinge wie Datum, Zeit, Systeminformationen oder WLAN-Status können Systemvariablen verwendet werden. Dafür befindet sich auf der Homepage von ESP Easy eine Liste mit allen Systemvariablen. Es ist auch möglich, einige Status-Informationen über MQTT zu senden, somit lässt sich das WLAN-Modul über Node-RED überwachen. Dies werde ich im nächsten Konfigurationsschritt beschreiben. Weiterhin können auch von Node-RED aus Informationen direkt auf das Display des WLAN-Moduls gesendet werden. Dies beschreibe ich im Schritt 8 am Beispiel von Wetterdaten, die dann auf der Displayzeile 3 und 4 angezeigt werden.

Symbol Schritt 7 - Statusinformationen senden (optional)

Wenn das WLAN-Modul so eingerichtet wurde, dass Sensordaten über MQTT gesendet werden (Konfigurationsschritt 4), dann ist es auch möglich, einige Statusinformationen zu senden. Diese kann man z.B. mit Node-RED auswerten und auch über das Node-RED-Dashboard anzeigen. Damit lässt sich die Funktion des WLAN-Moduls (oder auch mehrerer WLAN-Module) zentral über Node-RED beobachten. Zunächst muss das WLAN-Modul für den Versand von Statusinformationen eingerichtet werden. Dafür ist es wieder notwendig, auf der Seite Devices in der nächsten freien Zeile auf Add zu klicken. Im Eingabefeld Device wird nun der Eintrag Generic - System Info ausgewählt. Auch hier erweitert sich wieder die Seite und es erscheinen zusätzliche Eingabefelder.

WLAN-Modul Bild 51 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.

Enabled: Mit dem Setzen dieser Option wird das Gerät nach dem Speichern der Einstellungen sofort aktiviert.

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.

WLAN-Modul Bild 52 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.

Formula: Dieses Feld bleibt normalerweise leer, kann aber in der uptime-Zeile sinnvoll genutzt werden. Die Laufzeit wird von ESP Easy in Minuten ausgegeben und bei längerer Laufzeit entstehen große Zahlen, die man nur schwer einordnen kann. Deshalb habe ich hier %value%/1440 eingegeben und das bewirkt, dass die Laufzeit in Tage umgerechnet wird.

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.

WLAN-Modul Bild 53 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.

In meiner Einstellung werden diese Werte alle 60 Sekunden aktualisiert und dann auch über MQTT gesendet. Dabei werden folgende Topics verwendet:

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

Im nachfolgenden Abschnitt werde ich beschreiben, wie diese Systeminformationen in Node-RED eingelesen und auf dem Node-RED-Dashboard dargestellt werden können. Dies setzt voraus, dass das Web-Modul komplett mit MQTT-Server und Node-RED in Betrieb genommen wurde. Es ist allerdings nicht zwingend erforderlich, mein Web-Modul zu verwenden, jedes andere System mit MQTT-Server und Node-RED wird auch funktionieren. Weiterhin sollte man schon ein wenig mit Node-RED vertraut sein. Ansonsten empfehle ich den Abschnitt Konfiguration von Node-RED in meiner Web-Modul-Beschreibung zu lesen.

WLAN-Modul Bild 54 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.

Zum Empfang der Daten werden 4 mqtt in-Nodes verwendet. Die empfangene Auslastung und der RSSI-Wert wird direkt an ein gauge-Node weitergegeben. Die beiden gauge-Nodes sind außerdem mit einem link in-Node verbunden. Dieser führt auf meinem System zu einem anderen Flow und hier werden Daten über die Schriftgrößen der virtuellen Anzeigen übermittelt. Dieser link in wird vermutlich zu einer Fehlermeldung führen und kann gelöscht werden. Eine spätere Neueinrichtung ist jederzeit möglich.

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.

Das Paket wlan-modul-node-red-v100.zip enthält den im Bild gezeigten Flow als Datei flow-status-wlan-modul.json und kann ü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 alle mqtt in-Nodes (Auslastung, RSSI, Status, Laufzeit):

ServerHier muss der in Node-RED verwendete MQTT-Server ausgewählt werden.
TopicDie Topics müssen gegebenenfalls an das eigene System angepasst werden.

Einstellung für gauge-Node Auslastung:

GroupFü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:

GroupAuch 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:

GroupAuch 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:

GroupAuch 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.

WLAN-Modul Bild 55

Dieses Bild zeigt das Ergebnis des Flows auf meinem Node-RED-Dashboard. Damit hat man alle wichtigen Daten des WLAN-Moduls im Überblick. Weitere Module werden später sowohl das gleiche Tab als auch die gleichen Groups verwenden, somit ergibt sich eine Art Tabelle und jede Zeile zeigt die Informationen eines WLAN-Moduls an.

Symbol Schritt 8 - Wetterinformationen zum WLAN-Modul senden (optional)

Während alle vorherigen Schritte mit vergleichsweise wenig Aufwand zu realisieren waren, gab es hier mehrere Hürden zu überwinden. Zunächst benötigen wir einen möglichst offenen und kostenlosen Wetterdienst, der die Daten in einer von Node-RED lesbaren Form liefert. Ich habe mich hier für openweathermap.org entschieden. Die von diesem Anbieter gelieferten Wetterdaten sind relativ zuverlässig, kostenlos und liegen im JSON-Format vor, welches gut in Node-RED verarbeitet werden kann. Weiterhin war es notwendig, einen function-Node mit einem JavaScript-Programm zu erstellen, der die Wetterdaten für ESP Easy aufbereitet. Schließlich müssen die Wetterinformationen an das WLAN-Modul übertragen werden und hier ist ein anderes Vorgehen als bei Zahlenwerten erforderlich.

WLAN-Modul Bild 56 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.

WLAN-Modul Bild 57 Oft ist der Wettertext etwas länger und passt nicht auf eine Zeile. In diesem Fall wird der restliche Wettertext auf die nächste Zeile geschrieben. Das hat allerdings zur Folge, dass die Winddaten gekürzt oder sogar weggelassen werden müssen. Ich habe die Möglichkeit eingebaut, die Anzeige der Winddaten zu konfigurieren. Dafür gibt es 3 Möglichkeiten: Man kann die Winddaten immer anzeigen (wie im Bild), oder aber nur anzeigen, wenn die zweite Zeile komplett zur Verfügung steht oder man verzichtet ganz auf die Winddaten.

WLAN-Modul Bild 58 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.

Auch dieser Flow steht als Download zur Verfügung. Bevor dieser in Node-RED importiert werden kann, muss noch ein Node installiert werden. Dazu klicken wir in Node-RED zunächst auf das Menü-Symbol und dann auf Palette verwalten. Es öffnet sich ein Fenster und hier wählen wir oben das Tab Installieren aus. In das nun sichtbare Suchfeld geben wir openweather ein und klicken dann in der Ergebnisliste beim Eintrag node-red-node-openweathermap auf Installieren. Es öffnet sich daraufhin ein Fenster mit einem Hinweis und hier klicken wir nochmals auf Installieren. Jetzt startet die Installation, die einige Sekunden dauert. Anschließend kann das Paletten-Fenster wieder geschlossen werden.

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 KeyHier 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 / CityHier 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 8Fü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 9Die 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:

ServerHier muss der in Node-RED verwendete MQTT-Server ausgewählt werden.
TopicHier 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/cmd

Dieses 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.

Symbol Schritt 9 - Verwendung von Taster und LED (optional)

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.

WLAN-Modul Bild 59 Die oberen 4 Nodes dieses Flows dürften bereits von den Wetterdaten bekannt sein. Der mqtt out-Node ganz rechts wird zusätzlich für die LED genutzt, da hier das gleiche Verfahren zum Senden von Kommandos an ESP Easy wie beim Wetter verwendet wird.

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:

GroupFü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.
TopicHier muss das Topic für den MQTT-Kommandokanal unseres WLAN-Moduls eingegeben werden.

Einstellungen für mqtt out-Node WLAN-Modul-1:

ServerHier muss der in Node-RED verwendete MQTT-Server ausgewählt werden.
TopicHier muss das Topic für den MQTT-Kommandokanal unseres WLAN-Moduls eingegeben werden.
QoSFalls dieser Node selbst erstellt wurde, muss hier 0 eingestellt werden.
RetainFalls 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/cmd

Fü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:

ServerHier muss der in Node-RED verwendete MQTT-Server ausgewählt werden.
TopicHier 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/Status

Einstellungen für function-Node Text anpassen:

Funktion, Zeile 1Hier kann der Text definiert werden, der bei nicht gedrücktem Taster auf dem Dashboard angezeigt werden soll.
Funktion, Zeile 2Hier kann der Text definiert werden, der bei gedrücktem Taster auf dem Dashboard angezeigt werden soll.

Einstellungen für text-Node Taster-Anzeige:

GroupHier 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.

WLAN-Modul Bild 60 Name: Dieses Gerät habe ich schlicht Taster-01 genannt. Der Name wird für das MQTT-Topic verwendet, deshalb sollten keine Umlaute und Sonderzeichen und auch kein Leerzeichen verwendet werden.

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.

WLAN-Modul Bild 61 Send to Controller: Ein Haken an dieser Stelle bewirkt, dass der Tasterstatus an den Server ❶ übermittelt wird.

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.

Mit den hier vorgeschlagenen Einstellungen wird der Tasterstatus unter dem folgenden Topic über MQTT gesendet:

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.

WLAN-Modul Bild 62

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.

SymbolBedienung

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.

SystemRebootDamit lässt sich das WLAN-Modul neu starten. Ein Klick auf diesen Button führt sofort einen Neustart aus, welcher nur wenige Sekunden dauert.
SystemLogDiese 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.
SystemInfoDiese Seite zeigt sehr viele Systeminformationen an.
SystemTiming statsHier 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.
SystemSystem VariablesHier erscheint eine Liste mit allen Systemvariablen und deren aktueller Wert.
WifiScanMit dieser Funktion kann man alle drahtlosen Netzwerke in der Nähe auflisten.
InterfacesI2C ScanDiese Funktion listet alle Geräte am I²C-Bus auf und kann bei Problemen mit I²C sehr nützlich sein.
SettingsLoadÜber diese Funktion kann eine Konfigurationsdatei geladen und somit eine frühere Konfiguration wiederhergestellt werden.
SettingsSaveDiese Funktion speichert die aktuelle Konfiguration als Datei.
FirmwareUpdate FirmwareDiese Funktion ermöglicht die Installation einer neuen Firmware, die vorher vom Download-Server geladen und entpackt werden muss.
FilesystemFactory ResetMit 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 Save

Nachdem 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 Load

Mit 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 Firmware

Diese 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/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. Nach dem Download entpacken wir die folgende Datei:

bin\ESP_Easy_mega_xxxxxxxx_normal_ESP8266_4M1M.bin

Jetzt 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.

SymbolSonstiges

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-Server
Host - 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.

WLAN-Modul Bild 63 Der MQTT Explorer zeigt auf der linken Seite alle Topics in einer übersichtlichen Baumstruktur an. Auf der rechten Seite findet man viele Informationen über das gerade ausgewählte Topic und hier lässt sich z.B. auch eine Historie in Diagrammform anzeigen. Es ist auch möglich, Nachrichten mit dem ausgewählten Topic zu senden. Dazu kann man die Nachricht eingeben und auf PUBLISH klicken (vorher die Option raw auswählen).

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.