Von evcc erfasste Daten langfristig speichern und aufbereiten


evcc ist eine Software die sich um das Aufladen von Elektroautos mit möglichst viel selbst erzeugtem Strom kümmert. Dabei wird der aktuelle Überschuss ermittelt und basierend darauf die Ladung gestartet. Die Höhe der möglichen Ladeleistung wird stufenlos von evcc in Echtzeit überwacht und an den Überschuss angepasst. Eine ausführliche Anleitung zu evcc findet ihr auch bei uns.
evcc zeigt in seiner schlichten Benutzeroberfläche aber nur die aktuellen Messwerte an. Langfristige Auswertungen sind aktuell in evcc noch nicht möglich. Wir zeigen euch in dieser Anleitung, wie ihr evcc einstellen könnt, um alle wichtigen Messdaten in einer Datenbank abzuspeichern. Diese könnt ihr dann jederzeit nach beliebigen Kriterien abrufen und auswerten. Bei dieser Anleitung gehe ich davon aus, dass evcc auf einem Raspberry Pi läuft, so wie von uns in der evcc Anleitung empfohlen.
Achtung: ihr benötigt für die InfluxDB2 zwingend eine 64bit OS-Version. Dies ist erst ab dem Raspberry Pi 3 (inkl 4) möglich. Ältere Raspberry Pi (1/2) mit 32 bit Betriebssystem werden leider nicht unterstützt.

Die Datenbank
Die bekanntesten Datenbanksysteme sind sicherlich MySQL oder die MicrosoftSQL. Für das Abspeichern von zeitbasierten Datensätzen eignet sich aber die InfluxDB besser, da diese genau auf diesen Zweck ausgelegt ist und sowohl die Speichergröße als auch die Abfragegeschwindigkeit bei zeitbasierten Datensätzen besser ist als bei den etablierten Datenbanken.
Konkret verwenden wir die InfluxDB 2, welche deutliche Verbesserungen zu älteren Versionen aufweist und durch die neue Webverwaltung bereits sehr viele Möglichkeiten besitzt. Die Datenbank wird von evcc nativ unterstützt, so dass nicht viel manuelle Konfiguration erforderlich ist.
Zunächst verbinden wir uns via SSH mit dem Raspberry Pi, ihr könnt aber auch lokal am Raspberry Pi das Terminal benutzen. Als erstes binden wir mit den folgenden zwei Befehlen das InfluxDB Repository ein:
sudo curl https://repos.influxdata.com/influxdata-archive.key | gpg --dearmor | sudo tee /usr/share/keyrings/influxdb-archive-keyring.gpg >/dev/null
sudo echo "deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/debian $(lsb_release -cs) stable main" | sudo tee /etc/apt/sources.list.d/influxdb.list
Nun aktualisieren wir den Paketmanager apt, welcher nun auch die InfluxDB Quellen umfasst:
sudo apt-get update
Anschließend installieren wir nun die InfluxDB:
sudo apt-get install influxdb2
Damit ist die Datenbank auch bereits installiert und als Systemdienst eingerichtet. D.h. die Datenbank startet sich automatisch auch nach einem Neustart des Systems. Die Weboberfläche der InfluxDB ist nun über den Browser mit der IP-Adresse http://localhost:8086 erreichbar, wobei ihr "localhost" durch die IP-Adresse eures Raspberry Pis ersetzen müsst.
Über die Weboberfläche erstellen wir uns zunächst ein Benutzerkonto. Wichtig ist hier das Access Token, welches für euren Benutzer generiert wird. Dieses müsst ihr euch notieren, denn wir benötigen das Token um uns aus anderen Quellen mit der Datenbank zu verbinden. Bei der Erstellung legt ihr auch die Tabelle in der Datenbank fest, in der die evcc Daten gespeichert werden sollen. In InfluxDB nennt sich die Tabelle "Bucket". Ich habe hier evcc_log gewählt.
In der evcc.yaml Konfigurationsdatei von evcc, die im Verzeichnis /etc des Raspberry Pi liegt müssen wir nun die Speicherung der Daten in die InfluxDB festlegen. Dazu fügen wir folgenden Abschnitt in die Datei ein. Ihr müsst die Daten noch an eure anpassen, welche ihr während der Benutzererstellung in der InfluxDB Weboberfläche eingegeben habt.
influx: url: http://localhost:8086 database: evcc_log token: PaS0lTC1CX5F3xxxx4PfpvMiQ== org: Elefacts.de
Nach einem Neustart von evcc landen nun alle ermittelten Messdaten automatisch in der InfluxDB. In der Weboberfläche der InfluxDB könnt ihr direkt prüfen, ob Daten aus evcc in eurer Bucket abgelegt werden. Dazu navigiert ihr über das seitliche Menü auf das Icon mit dem nach Oben gerichteten Pfeil der für Load Data steht. Hier wählt ihr über Buckets eure evcc Bucket aus, in meinem Fall evcc_log.
Ihr seht nun den Data Explorer. Wählt hier euer Bucket aus. Im Unterordner "_measurement" findet ihr alle von evcc erfassten Messwerte. Das sind recht viele. Als Beispiel habe ich hier einmal Gridpower ausgewählt. Anschließend klickt ihr auf value um die erfassten Messwerte von diesem Wert zu sehen. Die Abfrage schickt ihr über die rechte Submit Schaltfläche ab. Ihr solltet nun eine Statistik der von evcc abgelegten Messwerte für Gridpower angezeigt bekommen.

Neben der Submit Schaltfläche könnt ihr zwischen dem eben genutzem Query Builder und dem Script Editor, in dem ihr manuell die Abfrage schreiben könnt, umschalten. Das ist sinnvoll, weil wir uns hier die von uns erstellte Abfrage rauskopieren und in unsere Abfrageoberfläche überführen können.

Die InfluxDB Query für unser Beispiel der Gridpower würde folgendermaßen aussehen:
from(bucket: "evcc_log") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "gridPower") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
Wie ihr seht, lassen sich bereits in der InfluxDB Weboberfläche die evcc Messwerte komfortabel anzeigen. Unsere Gridpower Abfrage können wir über die Save As Schaltfläche oben rechts auch abspeichern und in ein Dashboard überführen.

Ihr solltet nun euer Dashboard sehen, auf dem ihr die GridPower aus evcc sehen könnt. Im Dashboard lässt sich komfortabel ein Zeitraum auswählen, zum Beispiel die Anzeige der Daten der letzten 24 Stunden.

Alle, die diese einfache Dashboard Ansicht der InfluxDB Weboberfläche bereits als ausreichend empfinden, könnten nun damit beginnen alle gewünschten Messwerte dem Dashboard wie beschrieben hinzuzufügen.
Mehr Möglichkeiten mit Grafana
Ich selbst nutze das InfluxDB eigene Dashboard allerdings nicht, da es für mich nicht alle Möglichkeiten bietet die ich gerne hätte. Die InfluxDB Weboberfläche nutze ich zwar regelmäßig, allerdings nur um mir Abfragen über den Query Builder zusammen zu bauen.
Für die Visualisierung setze ich auf eine weitere Software: Grafana. Grafana kann sich mit sehr vielen Datenquellen (allen voran natürlich MySQL oder MicrosoftSQL) verbinden und unterstützt auch nativ die vons uns genutzte InfluxDB. Die Installation von Grafana auf dem Raspberry Pi wird in der hauseigenen Dokumentation beschrieben und ähnelt im Vorgehen der Installation der InfluxDB.
Als erstes wird wieder das Repository der Software in unseren Paketmanager apt integriert:
sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Aktualisierung des lokalen Repositorys:
sudo apt-get update
... und Installation von Grafana:
sudo apt-get install -y grafana
Da sich Grafana im Gegensatz zur InfluxDB nicht selbst als Systemdienst registriert, müssen wir dies manuell erledigen:
sudo /bin/systemctl enable grafana-server
Gestartet wird Grafana dann über:
sudo /bin/systemctl start grafana-server
Die Weboberfläche von Grafana ist über http://localhost:3000 erreichbar, "localhost" muss wieder durch die IP-Adresse eures Raspberry Pis ersetzt werden. Hinweis: der erste Start des Grafana Servers kann bis zu 5 Minuten dauern. Die Weboberfläche ist anfangs ggf. nicht zu erreichen. Einfach etwas warten, dann sollte es gehen.
Für die erste Anmeldung nutzt ihr den Benutzer admin mit dem Passwort admin. Anschließend werdet ihr aufgefordert ein neues Passwort für den admin Benutzer festzulegen.

Damit wir aus Grafana auf unsere Daten, die in der InfluxDB liegen, zugreifen können, müssen wir zunächst eine Verbindung zur InfluxDB anlegen. Diese können wir über das seitliche Menü und dann Connections und Your connections anlegen. Im Suchfeld könnt ihr bequem nach der Schnittstelle zur InfluxDB suchen.
Hier ändern wir als erstes die Query Language auf Flux und dann geben wir die Verbindungsdaten des InfluxDB-Servers ein. Hier benötigt ihr zudem wieder euer InfluxDB Token.
Ist die Verbindung zur InfluxDB eingerichtet, können wir uns nun ein neues Dashboard erstellen und einen ersten Chart hinzufügen. Dazu klicken wir auf Add visualization und wählen als Datenquelle unsere InfluxDB aus. Ich verwende hier exemplarisch die identische Query, die wir auch in der InfluxDB genutzt haben und die weiter oben in diesem Artikel steht. Diese könnt ihr kopieren und dann in Grafana einfügen.
Ihr könnt nun den Chart optisch an eure Bedürfnisse anpassen und mit Apply speichern. Ihr gelangt dann wieder zu eurem Dashboard. Ganz wichtig: ihr müsst euer Dashboard zusätzlich selbst auch abspeichern, ansonsten gehen alle Änderungen verloren.
Wie bei evcc könnt ihr auch euer Grafana Dashboard auf Wunsch auch auf eurem Mobilgerät anzeigen, die Oberfläche ist responsiv aufgebaut. Grafana selbst könnt ihr natürlich nicht nur für evcc nutzen, sondern für sehr viele andere Datenquellen auch. Es lassen sich auch mehrere Dashboards erstellen, so dass ihr die Ansichten auf Wunsch nach Thematik trennen könnt.


Bei Links, die mit einem * gekennzeichnet sind, handelt es sich um Affiliate-Links, bei denen wir bei einem Kauf eine Vergütung durch den Anbieter erhalten.
Kommentare (4)

Stefan (Team)

@CamelCase: Danke, habe ich nachträglich eingefügt

CamelCase

Zunächst mal, das ist eine schöne Anleitung; Danke dafür.
In der Zeile für die Hinzufügung des InfluxDB-Repositories fehlt nur das "main" hinter "stable", damit "apt update" danach damit klar kommt.
In der Zeile für die Hinzufügung des InfluxDB-Repositories fehlt nur das "main" hinter "stable", damit "apt update" danach damit klar kommt.

Stefan (Team)

Hi Gottfried, Du benötigst wie im Artikel beschrieben dringend ein 64bit Betriebssystem. Ich vermute Du hast ein 32bit Betriebssystem auf deinem Raspberry Pi installiert. Für 32 bit gibt es kein Paket für die InfluxDB2. Wenn Du die "2" einfach weglässt, installierst Du die InfluxDB 1.x, die ist in der Verwendung völlig anders als ich es hier für die InfluxDB2 beschrieben habe!
Ich empfehle dir ein 64bit Betriebssystem auf deinem Raspberry Pi 3B zu installieren, der ist 64 bit fähig !
Ich empfehle dir ein 64bit Betriebssystem auf deinem Raspberry Pi 3B zu installieren, der ist 64 bit fähig !

Gottfried

Leider funktionierte die Installation von InfluxDB auf meinem Raspi 3B nicht mit den 4 Befehlen wie im Artikel beschrieben. Am Ende hieß es immer "Paket nicht gefunden". Nach Recherche auf https://repos.influxdata.com/debian/dists/bullseye/stable/ habe ich die 2 in der letzten Zeile weggelassen, also sudo apt-get install influxdb - und es ging!
Nun ist zwar InfluxDB installiert, aber viel weiter bin ich immer noch nicht: Mit "localhost:8086" bekomme ich nur 404 - page not found. Habe die config gecheckt, ob da ein anderer Port eingestellt ist, aber 8086 ist korrekt für http.
Was mache ich falsch????
Nun ist zwar InfluxDB installiert, aber viel weiter bin ich immer noch nicht: Mit "localhost:8086" bekomme ich nur 404 - page not found. Habe die config gecheckt, ob da ein anderer Port eingestellt ist, aber 8086 ist korrekt für http.
Was mache ich falsch????
Diesen Artikel kommentieren:
Hinweis:
- Nur Fragen / Antworten direkt zum Artikel
- Kein Support für andere Hard- oder Software !

E-Mail Benachrichtigung bei neuen Artikeln
