PV-Überschussladen mit EVCC
Einführung
Dein WARP Charger ist mit EVCC kompatibel. EVCC ist eine Open-Source-Lösung, mit der du auf einfache Weise den Überschuss deiner Photovoltaik-Anlage zum Laden deines Elektroautos benutzen kannst. EVCC implementiert zudem weitere APIs, mit denen du zum Beispiel eine Hausbatterie bevorzugt, oder dein Elektroauto bis zu einem gewünschten Ladestand laden kannst. Weitere Informationen zu EVCC findest du auf evcc.io, detaillierte Dokumentation, ein Support-Forum und den Quellcode im GitHub-Repository.
Diese Anleitung zeigt dir, wie du EVCC aufsetzt, deinen WARP Charger mit EVCC verknüpfst und wie weitere Komponenten, beispielhaft ein Elektroauto eingebunden werden können. Hierfür benötigst du neben deinem WARP Charger nur einen Rechner, auf dem EVCC ausgeführt werden soll. Wir verwenden im Folgenden einen Raspberry Pi. EVCC kann auch auf anderen Plattformen installiert werden, aber da die Steuerung des WARP Chargers möglichst robust sein soll, bietet es sich an ein System nur für diesen Einsatzzweck abzustellen. Die notwendigen Zähler, die die Stromerzeugung einer PV-Anlage, sowie den Gesamtverbrauch des Hauses messen, werden wir zunächst simulieren.
Vorbereitung des Raspberry Pis
Zunächst musst du eine SD-Karte mit dem Betriebssystem für den Raspberry Pi vorbereiten.
Am einfachsten ist das mit dem Raspberry Pi Imager.
Der RPi-Imager lädt das ausgewählte Betriebssystem herunter und flasht es auf eine angeschlossene Micro-SD-Karte.
Wenn du mit der Benutzung einer Linux-Konsole vertraut bist, empfehlen wir das Raspberry Pi OS Lite, das im Imager
unter OS auswählen
-> Raspberry Pi OS (other)
zu finden ist. Falls du mit einer graphischen Oberfläche arbeiten
möchtest, kannst du das normale Raspberry Pi OS verwenden.
Mit der Tastenkombination STRG+SHIFT+X kannst du die erweiterten Optionen öffnen um z.B. den SSH-Server zu aktivieren,
oder ein WLAN-Netzwerk, die Spracheinstellungen und einen Hostnamen zu konfigurieren. Der Imager flasht nach Auswahl der SD-Karte und klicken auf
Schreiben
das Betriebssystem auf die Micro-SD-Karte.
Du kannst jetzt die Micro-SD-Karte in den Raspberry Pi einlegen und ihn booten. Nachdem du dich gegebenenfalls eingeloggt hast
(per SSH auf pi@raspberry
, oder in der Textkonsole als pi
; Passwort ist jeweils raspberrypi
), solltest du zunächst,
falls du die graphische Oberfläche gebootet hast, dem Einrichtungs-Wizard folgen.
In beiden Fällen solltest du danach in der Konsole mit sudo apt update
und sudo apt upgrade
das System aktualisieren. Danach kannst du den Pi mit sudo reboot
neustarten.
Installation des MQTT-Brokers
Die Kommunikation zwischen dem WARP Charger und EVCC erfordert den Einsatz eines MQTT-Brokers. Auf dem Raspberry Pi
kann mit sudo apt install mosquitto mosquitto-clients
der Mosquitto-MQTT-Broker installiert werden.
Mosquitto startet sofort und bei jedem Start des Systems automatisch.
Verknüpfen des WARP Chargers
(Mehr Informationen zur MQTT-Konfiguration findest du in der API-Dokumentation)
Im Webinterface des WARP Chargers kannst du jetzt die Verbindung zum MQTT-Broker konfigurieren. Hierzu musst du unter MQTT
die Verbindung aktivieren und den Host eintragen (raspberrypi
falls du ihn nicht geändert hast). Alternativ kannst du die IP-Adresse
des Pis verwenden. Diese kannst du in der Konsole mit ip -brief a
auslesen: unter eth0 die der LAN-Verbindung, oder unter wlan0 die der WLAN-Verbindung.
Danach kannst du die Konfigurationsänderung durch Klicken auf Speichern anwenden. Das Webinterface startet dann neu.
Um zu Testen, ob die Verbindung zum MQTT-Broker funktioniert, kannst du zunächst die Status-Seite des Webinterfaces prüfen. Der
Status der MQTT-Verbindung sollte auf Verbunden stehen. Falls das nicht der Fall ist, kannst du im Ereignislog nachsehen,
was das Problem ist. Als weiteren Test kannst du in der Konsole des Pis die empfangenen Nachrichten mitlesen:
mosquitto_sub -v -t 'warp/#'
liefert empfangene Nachrichten aller Wallboxen, die mit dem Broker verbunden sind.
Installation von EVCC
(Dieser Teil der Anleitung folgt grob der manuellen Installationsanleitung von EVCC. Alternativ kann EVCC als Docker-Container eingerichtet werden, wie hier beschrieben.)
EVCC kannst du von Github herunterladen: Per Browser von hier, oder alternativ auf der Konsole mit
wget https://github.com/andig/evcc/releases/download/0.68/evcc_0.68_linux_armv6.tar.gz
0.68 solltest du durch die gerade aktuelle Version ersetzen. Für den Raspberry Pi benötigst du die linux_armv6-Variante.
Auf der Konsole kannst du jetzt, falls du EVCC nicht neu installierst, sondern aktualisierst, eine eventuell vorhandene alte EVCC-Installation entfernen:
sudo rm -f /usr/local/bin/evcc*
Danach kannst du mit
sudo tar xvfz ./evcc_0.68_linux_armv6.tar.gz -C /usr/local/bin/
die gerade runtergeladene Version von EVCC installieren.
Mit evcc -v
kannst du testen, ob die Installation erfolgreich war. EVCC sollte dann seine Versionsnummer ausgeben.
Konfiguration von EVCC
(Dieser Teil der Anleitung folgt grob der manuellen Konfigurationssanleitung von EVCC.)
EVCC wird durch eine Konfigurationsdatei in YAML-Syntax konfiguriert.
Du kannst diese mit einem Texteditor deiner Wahl, auf der Konsole zum Beispiel mit nano
* anlegen.
Im Folgenden erstellen wir eine Minimalkonfiguration für den WARP Charger und erweitern diese sukzessive. Diese Datei nennen wir config.yaml
.
Die YAML-Syntax erfordert genaue Einrückung. Falls aus dem Kontext nicht klar ist, wie ein Block genau in die Konfigurationsdatei eingefügt werden kann, kannst
du die vollständige Konfigurationsdatei zu Rate ziehen.
Allgemeine Einstellungen
Zunächst werden einige allgemeine Einträge benötigt. Die Kommentate an den Einträgen erklären deren Bedeutung. Du musst sie aber nicht in die Datei übernehmen.
# Die Adresse, sowie der Port auf der das Webinterface erreichbar ist. # Wenn du Zugriffe nur vom Raspberry Pi aus erlauben willst, könntest du hier 127.0.0.1:7070 einfügen. uri: 0.0.0.0:7070 # Das Ladesteuerungs-Intervall interval: 10s # Log-Einstellungen. # Für die Einrichtung hilft es detailliertere Logausgaben zu bekommen. # Wenn alles funktioniert kannst du hier stattdessen log: error setzen. log: debug levels: core: debug lp-1: debug
Konfiguration des WARP Chargers
Danach kannst du die Konfiguration des WARP Chargers anfügen. Du brauchst dafür den Topic-Präfix des Chargers, der gesteuert werden soll. Diesen findest du im Webinterface unter den MQTT-Einstellungen. Wir gehen hier davon aus, dass er warp/AbC lautet.
chargers: - name: warp # Konfigurationsname der Wallbox type: warp # Typ der Wallbox broker: localhost # Hostname oder Adresse des MQTT-Brokers topic: warp/AbC # Der Topic-Präfix usemeter: true # true für WARP Charger Pro, false für Smart timeout: 30s
Falls du für die Verbindung zum Broker einen Usernamen und ein Passwort konfiguriert hast, kannst du diese wie folgt anfügen:
user: testuser password: testpass
Diesen Teil der Konfiguration kannst du jetzt testen. Mit:
evcc charger -c config.yaml
sollte EVCC sich zum MQTT-Broker verbinden und dann den aktuellen Ladestatus Charge status
sowie ob das Auto-Start-Verhalten Enabled
der Wallbox auslesen.
Falls du den Zähler eines WARP Charger Pro mit ausliest, werden zusätzlich Ladeleistung Power
und bisheriger Stromverbrauch Energy
ausgelesen.
Konfiguration der simulierten Stromzähler
Jetzt müssen Stromzähler konfiguriert werden. Für den reinen Test der Anbindung des WARP Chargers reichen simulierte Zähler: einen für die Stromerzeugung einer PV-Anlage, sowie einer, der den Strombezug des Hauses misst. Zur Konfiguration der echten unterstützten Zähler musst du die EVCC-Dokumentation konsultieren.
Einen simulierten Verbrauchszähler kannst du wie folgt zu deiner Konfigurationsdatei hinzufügen:
meters: - name: gridmeter # Name des Zählers. Falls du diesen änderst, musst du die site-Konfiguration auch anpassen. type: custom # Typ des Zählers power: # Wir simulieren die Leistung über ein Shellscript, das 1000 Watt zurückgibt. # Positive Werte bedeuten einen Strombezug im Netz. type: script cmd: /bin/sh -c 'echo 1000'
Die Zählerkonfiguration kannst du jetzt mit
evcc meter -c config.yaml
testen. EVCC sollte dir den simulierten Bezug mit Power: 1000W
ausgeben.
Den zweiten simulierten Zähler, der die Einspeisung einer PV-Anlage misst kannst du wie folgt dem Abschnitt meters hinzufügen:
- name: pvmeter type: custom power: type: script # Wir simulieren hier -10000 Watt. Negative Werte bedeuten eine Einspeisung ins Netz. cmd: /bin/sh -c 'echo -10000'
Auch diese Konfiguration kannst du mit
evcc meter -c config.yaml
testen. EVCC sollte dir jetzt den simulierten Bezug mit Power: 1000W
, sowie die simulierte Einspeisung mit Power: -10000W
ausgeben.
Site-Konfiguration
Jetzt musst du mit einer site-Konfiguration die Zähler verknüpfen.
site: title: Home # Anzeigename im Webinterface meters: grid: gridmeter # Name des Zählers, der den Strombezug misst pv: pvmeter # Name des Zählers, der die Einspeisung misst
Konfiguration des Ladepunkts
Als letzten Schritt musst du einen Ladepunkt konfigurieren. Dieser kann später genutzt werden um eine Fahrzeugkonfiguration mit einer Wallboxkonfiguration zu verknüpfen.
loadpoints: # Anzeigename des Ladepunkts im Webinterface - title: Mein erster Ladepunkt mode: pv # Standard-Lademodus. pv bedeutet, dass nur Photovoltaikstrom geladen wird. charger: warp # Konfigurationsname der Wallbox die verknüpft werden soll phases: 3 # Konfiguriert ob die Wallbox ein- oder dreiphasig angeschlossen ist.
Test der Gesamtkonfiguration
Jetzt sollte deine Konfigurationsdatei vollständig sein und du kannst EVCC starten:
evcc -c config.yaml
EVCC gibt dann diverse Debug-Informationen aus. Nach wenigen Sekunden sollte das Webinterface auf
http://raspberrypi:7070 erreichbar sein. Alternativ kannst du die IP-Adresse des Raspberry Pis verwenden.
Wenn alles funktioniert, kannst du in der Konfiguration die Zeile log: debug
auf log: error
ändern.
Dann werden nur noch Fehler ausgegeben.
Wenn du jetzt das Webinterface deines WARP Chargers öffnest, sollte Autostart deaktiviert wurden sein, da EVCC jetzt das Laden kontrolliert.
Gesamtkonfiguration
Hier die Konfigurationsdatei in ihrer Gänze:
uri: 0.0.0.0:7070 interval: 10s log: debug levels: core: debug lp-1: debug chargers: - name: warp type: warp broker: localhost topic: warp/AbC usemeter: true timeout: 30s meters: - name: gridmeter type: default power: type: script cmd: /bin/sh -c 'echo 1000' - name: pvmeter type: default power: type: script cmd: /bin/sh -c 'echo -10000' site: title: Home meters: grid: gridmeter pv: pvmeter loadpoints: - title: Mein erster Ladepunkt mode: pv charger: warp phases: 3
Automatischer Start von EVCC
Damit EVCC automatisch startet, wenn der Raspberry Pi neu bootet, musst du eine service-Datei für systemd anlegen: Lege dazu mit einem Texteditor deiner Wahl eine neue Datei an mit folgenden Inhalt an:
[Unit] Description=evcc After=syslog.target [Service] ExecStart=/usr/local/bin/evcc --log error Restart=always [Install] WantedBy=multi-user.target
und speichere sie als Root unter /etc/systemd/system/evcc.service
EVCC erwartet eine Konfigurationsdatei namens evcc.yaml
in /etc
. Du kannst als Root die oben erstellte config.yaml
als
/etc/evcc.yaml
abspeichern.
Teste dann ob alles geklappt hat, indem du die service-Dateien neu lädst:
sudo systemctl daemon-reload
Dann den EVCC-Service startest:
sudo systemctl start evcc
und prüfst, ob das geklappt hat:
sudo systemctl status evcc
Die Ausgabe sollte Active: active (running)
beinhalten.
Du kannst dann mit
sudo systemctl enable evcc.service
festlegen, dass EVCC beim Booten gestartet wird.
Erweiterungsmöglichkeiten
Dein EVCC-Setup kannst du vielseitig erweitern. Zum Beispiel können Photovoltaik- und Batterieinverter für Hausbatterien angebunden werden. Außerdem kann der Ladestand diverser Fahrzeuge ausgelesen werden.
Exemplarisch binden wir im Folgenden einen Renault Zoe ein. Hierzu musst du wieder deine EVCC-Konfigurationsdatei bearbeiten. Füge zunächst vor dem loadpoint-Block folgenden Block ein:
vehicles: - name: zoe # Konfigurationsname type: renault # Fahrzeugtyp title: Zoe # Anzeigename capacity: 52 # Akku-Kapazität in kWh user: user@domain.com # Deine myrenault-ID password test123 # Passwort deiner myrenault-ID
Danach kannst du den Zoe mit deinem Ladepunkt verknüpfen. Füge dazu folgendes in den loadpoint-Block ein:
vehicle: zoe # Der Konfigurationsname von oben soc: poll: # Wann soll der Ladestand abgefragt werden? mode: charging # Wie oft soll der Ladestand abgefragt werden? interval: 60m
Wenn du jetzt EVCC neu startest:
evcc -c config.yaml
bzw. sudo systemctl restart evcc
, falls du den Auto-Start schon eingerichtet hast,
sollten der Zoe, sowie die Ladeziel-Auswahl im Webinterface erscheinen.