Der ESP8266
Da mittlerweile jeder einen digitalen Stromzähler hat. Musste ich diese Projekt mal etwas überarbeiten. Und bin über Tasmota gestolpert.
Eine Open Source Software die ich mir persönlich noch anpassen kann. Stramzähler auslesen und noch viele andere Sensoren nebenbei auslsen.
Und alles per Webseite anzeigen lassen oder per MQTT an einen MQTT Broker senden um die Daten weiter zu verarbeiten. Das klingt ja fast perfekt. Und so ist es auch !
Die Software lässt sich direkt von github herunterladen und ins VS Code öffnen. Platform IO erkennt die konfiguartion des Projektes und der erste build klappt auch ohne Probleme.
Und mit einem guten USB Kabel ist das Programm auch schon im ESP8266 und läuft auf Anhieb. Ggf. muss man in dem Sourcecode das ein oder andre Feature aktivieren oder deaktivieren.
Und dann läuft es aber. Auch verschiedene Displays lassen sich direkt an den Chip anklemmen und können einem die Informationen sofort und direkt darstellen.


Aktuell im Einsatz sind 2 DS18B20 SEnsoren für meine Fußbodenheizung,
ein AM2301 Sensor für Luftfeucht und Temperatur,
ein SHT31 für Temperatrur und Luftfeucht,
sowie ein SML Sensor an meinem Stromzähler um diesen imme im Blick zu haben.
Man kann sich alle Daten per MQTT an einen Broker schiken lassen um die Daten weiter zu verarbeiten.
Alte Version:
Ist ein sehr günstiger und leistungsfähiger Mikrochip mit Wlan on Board. Womit sich schnell mal ein Webserver oder andere kleine Projekte realisieren lassen. Man kann zum Beispiel Temperatur und Luftfeuchte erfassen und an seinen Webserver schicken. Oder den Stromzähler auslesen und den Verbrauch an den Webserver schicken. uvm.
Ich habe mit einer CNY70 IR-Lichtschranke meinen Stromzähler erfasst und schicke jede erkannte Umdrehung der Zählerscheibe an meinem Webserver. Bei mir ein Raspberry Pi 2. Die Daten werden dannn über PHP in eine Datenbank geschrieben. Und können über RRDTOOL grafisch dargestellt werden.
Den ESP8266 hab ich in LUA programmiert. NODEMCU & LUA ist für mich persönlich eine verständliche und einfache programmierung. Wo man schnell zum Ziel kommt.
Über den ESPlorer ist dazu noch eine schöne Umgebung für den ESP8266. Um in LUA zu programmieren.Man kann in dem ESPlorer verschiedene Befehle testen und seine LUA Scripte hochladen und auch wieder herunterladen von dem Chip.
Highlights meiner Software:
- Fernwartung des Chips, nicht von mir - https://www.instructables.com/id/ESP8266-WiFi-File-Management
- Stromzähler wird geloggt
- Eventuelle neustarts des Chips werden geloggt
- ADC wird automatisch angepasst, alle 5 Stunden
- Chip startet automatisch neu und macht einfach weiter, ohne Verlust von Daten
FLASHEN des ESP8266:
Man muss sich erst mal den MCU Flasher von https://github.com/nodemcu/nodemcu-flasher herunterladen. Und die passende Firmware kan man sich über https://nodemcu.readthedocs.io/en/master/build/ (Cloud Build Service) erstellen lassen. Nach dem man die benötigte Software heruntergeladen hat, kann es los gehen.
Da es manchmal Probleme beim Flashen der Software gibt. Empfiehlt es sich den Chip vorher ganz zu löschen. Dazu die folgende Parameter eingeben, Häckchen setzen, Adresse eingeben, dass sollte dann so aussehen im MCU Flasher:
Und dann auf Flash klicken, um den ganzen Chip erst mal zu löschen !
Danach alle Parameter löschen und die bin-Datei auswählen und an Adresse 0x0000 setzen. Die benötigte bin-Datei ist mit im Software Paket ! Das sollte dann so aussehen:
Die Software:
Die Software besteht aus 2 Teilen. Die Dateien servernode.lua, wifi_tools.lua, init.lua stellen ein Tool bereit womit man in der Lage ist über einen externen Webserver den Chip aus der Ferne zu warten.
Somit hab ich bei mir auf dem Laptop den virtuellen Webserver Vertigo installiert. Und kann jederzeit vom Laptop aus die Software hochladen, verwalten und den Chip resetten. Genauere Infos dazu finden Sie hier: https://www.instructables.com/id/ESP8266-WiFi-File-Management/
Der 2. Teil der Software ist dann mein eigentliches Programm um den DHT22 auszulesen, Stromzähler zu erfassen, usw.
Danach lädt man sich noch den ESPlorer herunter und führt ihn aus. Java wird benötigt !
Mit dem Esplorer werden dann alle Datein aus dem Software Paket in den ESP8266 übertragen, bis auf die sernode.lua und init.lua. Und erst wenn alles andere auf dem ESP8266 ist. Überträgt man die servernode.lua und zum Schluß die init.lua. Danach einmal den Reset Knopf am ESP8266 betätigen und schon sollte es laufen.
Wichtige Info zur Software:
In der Datei adc_min_max.lua stehen die beiden ADC Werte drin, wonach die Software den Sensor auswertet und entscheidet Roter Strich erkannt oder nicht. Das muss ggf. angepasst werden. Aber nur zu Anfang 1 mal. Danach wird es von der Software selbständig alle 5 Stunden aktualisiert und wieder in die Datei geschrieben.
Die Datei restart.log enthält nur eine Zahl und wird von der Software selber erstellt. Sie ist nur zum Debuggen gedacht, falls der Chip sich mehrfach neu starten sollte.
Und die Datei strom.log enthält den aktuellen Zählerstand ihres Stromzählers. muss ggf. angepasst werden.
Theoretische Grundlagen zum Stromzähler:
Mein Stromzähler macht 75 Umdrehungen für 1kW/h. Wenn ich Spitzenströme von 5kW/h habe dann macht die Zählerscheibe 375 U/Stunde. Das sind dann 6,25 U/Minute und 0,141 U/Sekunde. Bei 360° , was die Zählerscheibe nun mal hat. Sind das 30° was die Scheibe in einer Sekunde zurück legt. Da der ESP8266 alle 20ms die Scheibe abtastet und nach 5 Messungen einen Mittelwert bildet. Bekommen wir alle 100ms einen ADC Wert. Das entspräche bei unserem Beispiel 30°/10 = 3° auf der Zählerscheibe. Und so wird der Roten Strich sauber erkannt.
So sieht es dann auf meinem Webserver aus:
Da hatte ich mal viel Zeit und habe mich auf meinem Webserver mit html etwas ausgetopt. Und wenn noch ein paar Zeilen CSS dazu kommen sieht das dann so aus....
Das wurde von mir noch alles einzeln programmiert und jedes Element genau definiert in Größe und Form, so wie der Position.
Ich galube da gibt es heute einfachere Möglichkeiten, sowas umzusetzten...