Ich habe schon länger Tasmota WiFi-Steckdosen im Einsatz mit denen ich auch die Energie messen kann die aktuell verbraucht wird bzw. die bereits verbraucht wurde. Nur habe ich die Daten nie zentral erfasst sondern nur sporadisch auf die Werte geschaut. Das soll sich jetzt ändern und ich möchte für eine längere Zeit die vermutlich großen Verbraucher im Haushalt erfassen. Die Idee ist alles ganz einfach mit einem Raspberry Pi umzusetzen der einen Accesspoint öffnet und an dem sich die Funksteckdosen anmelden. So kann ich das Setup auch an Freunde ausleihen die hier ein Interesse an einem detaillierten Einblick des Energieverbrauches ihres Haushaltes haben. Ich habe über Twitter das super coole Projekt von @Alpensichtung gesehen das mit hier als Basis dient in das Thema hinein zu kommen. @Alpensichtung hat sein Projekt samt kurzer Anleitung auf GitLab veröffentlicht und dieses ist über die nachfolgende URL erreichbar.
GitLab: NOUS2INFLUX
Ich werde hier auf meinem Blog eine etwas ausführlichere Anleitung schreiben da ich nicht alles auf Anhieb verstanden hatte und das ein oder andere via Google nachlesen musste da ich mit der INFLUX DB sowie Grafana noch nicht vertraut bin. Daher hier alles etwas ausführlicher…
Influx DB installieren
Als erstes muss die Influx DB auf dem Raspberry Pi installiert werden. In einer Influx Datenbank werden dann die gemessenen Werte also der Energieverbrauch erfasst und gespeichert. Dazu jetzt die nachfolgenden Befehle über das Terminal Fenster des Raspberry Pi ausführen.
Befehl: sudo apt install influxdb
Befehl: sudo apt install influxdb-client
Befehl: sudo apt-get install python3-influxdb
Nach der erfolgreichen Installation der Influx DB folgt die Konfiguration so das eine DB angelegt wird und diese mit einem User samt Passwort angesprochen werden kann.
Beispiel Konfiguration für die Influx DB:
Der User der Datenbank soll „energy“ heißen. Das Passwort zu diesem User wird „energy_123“ lauten. Die Datenbank in die die Daten geschrieben werden erhalt den Namen „energytracker“. Jetzt nachfolgend die Befehle die nach einander ausgeführt werden müssen um alles wie beschrieben in der Influx DB anzulegen bzw. einzurichten.
Befehl: influx
Befehl: CREATE USER "energy" WITH PASSWORD 'energy_123' WITH ALL PRIVILEGES
Befehl: CREATE DATABASE "energytracker"
Befehl: GRANT ALL ON "energytracker" TO "energy"
Befehl: exit
Jetzt ist die Influx Datenbank soweit konfiguriert und prinzipiell können die ersten Daten in die DB „energytracker“ geschrieben werden.
Grafana installieren
Damit wir die gemessenen Verbräuche auch grafisch schön darstellen können wird in diesem Projekt Grafana verwendet. Daher muss Grafana auf dem Raspberry Pi installiert werden. Dazu wieder die nachfolgenden Befehle Schritt für Schritt auf dem Raspberry Pi über das Terminal Fenster ausführen.
Befehl: wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Befehl: echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Befehl: sudo apt-get update
Befehl: sudo apt-get install -y grafana
Befehl: sudo /bin/systemctl enable grafana-server
Befehl: sudo /bin/systemctl start grafana-server
Jetzt ist Grafana auf dem Raspberry Pi installiert und der Service ist ebenfalls gestartet. Das heißt ab jetzt ist es möglich sich am Grafana Backend anzumelden. Der initial vergebene Standarduser ist „admin“ und das Passwort für diesen User ist ebenfalls „admin“. Nach dem ersten Anmelden muss direkt ein neues Passwort vergeben werden. Hier noch einmal wie ihr die Grafana Installation über einen Web-Browser aufruft.
URL: http://<IP-Adresse>:3000/login
User: admin
Passwort: admin
Als erstes muss jetzt eine sogenannte „data source“ angelegt werden die Grafana mit der Influx DB verbindet. Über diese Data Source werden dann die Daten aus der Datenbank geladen und angezeigt. Hier hat Grafana wirklich eine gute Menüführung und mir ist es ziemlich leicht gefallen die Verbindung auf den ersten Versuch in anzulegen.
Über die folgende URL sind alle Grafana Data Sources einsehbar.
URL: http://<IP-Adresse>:3000/datasources
Für mich ist es die erste Installation von Grafana und bis jetzt klappt wirklich alles klasse.
Daten Sammeln
Jetzt ist alles soweit auf dem Raspberry Pi installiert und eingerichtet. Das bedeutet ab jetzt können die Daten von den Tasmota Funksteckdosen eingesammelt werden. Dazu wird das kleine Python Programm von @Alpensichtung gebraucht das ich euch unten noch einmal verlinke.
Hinweis: Speichert das Programm auf eurem Raspberry Pi ab und lest es in Ruhe durch. Die Dokumentation ist wirklich gut und ihr müsst eigentlich nur die User, Passwörter und IP-Adressen anpassen. Ab dann läuft es. Ideal ist natürlich noch wenn ihr die Bezeichnungen der Datensammelpunkte also Tasmota Geräte anpasst.
Download Python Programm: python3 ask_nous_BKW_V2.py
Das Programm führt ihr mit dem folgenden Befehl aus.
Befehl: python3 ask_nous_BKW_V2.py
Ab jetzt geht das Datensammeln los bzw. es wird der erste Eintrag in die DB geschrieben. Damit das Datensammeln z. B. jede Minute gestartet wird habe ich ebenfalls wie @Alpensichtung einen Eintrag in die crontab
gemacht und mir ein Start-Skript geschrieben das noch ein Log schreibt um Fehler bzw. die Ausgabe zu sehen.
Autostart des Datensammlers
Damit die Daten jede Minute gesammelt werden habe ich in die /etc/crontab
den folgenden Eintrag ergänzt.
* * * * * root bash /home/pi/energy_tracker/start.sh &
Bei mir liegt das Start Skript im Pfad /home/pi/energy_tracker/
und hat den Namen start.sh
Also wenn ihr das genauso machen wollt dann geht in das Homeverzeichnis hier pi
und führt die folgenden Befehle aus.
Befehl: cd ~
Befehl: mkdir energy_tracker
Befehl: cd energy_tracker
Befehl: nano start.sh
In das Start Skript „start.sh“ kopiert ihr die folgenden Zeilen. Achtet hier darauf, dass mein Python Programm im Beispiel den Namen energy_tracker.py
hat und nicht wie das Original Programm den Namen ask_nous_BKW_V2.py
hat.
#!/bin/bash
python3 /home/pi/energy_tracker/energy_tracker.py >> /home/pi/energy_tracker.log 2>&1 &
Jetzt mit Strg X
die Anpassung speichern. Dazu entsprechend bei der Nachfrage mit Y das Schreiben der Änderung bestätigen. Damit, dass Start Skript auch wirklich ausgeführt werden kann die nachfolgenden nicht ganz idealen Befehl ausführen.
Befehl: sudo chmod 777 start.sh
Jetzt einfach einmal den Raspberry Pi neu starten und über Grafana schauen ob die ersten Daten angezeigt werden können.
Hinweis: Wenn keine Daten in der Influx DB laden und Grafana nichts anzeigt kann es sich lohnen im Log /home/pi/energy_tracker.log
einmal nachzuschauen ob es Probleme gibt. Ist kein Log vorhanden dann passt etwas mit der crontab
nicht.
Damit ist soweit alles fertig und das Datensammeln kann voll automatisch erfolgen.
Zusammenfassung
Ich habe viel zu lange gewartet mit der Installation von einer Influx DB und Grafana. Ich bin sehr begeistert und werde jetzt von diversen Geräten den Stromverbrauch messen. Auch werde ich mir eine Anzeige bauen ob die Waschmaschine und der Trockner die im Keller stehen noch laufen also Energie verbrauchen oder bereits fertig sind. Hier bin ich einfach schon zu oft in den Keller gelaufen was ein paar Meter bedeutet im Mietsblock um noch mal 5 bis 10 Minuten warten zu müssen. Ob mir das Setup wirklich helfen wird Energie zu sparen glaube ich nicht da wir schon sehr sparsam versuchen zu leben. Aber mal sehen berichten werde ich dann wieder hier.
Beitragsübersicht Tasmota WiFi Steckdose als Energiemesser
Hier habe ich alle Beiträge rund um das Thema Tasmota und schaltbare WiFi Steckdosen zusammengefasst.
- WLAN-Steckdosen Gosund – Erfahrungsbericht
- WLAN-Steckdosen Gosund – öffnen und zerlegen
- Tasmota WLAN Steckdose mit INFLUX DB und Grafana
- Tasmota WLAN-Steckdosen Kalibrieren für die Verbrauchsmessung
- Sonoff Pow R2 WiFi Schalter mit Leistungsmessung 16A – Tasmota Umbau
- Drahtlose Wifi Schuko Steckdose umbauen auf Tasmota Firmware
- Energiekostenmessgerät für die Steckdose – Erfahrungsbericht
Danke der ausführlichen Beschreibung. Immer sehr hilfreich!
Ich stehe vor der Frage, wie speichere ich die „Yesterday“ Werte sinnvoll in Influx. Hast Du da eine Idee?
Wenn ich den Wert heute speichere, dann habe ich ja den „heute“ Zeitstempel.
Die Idee wäre kurz nach Mitternacht den gestrigen Wert abzurufen (1x reicht ja) und in Influx zu speichern.
Ich habe aber noch keine Idee, wie man bei Influx den Timestamp manipuliert, wenn das überhaupt geht.
Na ja ich würde den Wert kurz vor Mitternacht abfragen vielleicht so um 23:59:45 und speichern. In den verbleibenden 15 Sekunden wird schon nicht mehr viel passieren beim Verbrauch. Dann den NTP Client auf dem Raspberry Pi einrichten so dass die Uhrzeit am Pi bzw. Linux System immer richtig gestellt ist und dann sollte das doch recht gut passen?
Das wäre eine Möglichkeit. Wenn man dann den Fall hat, dass just in den letzten Minuten was offline ist, ist der Wert indes weg.
Vielleicht nehme ich auch eine Standard-SQL DB dafür und schreibe Datum / Value manuell am nächsten Tag.
Ja, das kann natürlich passieren. Aber dann schreibe doch zu dem gelesenen Wert den timestamp vom Vortag 23:59:59 in ein extra Feld.
Dann hast Du einen timestamp der automatisch angelegt wird (create_timestamp) und einen timestamp der zu Deinen Werten passt und den Du für die Auswertung nimmst.
Schau mal hier: influx db timestamp
Ja, das ist in jedem Fall sinnvoll. Guter Tipp.
Bleibe auf jeden Fall weiterhin so schriftstellerisch tätig wie jetzt – es ist eine Freude, gute und umfangreiche Anleitungen und Tipps im Internet zu finden. Das hilft sehr & dafür vielen Dank von mir 🙂