Martin Rost
Publikationen

Effizientes Segeln mit Sonnenlicht:
Ein eAuto mit PV-Strom dynamisch geregelt laden

07.09.2023, Version: 0.1
http://www.maroki.de/pub/technology/eautoladenmitpv.html
Kontakt: martinDLT.rost@marokiDLT.de (mach hoch die Tür mach weg das DLT)

Durch das Regeln des Ladestroms für ein eAuto anhand des aktuellen PV-Stroms lässt sich ein eAuto schneller und gesicherter nur mit selbst produziertem PV-Strom laden. Diese Regelung durch ein Programm setzt voraus, dass Wechselrichter und Wallbox aufeinander abgestimmt sind. Wenn dafür seitens der Hersteller kein Programm bereitgestellt wird, aber die Wallbox und der Wechselrichter im lokalen Hausnetz per Internet-Browser erreichbar sind, dann war es in meinem Fall ein Leichtes, einen solchen Laderegeler selbsttätig zu programmieren.

Gliederung

Das Problem

Ich habe an meinem Haus eine PV-Anlage installiert (ca. 10kW) und fahre ein kleines eAuto mit einem Verbrauch von ca. 10kWh/100km im Sommerhalbjahresschnitt und einer arbeitstäglichen Pendelstrecke von ca. 50km. Zur PV-Anlage gehört außerdem ein Akku, oder um im etablierten Sprachgebrauch zu bleiben, eine Hausbatterie, mit einer Kapazität von knapp 10kWh.

Ich hatte schon länger den Wunsch, dass das Auto in Abhängigkeit von der verfügbaren Sonnenenergie geladen wird. Wenn sich die Sonne längere Zeit hinter einer Wolke befindet, und dadurch die Ladeleistung vom Maximum bei blauem Himmel auf oft weniger als 1/10 reduziert wird, soll der Ladestrom des Autos entsprechend verringert werden. Ebenso, wenn im Haushalt eine zeitlang erhöhter Strombedarf besteht, insbesondere durch Kochen am Feierabend. Das ist ein einfacher, auf der Hand liegender Wunsch, von dem man meinen könnte, er sei bereits auf dem Anwendungsniveau von reinen Consumern, die das Funktionieren von Technik allenfalls grob verstehen müssen, erfüllt. Doch das ist er nur in seltenen Fällen. Bislang läuft es ganz überwiegend ungeregelt wie folgt: Auto steht am Haus, muss geladen werden, Ladestrom ist eingestellt, Stecker in Wallbox und ins Auto rein, laden bis Autobatterie gefüllt ist. Größter Vorteil: Es ist ganz einfach.

Gelöst habe ich dieses Regelungsproblem mit einem Laderegler, den ich mit mäßigen Programmierkenntnissen selbst geschrieben habe. Die Tür zur Umsetzung dieses schon länger im Kopf anvisierten Projekts ging auf, nachdem ich gelesen hatte, dass man viele Wechselrichter für PV-Strom und Wallboxen im lokalen Netz per Webbrowser (präziser für Techniker*innen: per REST-API) auslesen kann. Damit war die tragende Kernidee für das Laderegler-Projekt geboren. Also: Man lese beide Geräte auf dem trivialen Niveau eines Webserveraufrufs aus, "analysiert" und rechnet auf den Daten mit Hilfe eines Programms ein wenig herum, bestimmt dadurch den neuen Ladestrom und schickt den neuen Ladestrom, wieder auf dem trivialen Niveau eines Webaufrufs, an die Wallbox.

Ohne eine Ladereglung stellt man an der Wallbox den Ladestrom für das eAuto ein - das kann bspw. der Ladestrom 10A sein - so dass das Auto bei der typischen 238V-Wechselspannung eines Hausstromnetz mit etwa 2.4kW in der Stunde geladen wird. 2.4kW ist eine geringe Ladeenergie, die typisch für eine PV-Konstellation ist, bei der eher wenige PV-Module installiert sind oder aber wenn die Sonne morgens oder abends tief steht oder sich immer mal wieder Wolken dazwischen schieben. Mein Laderegeler verbessert die Ladeleistung des Autos um etwa 20%, gemessen an einem perfekt eingestellten statischen Ladestrom, bei dem man zum Ladestart die durchschnittliche Sonnenstrahlung bspw. für die nächsten vier Stunden perfekt vorhergesagt hat. Was eher selten gelingt. Oder man ist in Gedanken viel zu häufig beim Laden des Autos und regelt, bspw. abends, wenn die Sonne langsam untergeht, von Hand nach. Eine derartig manuelle Bewirtschaftung der Autofahrenergie ist auf Dauer intellektuell kein würdiger Zustand.

Ein Laderegler kann viel Anforderungen automatisiert regeln. So sorgt er dafür, dass das Auto entweder gar nicht oder wenn, dann übergangsweise nur mit dem geringsten Strom aus dem Netz geladen wird. Und natürlich kontrolliert er das Laden, so dass das Laden beim Ladestand der Autobatterie von maximal 80% gestoppt wird. Ein solcher dynamisch den Ladestrom regelnder Laderegler ist uninteressant im Winter, da bezieht man den Ladestrom stetig ganz überwiegend aus dem öffentlichen Netz. Und wenn die Sonne von Ende Mai bis Anfang August häufig von einem perfekt blauen Himmel scheint, gibt es auch nicht allzuviel zu regeln. Ein Laderegler für ein eAuto ist insbesondere dann nützlich, wenn ein Sonne-Wolken-Mix vorliegt, sich die Sonnensituation ändert und die Ladeleistung entsprechend schwankt oder wenn parallel im Haushalt die Energieanforderungen schwanken. Ein Laderegler für ein eAuto sollte mit hinreichender "Sensibilität" bzw. mit einer guten Trägheit den Schwankungen des Energieangebots der PV-Module sowie des schwankenden Energiebedarfs im Haus folgen.

In hochintegrierten PV-Anlagen, in denen der Wechselrichter, die Wallbox und die Hausbatterie aus einer Hand oder zumindest aufeinander abgestimmt sind, sind oftmals diese Regelungsmöglichkeiten vorgesehen. Für solche hochintegrierten Anlagen bezahlt man allerdings auch viel Geld. Eine derart integrierte Anlage habe ich nicht. Ich habe die Komponenten einzeln gekauft und selbsttätig installiert und dadurch etwa 50% der Kosten gespart. Es fehlt dann halt an den Feinheiten, um die man sich selber kümmern muss. Und wenn irgendwann noch eine weitere wichtige Komponente wie bspw eine Wärmepumpe dazukommt, dann ist die neue Komponente in der Regel bei teuren PV-Anlagen aus einem Guss ebenfalls nicht in die Gesamtregelung der PV-Anlage integriert. Oder die Schnittstelle bzw. der Bus muss teuer nachinstalliert werden. Eine integrierte Gesamtlösung zur Energiebewirtschaftung eines Hauses sollte sinnvollerweise zudem von den im Haushalt gebräuchlichen Rechnern, optimal: per Webbrowser, und nicht nur mit einer App auf dem Handy, zugänglich sein. Vor allen Dingen sollte die Reglung nicht den vollkommen unplausiblen Umweg über den Cloudspeichers eines Herstellers nehmen (müssen), wie es sich so merkwürdig undiskutiert offenbar eingebürgert hat; und zwar gerade bei den hochintegrierten, teuren PV-Batterie-Wallbox-Installationen.

Es haben sich inzwischen technische Standards im "Internet der Dinge" herausgebildet, mit denen Geräte untereinander Informationen tauschen können. MQTT (Message Queuing Telemetry Transport) ist so ein Protokollstandard zur Kommunikation zwischen Geräten, auf den ich am Ende des Texte kurz zu sprechen komme. Meine Lösung setzt noch nicht auf MQTT auf. Es gibt außerdem Projekte aus dem OpenSource-Bereich, die einen Laderegler bereitstellen, ich werde auf EVCC (Electric Vehicle Charge Controller) ebenfalls am Ende kurz zu sprechen kommen. Ich habe keine Erfahrung mit EVCC, ich habe es nicht ausprobiert, weil mir der beschriebene Regelungsumfang zu gering wäre, ich mag mich irren. Mein Anliegen mit diesem Text besteht darin, jemandem mit Programmiererfahrungen bevorzugt unter Linux schneller aufs Gleis zu setzen, als es bei mir dauerte (insgesamt waren es viele Wochen, und ich finde immer noch Unzulänglichkeiten bei der Regelung). Wer nicht programmieren kann, sollte zusehen, EVCC ans Laufen zu bekommen.

Mein Laderegler läuft unter Linux unter der Programmiersprache Regina-Rexx, mit zusätzlichem Rückgriff auf ein python-Programm. Das ist alles speziell aufeinander abgestimmt auf meine Komponenten, mit u.a. mehreren Wechselrichtern. Es macht deshalb nur wenig Sinn, mein Rexx-Programm so robust und lesbar zu machen, dass andere Nutzer sich schnell zurecht finden können, um es auf ihre Komponenten anzupassen. Deshalb veröffentliche ich es nicht. Die Umsetzung meines Lösungswegs verlangt von Dir, dass Du selber programmieren kannst. Aber die Anforderungen an das Programmieren sind gering, wie Du gleich sehen wirst. Man muss nur ein wenig "Strings puhlen" können. Die Kosten liegen dafür bei Null, man hat einen großen Leistungsumfang und außerdem müssen keine Daten auf irgendeiner Cloud gespeichert werden.

Der Lösungsweg

Es ist möglich, die Daten aus der Wallbox (in meinem Fall handelt es sich um eine Wallbox von "go-e") und aus dem Wechselrichter ("Plenticore von Kostal"), der den Gleichstrom der PV-Module in Wechselstrom wandelt und die Hausbatterie ("Byd") steuert, auszulesen. Und zwar mit Standardtechniken, wie man sie aus dem Internet kennt, denn in allen Geräten laufen ... tätä ... Webserver. Wenn man das weiss, verengt sich die Fragestellung sofort auf auf die Frage: Wie komme ich an die Daten über das API (Application Programming Interface) der Geräte heran?

Kommen wir zunächst zur Wallbox. Es ist in meinem Fall - und wahrscheinlich auch in Deinem Fall - tatsächlich so einfach wie man es sich nur wünschen kann: Man startet den Webbrowser und gibt die IP-Adresse der Wallbox ein. In meinem Fall einer go-e-Wallbox lautet die URL für das Auslesen sämtlicher Einstellungen der Wallbox:

"http://[IP-Adresse der Wallbox einsetzen]/api/status"

Um gleich den Einstieg in die Programmierung zu finden, kann man auf die Konsole wechseln und die gleiche Abfrage mit einem

curl -s http://[IP-Adresse der Wallbox einsetzen]/api/status
starten. Anschließend werden sämtliche für den/die Nutzer*in der Wallbox zugänglichen Daten ausgegeben.

Die Ausgabe dieser Daten aus der Wallbox kann man auf der Konsole in eine Datei umlenken. Und dann schreibt man ein Programm, mit dem sich die relevanten Informationen aus der Datei rausfiltern lassen. Das Auslesen der Daten aus der Wallbox ist dabei das eine; das andere ist, ob man Daten in der Wallbox auch verändern kann, um die Eigenschaften der Wallbix zu ändern, also bspw. den Ladestrom zu erhöhen. Und ja, das funktioniert auf dem gleichen Wege, also: genau so einfach.

Der Beweis? Falls Du mal eben den Ladestrom von Deiner Linux-Rechnerkonsole aus an Deiner Wallbox, die idealerweise ebenfalls von go-e ist, ändern möchtest, probiere es doch mal wie folgt:

curl "http://[IP-Adresse einsetzen]/api/set?amp=6"

Meine Wallbox antwortet auf das Setzen des Ladestroms auf der Konsole mit:

"1 succeeded and 0 failed."

Gewonnen! Ein Blick in die App zur Wallbox zeigt nach dem Abschicken des Befehls den neuen Ladestrom: 6 Ampere.

Welche Kürzel in dieser Datei mit den Daten der Wallbox was bedeuten, ist dankenswerterweise dokumentiert, man findet alle Informationen dazu in einem github-Repository unter https://github.com/goecharger/go-eCharger-API-v2/. Falls das nicht dokumentiert wäre, käme man recht weit mit einem durch Internetrecherchen flankiertes Raten. Ich hatte mit dem Raten angefangen, bevor ich auf die Dokumentation stieß.

Damit war das wesentliche Steuerungsproblem auf Seite der Wallbox im Grundsatz gelöst.

Um von meinem Rechner aus per Web-API auf die Box zugreifen zu können, musste ich mit Hilfe der App vorher die Option freigeben, dass aus meinem internen Netz per API auf die Wallbox zugegriffen werden darf. Also: Kontrolliere, ob Deine Wallbox den API-Zugang ebenfalls in dieser Form möglich macht.

Dieser erste Schritt, nämlich vom Rechner aus den Ladestrom meines Autos mal eben nachregeln zu können, war schon den Recherche-Aufwand wert. Ein schnell geschriebenes bash-Script bietet bereits etwas Komfort, wenn man sich das Tippen der leicht fehleranfälligen Teile der obigen curl-Lösung nicht zumuten möchte.

Wechseln wir nun zur Seite des Wechselrichters, um die Energieangebotseite zu ermitteln. Der Zugriff auf den Wechselrichter und die Batterie, um deren Leistungsstände auslesen zu können, war etwas schwieriger zu lösen; im Prinzip ist die Lösung aber die gleiche.

Wieder findet man den Einstieg, indem man über den Webbrowser die URL der API des Wechselrichters aufruft, in meinem Falle eines Plenticore-Wechselrichters von Kostal lautet diese konkret:

http://[IP-Adresse einsetzen]/api/v1/

In meinem Browser werden die Daten dann in der folgenden Form aufbereitet angezeigt:


Zugriff auf Daten eines PV-Wechselrichters per Webbrowser

Auf der Konsole kommt man mit der obigen einfachen curl-Lösung wie bei der go-e-Wallbox und das Umlenken in eine Datei leider nicht weiter. Das Problem ist, dass der Wechselrichter eine Authentifizierung verlangt, bevor die Daten rausgegeben werden. Abhilfe verschafft hier ein python-Tool von Kilian Knoll, das einem dieses Auslesen des Kostal-Wechselrichters abnimmt. Man findet das Tool "kostal_RESTAPI.py" ebenfalls auf github (https://github.com/kilianknoll/kostal-RESTAPI). Damit das Programm, das offenbar unter Windows entwickelt wurde, bei mir lief, musste ich die erste Zeile

#!/usr/bin/env python
zu
#!/usr/bin/env python3
ändern und in den Zeilen 69 und 70 die IP-Adresse und Passwort meine Zugangsdaten für den Wechselrichter eintragen. Nach dem Aufruf wurden die Daten meines Wechselrichters dann wunderbar vom diesem Programm aufbereitet und angezeigt. Ich benutze das Programm aktuell nur, um die Daten meines PV-Wechselrichters auslesen zu lassen, das Programm kann aber mehr als nur das.

Nach dem erfolgreichen Aufruf von kostal-RESTAPI.py werden sämtliche Daten des Wechselrichters auf der Konsole ausgeben. Und wieder muss man jetzt nur die Ausgabe des Programms in eine Datei umlenken und ein Programm nutzen, mit dem man bestimmte Zeichenketten ausliest, bspw. die Zeichenkette, nach der die Angabe der aktuellen PV-Leistung angezeigt wird. Die Ausgabe ist sehr gut aufbereitet, die Interpretation der Daten selbsterklärend.

Damit war das zweite wesentliche Problem gelöst, um ein Programm für eine automatische Steuerung des Ladestroms anhand des aktuell erzeugten PV-Stroms an einer Wallbox für das eAuto schreiben zu können. Die Logik zur Automatisierung der Ladestromregelung der Wallbox durch den angebotenen PV-Strom dürfte nun klar sein: Man dumpt regelmäßig die Daten des Wechselrichters in eine Datei, macht dann ein paar Berechnungen, bestimmt dadurch den neuen Ladestrom für das eAuto und schickt mit curl die entsprechende Zahl an die Wallbox. Konkret in meinem Falle: Alle 15 Sekunden erfolgt ein Dump des PV-Wechselrichters, und das 2 Minuten lang. Dann wird ein Mittelwerts für die PV-Leistung in dieser Zeit gebildet, aus dem sich ein angemessen gemittelter Ladestrom für das Auto bestimmen lässt. Einen Mittelwert zu nehmen ist deshalb sinnvoll, um nicht allzu nervös auf jede einzelne Wolke zu reagieren, also für eine mäßige Änderung des Ladestroms zu sorgen. Die Hausbatterie, die chemisch robuster ausgelegt ist als das Ladenetzteil des Autos und die Chemie der Autobatterie, puffert die "Regelfehler" nach oben und unten während der Meßdauer weg.

Die Bilanzierung eines optimalen Ladestroms alle 2 Minuten geschieht jedoch nicht anhand der aktuellen Leistungsdaten der PV-Module, sondern anhand der Ladeleistung der Hausbatterie. Wenn die Batterie mit einem starken Ladestrom geladen wird, dann weil viel PV-Strom anliegt (konkret heisst das bspw. Laden mit > 240 W) und kein großer anderer Verbraucher Strom zieht. Anstatt die Hausbatterie mit diesem Strom zu laden, kann lieber die Ladeleistung für das Auto um +1 Ladestufe hochgesetzt werden, bspw. von 11A auf 12A (235V x 12A -> 2.8kW Ladeenergie). In meinem konkret Falle lädt das Auto an maximal 2 Phasen mit 16A pro Phase, was eine Maximalladeleistung von 2 x 16A x 235V = 7.5kW ergibt. Das Ladegerät ist in der Lage, während des Ladevorgangs von 1 und 3, in meinem Falle sind es wegen des Ladegeräts im Auto nur 2 Phasen, umzuschalten. Umgekehrt: Wenn die Batterie zu stark entladen wird, sollte der Ladestrom für das Auto verringert werden. Der geringste für das Auto verwertbare Ladestrom beträgt 6A auf einer Phase, mit einer entsprechenden Ladeleistung von ca. 1.4kW. Bei meinem Auto führt eine Stunde mit 1,4kW zu laden zu einem Plus an Reichweite von ungefähr 14km. An einem typischen Sonnentag im Sommer lädt das Auto über einige Stunden mit typischen Ladeleistungen zwischen 3 und 6kW, um die Mittagszeit an perfekten Sonnentagen auch mal längere Zeit mit 7.5kW pro Stunde.

Es ist allerdings angeraten, zwecks Batterieschonung wenn zeitlich möglich mit eher geringem Ladestrom zu laden und das Laden über den Tag zu strecken. Der geringst mögliche Ladestrom bei meinem Auto ecitigo beträgt wie gesagt 1.4kW, während bspw. ein Zoe erfahrungsgemäß 2kW Mindestladeleistung braucht und große eAutos, die an 3 Phasen geladen werden, mindestens 4.2kW. 1.4 kW ist eine Ladeleistung, die ich im Winter am Beginn der Nacht einstelle, so dass nach 10 Stunden das Auto von knapp über 30% auf ca. 80% geladen ist und sich damit im perfekt schonenden Laderange des Alltaggebrauchs eines eAutos befindet. (Wobei zusätzlich das Laden so gestartet wird, dass sich das Auto am Morgen zum absehbaren Abfahrtsbeginn noch am Ende des Lademodus befindet und die Autobatterie somit zum Beginn der Fahrt zumindest ein wenig vorgewärmt ist.)

Bei der Hausbatterie habe ich leider bislang keine Möglichkeiten der schonenden Ladung gefunden, wobei die Hausbatterie aufgrund ihrer Batteriechemie robuste Volladungen besser als das Auto wegsteckt. Und doch: Wenn es tagsüber Strom zu verteilen gibt, ist es sinnvoll, einen Teil der anliegenden Ladeenergie der PV-Module aus Gründen der Ressourcenschonung anstatt ausschließlich in der Hausbatterie auch in der Autobatterie, vom Laderegler gesteuert, zu speichern.

Praxiskontext für den Betrieb eines Ladestromreglers

Auch Regelung kostet Energie. Den Automaten zur Regelung des Ladestroms auf einem mit 300W energiehungrigen PC dauerlaufen zu lassen, ist zumindest in Zeiten knappen Stromangebots fragwürdig. Aber auch ein Laptop könnte auf Dauer zuviel Strom ziehen. Ein eher kleiner Laptop mit entsprechend kleinem Bildschirm zieht unter Linux mindestens ca. 20W/h (konkret bei mir: Lubuntu, gemessen an einem Sony Vaio (HP elitebook dagegen 50W)). Ein Kleinstrechner wie ein Raspberry-Pi verbraucht unter Last etwa 4W, ohne Last 3W/h (gemessen), im Dauerlauf als Server sind das somit etwa 80W/24h. Nachdem ich mich versichert hatte, dass mein Laderegelungsprogramm unter ReginaRexx auch auf einem Raspi läuft, hatte ich meinen alten Raspi mit einem aktuellen Betriebssystem versehen reaktiviert. Rein energetisch betrachtet könnte es sein, dass sich die Nutzung eines Raspi nicht rechnet, wenn man einen stromsparenden kleinen Laptop nur für die wenigen Stunden am Tag nebenbei auch zur Ladereglung verwendet. Aber es gibt genügend Szenarien, in denen ein Raspi als Haus-Server zu nutzen eine gute Lösung ist, bspw. wenn der Raspi für das hausweite Energiemanagement sinnvollerweise nicht nur typisch als File- oder Mediaserver sondern auch noch als MQTT-Broker läuft.

Wenn man einen Raspi mit einer SD-Karte benutzt, ist es nicht die beste Lösung, die durch die Laderegelung anfallenden vielen Schreiboperationen alle 15 Sekunden auf der Platte durchzuführen. Es empfiehlt sich die Nutzung einer RAM-Disk. Unter Linux ist eine RAM-Disk einzurichten trivial (https://wiki.ubuntuusers.de/RAM-Disk_erstellen/)

Wenn man einen Raspi als Server für einen Laderegler nutzt, dann sollte er von der Konsole des Standardrechners auf der Konsole des Raspi per SSH nutzbar sein. Dafür muss auf dem Raspi somit ein SSH-Server laufen (für Ubuntu-Systeme: https://www.ionos.de/digitalguide/server/konfiguration/ubuntu-ssh/). Man verbindet sich vom seinem Standardarbeitsrechner - unter Linux mit ssh, unter Windows mit putty - auf den Raspi und startet dort den Ladestromregler... allerdings: Wenn man nach dem Start dann den Raspi wieder verlässt, beendet sich das auf der Konsole aufgerufene Programm. Dieses Problem lässt sich mit dem Terminalverwaltungsprogramm "screen" lösen (Anleitung https://wiki.ubuntuusers.de/Screen/).

Und zuletzt braucht man noch eine komfortable Möglichkeit, Dateien zwischen Rechnern zu kopieren, wenn man bspw. das Laderegler-Programm auf seinem Alltagsrechner entwickelt. ssh erlaubt das Kopieren zwischen Rechnern mit scp. Komfortabler ist es, den Raspi in das Dateisystem seines Alltagsrechners einzubinden. Wenn Linuxsysteme unter sich bleiben, gibt es dafür NFS, wenn ein Windows-Rechner auf ein Linuxsystem zugreift, muss au dem Raspi ein SMB-Server laufen. Auch hierfür findet man viele gut verständliche Anleitungen im Netz. Wenn man den Samba-Server von Windows-Rechner partout nicht findet, liegt es in der Regel am Windows-Rechner, nicht am Raspi.

Ladestrategien, wenn Strom per hauseigener PV erzeugt wird

Wenn eine dynamische Laderegelung für ein eAuto an einer privat betriebenen PV-Anlage eines Eigenheims zur Verfügung steht, beginnt man, differenzierter über ein ökologisch - was ja weitgehend gleichbedeutend ist mit wirtschaftlich - sinnvolles Laden seines Autos nachzudenken. Ziel ist es, soweit wie möglich mit dem selbsterzeugten PV-Strom auszukommen und möglichst wenig externen Strom beziehen zu müssen. Ein Auto muss nur in seltenen Fällen sofort mit maximaler Leistung zur Verfügung stehen. Derart ökonomisch-ökologisch zu denken fällt nach dem Umstieg von einem Verbrenner vielen Personen zunächst schwer, die es beunruhigt, wenn das eAuto nicht sofort maximal voll geladen genutzt werden kann, zumal wenn die Reichweite des eAutos ohnehin nicht an die Reichweite eines Verbrenners heranreicht. Diese Unruhe ist ernst zu nemen, aber sie ändert sich. So wie sich das Fahren bei eAuto in den meisten Fällen ebenfalls ändert und vorausschauender wird, allein um die Rekuperation effektiv zu nutzen, so wird mit der Zeit bei den meisten Autofahrer*innen auch die Versorgung des Autos mit Energie weitsichtiger, umsichtiger, sensibler, klüger, ökologischer, dem angebrochenen Solarzeitalter angemessener. Für die Wahl einer guten Ladestrategie ist es sinnvoll, die Anforderungen und die Sonnensituation auch an den kommenden Tagen abzuschätzen, insbesondere wie die Situation früh morgens oder nach Feierabend aussehen wird.

Die triviale "Ladestrategie" des Fossilzeitalters entspricht dem trivialen Vorgang des Öl-Tankens: Ladestrom einstellen, Stecker ins Auto stecken, Auto lädt, bis die Ladung von selbst stoppt, weil die Batterie des Autos maximal geladen ist. Autofahrer*innen ohne Eigenheim können meist nur diese "Ladestrategie" verfolgen. Im energetischen reflektierten Alltag aber muss das wie gesagt ja nicht so sein. Das Kochen oder Waschen oder das Herstellen heissen Wassers oder das Heizen mit der Wärmepumpe hat im Alltag Vorrang und "darf" das Autoladen in der Regel vollkommen unproblematisch verzögern. Wer mal gesegelt ist, weiss, dass man vorausschauend und den Schwung, also pyhsikalisch die Trägheit, einrechnen kann, um sich ökologisch zu bewegen. eAutofahren wird zum effizienten Segeln mit Sonnenlicht.

Bei Autofahrer*innen, die schonend mit ihren Elektro-Ressourcen umgehen, ergibt sich bei der primitiven Ladestrategie zudem das Problem, das Laden der Autobatterie rechtzeitig beim Ladestand von maximal 80% zu stoppen. Wie sich inzwischen allseits herumgesprochen hat, ist für die optimale Lebensdauer einer Batterie der Ladestand von 50% optimal. Im Alltag spricht vieles dafür, unter anderem die Ladekurve bei einem Aufladevorgang, der nicht linear verläuft, ein Auto bis auf 80% des Maximalladung aufzuladen. Meine Lade-App gestattet diese 80%-Anforderungen nur kompliziert umzusetzen, 80% stehen zum beabsichtigten Fahrbeginn zur Verfügung, das Auto beginnt deshalb typischerweise nicht sofort mit dem Laden. Beim Ladebeginn an der Wallbox musste ich bislang zudem immer kurz überschlagen, wie lange das Auto von jetzt an ungefähr laden müsste, um auf 80% zu sein, um mir dann einen Wecker zu stellen, der mich zum richtigen Zeitpunkt an das Stoppen des Ladevorgangs per App erinnert. 10% Laden entspricht bei meinem Auto ungefähr die Lademenge von 3kW (die Batterie des Fahrzeugs hat eine Kapazität von knapp 32kWh netto). Auf diese ziemlich unkomfortbale Weise habe ich rund drei Jahre mein Auto in der Regel auf 80% laden lassen. Insofern war es bereits eine Verbesserung des Komforts, mit der ersten Version des selbst geschriebenen Laderegelprogramms die Wallbox anweisen zu können: "Lade ab jetzt mit einem bestimmten Dauerladestrom und stoppe in 2 Stunden und 30 Minuten, wenn voraussichtlich 80% erreicht sein werden." Dafür reichen bereits 30 Zeilen Programmiercode mit den oben ausgewiesenen Möglichkeiten.

Wenn man im Früh- oder Spätsommer bspw. gegen 17 Uhr zuhause ist, hat man im Norden Deutschlands typisch noch 2 Stunden nutzbares Sonnenlicht. Die Hausbatterie wurde tagsüber auf 100% Ladestand geladen. Eine sinnvolle Ladestrategie nutzt dann diese 2 Stunden Rest-Sonnenlicht und entlädt zusätzlich auch die Hausbatterie so weit, dass noch genügend Strom für die Nacht bleibt. In meinem Falle müssen am Feierabend für die Pendelstrecke des nächsten Tages zwischen 5 und 6 kW nachgeladen und am Beginn der Nacht noch 3kWh (ca. 30%) in der Hausbatterie enthalten sein, das bedeutet konkret: Das Laden aus der Hausbatterie sollte stoppen, wenn die Hausbatterie einen Ladestand von 50% erreicht hat, weil die Batterie so konfiguriert ist, dass sie bis maximal 20%-Restladestand entladen werden kann. Weiterer Strombedarf müsste dann aus dem öffentlichen Neutz erfolgen. Das Laden auch aus der Hausbatterie lässt sich mit dem Laderegler dadurch einstellen, dass der eigentlich dem Sonnenstand angemessene Ladestrom, abhängig vom Ladestand der Hausbatterie, um mehrere Ladestufen zu hoch eingestellt wird: Solange der Ladestand der Batterie > 90% ist, stellt der Laderegler einen um + 3 Stufen zu hohen Ladestrom ein; bei Ladestand > 80% sind es noch + 2 Stufen, beim Ladestand > 70% noch + 1 Ladestufe. Und bei Ladestand 50% der Hausbatterie wird das Laden spätestens beendet, zumeist ist die angeforderte Lademenge für das Auto bereits zuvor erreicht worden, so dass die Batterie nach dem volständigen Autoladen zu Beginn der Dunkelheit auch im September noch einen beruhigenden Ladestand zwischen 65% und 75% aufweist.

Am Wochenende, wenn man den ganzen Tag Zeit hat, das Auto zu laden, stellen sich dagegen andere Anforderungen: Da sollte mit dem Laden des Fahrzeugs schon morgens begonnen werden. Die Hausbatterie sollte einen Mindestladestand erreicht haben und es sollte vor allem genügend PV-Leistung anliegen, bevor das Autoladen beginnt, in meinem konkreten Falle also mindesten 1.4kW. Ende August kann das Laden mit 1.4kW in meiner Konstellation um etwa 8 Uhr beginnen, und gegen 10 Uhr könnte bereits die volle Ladeleistung von 7.4kW erreicht sein. Je höher die Sonne an einem perfekten Sonnentag steigt, desto höher kann der Laderegler den Ladestrom nachregeln. Wenn zwischendurch andere Stromgroßverbraucher eingeschaltet werden, wird für diese Zeit der Ladestrom des Autos automatisch verringert.

Manchmal ist es allerdings wichtig, dass das Fahrzeug zu einem bestimmten Zeitpunkt über einen gesicherten Ladestand verfügt, weil man bspw. zu einer bestimmten Zeit zu einer längeren Tour aufbrechen möchte. Dann sollte der Laderegler einen gesicherten Mindest-Ladestrom einzustellen gestatten, der dafür sorgt, dass bis zum gewünschten Zeitpunkt genügend Strom nachgeladen wurde, unabhängig vom Stand der Hausbatterie oder des Sonnenlichts. Wenn viel Sonnenenergie in dem Zeitraum zur Verfügung steht, wird der Ladestrom automatisch höher eingestellt und das Laden dadurch frühzeitiger beendet. Zu Beginn relativ schnell zu laden, auch auf Kosten des Ladestands der Hausbatterie, ist dann sinnvoll, wenn unklar ist, wie sich die Wolkenlage oder der Energiebedarf im Haushalt in den kommenden Stunden des Ladens entwickelt.

Manchmal ist es umgekehrt angeraten, dass sowohl das Fahrzeug als auch die Hausbatterie geladen werden. Dann sollte der Laderegler einen gesicherten Maximal-Ladestrom für das Auto einzustellen gestatten, während der Ladestrom automatisch verringert wird, wenn die Sonne zu wenig Energie liefert. Diese Option ist insbesondere relevant, um die Haus- und Autobatterien bei besonders hohem PV-Strom mit geringeren Strömen jeweils relativ schonend zu laden. Wenn die Hausbatterie bspw. mit 8kWh PV-Leistung geladen werden würde, stresst das die Batterie unnötig, dann sollte wenn möglich eher das Auto geladen werden.

Manchmal hat man zwischen Fahrten an einem Wochenendetag ein paar Stunden Zeit. Dann möchte man für die Dauer der Pause zuhause komfortablerweise nur die Dauer der Pause bzw. des Ladens angeben müssen. Der Laderegler sorgt dann dafür, dass für die angegebene Ladedauer entsprehend der Sonnensituation mit dem optimal angepassten Ladestrom bis maximal 80% Ladestand Autobatterie geladen wird.

Eine weitere Option eines Ladereglers kann sein, das Laden des Fahrzeugs für einige Zeit zu unterbrechen, solange wenig Sonne scheint und gleichzeitg im Haushalt zuviel Strom angefordert wird, etwa durch Kochen und Backen, Wäschewaschen und Wäschetrocknen, Staubsaugen, Kaffeekochen oder den Föngebrauch sowie eine Wärmepumpe, die das Duschwasser aufheizt. Zumeist ist die Autobatterie der mit Abstand größte Akku im Haushalt, so dass dessen Laden die meiste Flexibilität bietet. Der Haushalt geht vor und das Auto wird nur mit "echtem" PV-Überschussstrom eines Haushalts geladen.

Ein Laderegler sollte außerdem zeitgesteuert laden können, und bspw. das Laden morgens um 2 beginnen, damit für die Fahrt zur Arbeit das Auto mit vorgewärmter Batterie bereitsteht. Den beginn einer Ladezeit einzustellen kann auch Sinn machen, wenn man aufgrund der Wettervorhersage weiss, dass das Wetter am Nachmittag sonniger sein soll und bis dahin lieber noch die Hausbatterie laden lässt.

Und zuletzt: Ein Laderegler kann an der Wallbox lauern, ob ein Ladekabel eingesteckt wurde und dann komfortabel ein Standardladeprogramm ausführen. In meinem Falle startet abends das Programm mit den Parametern, um die Strommenge für die Pendelstrecke des nächsten Tages nachzuladen.

MQTT und ECVV

Meine Lösung ist schlicht, aber sie funktioniert seit wenigen Wochen zuverlässig, die Regelungsergebnisse sind gut. Obwohl von mir selber programmiert, überraschte mich die "Regelungskonsequenz" des Automaten. Von Hand gesteuert agierte ich zumeist zu vorsichtig, das heisst mit einem zu geringen Ladestrom aufgrund des Primats zu vermeiden, dass externer Strom aus dem Netz bezogen wird. Die bereits angesprochene Verbesserung um etwa 20% bezieht sich darauf, dass das Auto bei Sonne-Wolken-Mixsituationen pro Stunde etwa 10 Minuten früher geladen ist als bei einem sehr gut eingestellten statischen Ladestrom. Durch die Überwachung während des Ladens ist vor allem "das Risiko" verringert, dass externer Netzstrom bezogen wird.

Eine professionellere Lösung zur Laderegelung würde MQTT nutzen. Einen guten Einstieg in MQTT findet sich bei Helmut Karger (https://blog.helmutkarger.de/balkonkraftwerk-teil-9-mqtt-und-rest-api/. Die Kernidee von MQTT ist, dass ein zentraler MQTT-Server, der "Broker", alle Daten von Geräten per MQTT annimmt, und er diese Daten für andere Geräten zentral abrufbar macht. Ich habe auf dem Raspi einen MQTT-Server installiert, die goe-Wallbox liefert Daten per MQTT an (die Option musste per App freigegeben werden). Doch das allein reichte noch nicht, denn es war, für mich unerklärlich, keine Option vorgesehen, in der ich die IP-Adresse meines lokalen MQTT-Brokers eingeben konnte. Der Durchbruch zum Auslesen Wallbox per mqtt kam, als ich mit der bewährten "CURL-Methode" von der Konsole aus den entsprechenden Eintrag setzte:

curl 'http://[IP-Adresse des MQTT-Brokers]/api/set?mcu="mqtt://[IP-Adresse der Wallbox]:1883"'

Leider habe ich bislang keine Lösung gefunden, auch den Kostal-Wechselrichter per MQTT auszulesen. Insofern bleibe ich vorerst bei meiner aktuellen Dump-Lösung.

Eine Bitte

Es wäre es sinnvoll, eine Liste mit Wallboxen und Wechselrichtern anzulegen, die auf diese hier vorgestellte Weise per REST-API zugänglich sind. Wenn Du bspw. über einen Wechselrichter von Fronius, SMA, Growatt usw. oder eine andere Wallbox als die von goe verfügst und deren API-Zugänglichkeit auf die oben vorgeführte Weise getestest hast, würde ich mich sehr über eine kurze Notiz per Mail freuen. Der Test ist ja trivial, in wenigen Sekunden durchzuführen, eine Mail an mich dauert keine Minute. Ich bin gerne bereit, hier eine Liste mit den unterschiedlichen Gerätschaften zu erstellen und aktuell zu halten, die auf diese Weise les- und steuerbar sind. Und dann wäre ich auch geneigt, mein Programm zu veröffentlichen.


Tab 1:Wallbox-Zugänglichkeit per Rest-API
WallboxREST-API
go-ehttp://[IP-Adresse der Wallbox einsetzen]/api/status


Tab 2: PV-Wechselrichter-Zugänglichkeit per Rest-API
WechselrichterREST-APIProgramm zum Auslesen
Kostal "Plenticore"http://[IP-Adresse einsetzen]/api/v1/kostal_RESTAPI.py
Hoymiles, DTUhttp://[IP-Adresse einsetzen]/api/livedata/statusOpenDTU


Die Hauptschwäche meines Ladereglers besteht darin, dass er nicht seinerseits per Webbrowser sondern nur von der Konsole aus bedient werden kann. Das ist für die anderen Mitglieder meines Haushalts eine zu große Hürde. Ich wäre deshalb ebenfalls sehr dankbar, wenn mir jemand php-Code anlieferte, innerhalb dessen sich der Laderegler mit flexibler Übergabe von Optionen ausführen ließe. Noch schöner wäre es vermutlich, gleich den gesamten Laderegler in php zu programmieren... voila?

Eine weitere Schwäche des Konzepts ist es, dass es keinen direkten Zugriff auf den Elektrostatus, insbesondere des Ladestand, des Fahrzeugs gibt. Hier gilt es vermutlich, per Auslesen der OBD2-Schnittstelle voranzukommen. Wer über diese Möglichkeit über ganz konkrete Informationen zum ecitigo verfügt, sollte sich ebenfalls per Mail bei mir melden.