Inhaltsverzeichnis
ESPeasy
Allgemeines
Viele User suchen nach einer einfachen Lösung um den Volkszähler …
- ohne Programmierungskenntnisse
- ohne großen Zeitaufwand
- ohne große Kosten
- Platzsparend (z.B. in einer Unterputzdose)
- und dezentral
… mit Daten zu füttern.
Mit Hilfe von ESPeasy ist es möglich einen kleinen Chip mit WLAN in sein eigenes Heimnetz zu integrieren und Daten an den eigenen Volkszähler zu senden.
Hierfür sind wenige bis keine Programmierkenntnisse erforderlich. Zudem benötigt man kaum Hardware um zum Beispiel Temperaturen zu erfassen.
ESPeasy stellt für den ESP8266-Chip und den ESP8285-Chip eine Weboberfläche zur Verfügung, mit der es ganz einfach ist diesen Chip über WLAN anzusprechen und die GPIO Ports zu verwalten.
Möglichkeiten mit ESPeasy
Dank des Frameworks können über 40 verschiedene Sensoren erfasst werden.
Einige als Beispiel:
- DHT 11/12/22
- DS18B20
- INA219
- SHT30
- BME280
- s0 eines Zählers mitzählen
GPIOs über URL steuern
Zusätzlich können die GPIO´s des Chips einfach über die im Heimnetz hinterlegte IP Adresse angesprochen werden.
Beispiel: Man hängt an einen GPIO-Port ein Relais und kann dieses wie folgt schalten:
AUS schalten:
http:<ESP IP addresse>/control?cmd=GPIO,<pin>,0
AN schalten:
http:<ESP IP addresse>/control?cmd=GPIO,<pin>,1
Software
ESPeasy
Das ESPeasy-Projekt wurde vom Hersteller Names letscontrolit ins Leben gerufen. Aktuell gibt es verschiedene Versionen z.B. auch ESPeasyMega. Hierbei handelt es sich um eine aktuell noch in Entwicklung befindliche Version, welche in aktuellen Tests mit dem Volkszähler funktioniert. Weiteres hierzu im Bereich Einrichten.
Projektdokumentation
Das Projekt hat eine eigene Dokumentation. Zudem gibt es auch unter Github eine entsprechende Source: ESPeasy
Hardware
Was ist der ESP8266?
Hierbei handelt es sich um einen WLAN-Chip, welcher Standardmäßig schon GPIO-Ports mit bringt.
Der ESP8266 ist sehr klein und wird meistens auf kleinen Entwicklungsboards verbaut, etwa dem NodeMCU V2.
Es können Programme in der Arduino-Umgebung programmiert werden und dann auf den Chip geflasht werden.
ESPeasy ist nichts anderes wie ein solches Programm, welches aber schon von Haus aus alle benötigten Funktionen mit sich bringt.
Charakteristisch für den ESP8266 sind sein Gehäuse und die WLAN-Antenne, welche links vom Chip montiert ist.
NodeMCU V2
Der NodeMCU V2 zeichnet sich durch folgende Eigenschaften aus:
- WLAN-Onboard
- Arduino-Umgebung
- CP2102-Chip Onboard: Dank des USB-Chips kann der ESP8266 einfach per Micro-USB programmiert werden
- Für den CP2102-Chip muss nicht noch extra ein Windows Treiber installiert werden, im Gegensatz zum CH340-Chip-USB-Treiber (NodeMCU V3).
- Die GPIO-Ports werden auf Pin-outs geführt, welche direkt auf ein Breadboard gesteckt werden können
- Es ist ein 4096 kByte großer Speicher verfügbar
- Das NodeMCU ist eigentlich auch nur ein ESP8266-Chip, welcher aber um den CP2102 erweitert wurde um den ESP8266 einfach programmieren zu können
Wie man sieht ist der kleinere ESP8266-Chip auf der Grundplatine montiert, welche nebst noch über einen Micro-USB Anschluss verfügt:
Einrichten
Es gibt viele Möglichkeiten ESPeasy zu verwenden. Nur ein mögliches Szenario ist die Verwendung der NodeMCU V2-Platine, welche z.B. über Amazon zu erhalten ist.
Beispiel Temperaturerfassung mit NodeMCU V2 und DS18B20
Im folgenden Beispiel soll die Temperatur mittels 1-Wire Sensor DS18B20 an den Volkszähler übermittelt werden.
Kosten
- NodeMCU V2, ab ca. 3 Euro bei eBay; oder ca. 7,50 Euro bei Amazon
- DS18B20, bekannterweise ab ca. 1 Euro bei eBay
- 4,7 kOhm Widerstand, ab ca. 10 Cent
Somit kann später für unter 5 Euro eine Temperatur erfasst werden.
zusätzlich für eine Testschaltung:
- Steckbrücken, ab ca. 1,50 Euro
- Breadboard, ab ca. 2,65 Euro
Zeitaufwand
Wenn man sich eine Testschaltung mit Breadboard aufbaut, Schätzungsweise ca. 1 Stunde mit einbinden des ESP8266 ins WLAN.
Wenn man sich eine kleine Platine lötet, ca. 2 Stunden bis zum fertigen „Produkt“.
Beschaffung der Teile
Schaltung aufbauen
Spannungsversorgung realisieren
- Entweder über den 5V Micro-USB Anschluss des NodeMCU, oder
- mit einem 5VDC Netzteil (mind. 1A) über die Pins Vin und GND anschließen (Pins 1 und 2 direkt neben dem Reset-Schalter)
Flashen
Möglichkeit 1: Komandozeile
Nun muss der ESP8266 geflasht werden. Hierfür bitte von folgender Seite ESPeasyMega (aktuell noch in der Beta Version) herunterladen: ESPEasy_v2.0.0-dev12.zip.
In der heruntergeladenen .zip-Datei befindet sich die Datei „ESPEasy_v2.0.0-dev12_normal_4096.bin“.
Dies ist die binary, welche wir auf den ESP8266 flashen müssen. Dies machen wir über die Komandozeile mit der Datei „esptool.exe“, welche sich ebenso in der .zip-Datei befindet!
Wir legen uns diese zwei Dateien also auf unserem PC bereit und schließen den NodeMCU via USB an unseren PC an.
Über den Hardware-Manager überprüfen wir nun den COM-Port, an dem wir den NodeMCU an den PC angeschlossen haben.
Start - Ausführen - „cmd“ - als Administrator ausführen.
Nun flashen wir den NodeMCU mit dem folgenden Befehl:
esptool.exe -vv -cd nodemcu -cb 115200 -cp COM<dein_comport> -ca 0x00000 -cf ESPEasy_v2.0.0-dev12_normal_4096.bin
Bitte nicht vergessen in dem obigen Code den Comport einzusetzen. Das flashen kann bis zu einer Minute dauern.
Möglichkeit 2: GUI verwenden
Im Download-Paket z.B. von „ESPEasy_v2.0.0-dev12“ ist der GUI-Flasher FlashESP8266.exe enthalten. Diese Datei ausführen und dort nur den COM-Port und die passende Firmware-Datei auswählen und den Flash-Button drücken - fertig!
WLAN verbinden
Der NodeMCU ist jetzt bereit und kann von einem WLAN fähigen Gerät als AccessPoint erkannt werden.
Also jetzt WLAN auf dem Notebook oder Handy einschalten und nach einer SSID Namens „ESP_0“ oder „ESP_easy_0“ suchen.
Wenn die SSID in der Liste erscheint mit dieser Verbinden. Das richtige Passwort zum verbinden lautet: „configesp“.
Die Verbindung wird aufgebaut und es sollte sich automatisch in deinem Standartbrowser ein Fenster öffnen.
Jetzt wählst du die SSID von deinem Heimnetzwerk aus und trägst das Passwort deines WLAN-Netzwerkes ein.
Mit dem klick auf „verbinden“ startet das ESP jetzt eine Verbindung mit deinem Netzwerk.
Jetzt läuft eine Zeit von 20 Sekunden auf 0 herunter. Am Ende solltest du jetzt die neue IP deines ESPs in deinem Netzwerk angezeigt bekommen. Du kannst jetzt die WLAN-Verbindung zu deinem ESP trennen und dich wieder mit deinem Heimnetzwerk verbinden. Dort kannst du dich jetzt mit der vorhin angeigten IP zu deinem ESP verbinden und es parametrieren.
Parametrieren
Nachdem du nun deinen ESP im Netzwerk über den Browser aufgerufen hast, kannst du diesen über das Webinterface parametrieren. Nachfolgend werden nur die benötigten Einstellungen erwähnt.
Config
Main Settings
Unit Name: Name deines ESP´s im Netzwerk
Unit Number: Wenn du mehrere ESP´s verwendest muss hier jedes ESP eine eigene Nummer haben!
Admin Password: Passwort um das Webinterface zu sperren
Wifi Settings
SSID: Name deines WLAN-Netzwerkes
WPA Key: Passwort deines WLAN-Netzwerkes
IP Settings
Solltest du statische IP-Adressen in deinem Netzwerk vergeben, so kannst duhier deinem ESP eine feste IP vergeben!
Controllers
Bitte Controller Nr. 1 mit dem „Edit“ Button öffnen.
Controller Settings
Protocol: „Generic HTTP“ auswählen
Locate Controller: „Use IP adress“ auswählen
Controller IP: Bitte die IP deiner Volkszählerinstallation angeben
Controller Publish: middleware.php/data/%valname%.json?operation=add&value=%value% in das Feld eintragen
Enabled: Haken auf „true“ setzen
Devices
Bitte Device Nr. 1 mit dem „Edit“ Button öffnen.
Task Settings
Device: „Environment - DS18b20“ auswählen. Hier siehst du übrigens auch, welche Sensoren alle ausgelesen werden können!
Name: Beliebiger Name deines Temp.-Sensors, idealerweise z.B. die UUID deines Channels im VZ.
Enabled: Haken auf „true“ setzen
Sensor
1st GPIO: „GPIO-2 (D4)“ auswählen, weil wir den Temperatursensor in der Schaltung dort angeschlossen haben.
Device Address: Hier sollte nach dem ersten speichern die ID deines DS18B20 auswählbar sein!
Device Resolution: „12 Bit“ auswählen
Data Acquisition
Send to Controller ❶: Haken auf „true“ setzen
Delay: Hier stellst du ein, wie oft das ESP Temperaturwerte an deine VZ-Instalallation sendet.
Values
Name: hier muss die UUID deines Channels in deiner Volkszählerinstallation eingetragen werden. Bitte mit Bindestrichen!
Decimals: „3“ einstellen
Submit
!! Achtung es kommt in den neuen ESPeasy Version zu einer Fehlermeldung „Ungültige Zeichen“ diese kann ignoriert werden die UUID wird trotzdem verwendet
Tests durchführen
Solltest du alle Schritte richtig ausgeführt haben, kannst du nun über „Devices“ die gemessene Temperatur in einem grünen Feld angezeigt bekommen und die Werte sollten an deinen VZ übermittelt werden!
Beispiel s0 Zählung
Schaltung
5V Netzteil = D1mini (Eigenversorgung)
5V Netzteil = s0 = D1mini= Pin D7 (ggf einen Spannungsteiler oder einen Pull-down Widerstand nutzen)
Die 3,3V entsprechen auch nicht der S0-Norm EN 62053-31, https://de.wikipedia.org/wiki/S0-Schnittstelle
Laut Herstellerdatenblatt ist der ESP nicht für 5V freigegeben, aber in vielen Foren ist bereits bekannt das der ESP 5V mittelfristig ohne Schaden aushält an den GPIO Eingängen.
Bei der Eigenversorgung ist aber definitiv die 3V zu wählen ( der D1mini hat dafür eine 5V zu 3V Converter).
Software
Frontend
Im Frontend Kanal Anlegen Zählerstand und/oder S0.
ESPeasy
Wie im oberen Beispiel unter „Devices“ ein neuen Sennsor anlegen „Generic - Pulse counter“
Häkchen bei Enable setzen
GPIO Festlegen = Bsp D7
Typ = Delta/Total
Debounce Time „Entprellzeit“ hier den wert des Zählerdefinierte s0 Impulsdauer minus einiger Millisekunde verwenden
Bsp: Orno 1 TE 45A Zähler mit 90ms = Debounce Time 85ms
falls der Wert nicht angeben ist die Norm fordert minimal 30ms
Mode Type =Rising
Send to Controller setzen
Intervall festlegen = minimal 1sek ( Bsp 30sek)
UUID für Delta = S0 Frontend
UUID für Total = Zählerstand Frontend
eintragen
SUBMIT