Mit der Tesla Wallbox intelligent laden

Einleitung

Ich wurde ja gewarnt. Es scheint ein richtiges Gebastel zu sein, eine Tesla Wallbox anzusteuern. Und trotzdem habe ich mich im Internet auf die Suche nach einer Anleitung gemacht – und bin bald an einige Stellen fündig geworden.

Alle zusammen nutzen das integrierte Lademanagement der Tesla Wallbox aus, mit welcher sich bis zu 4 Ladestationen zusammenschliessen lassen. Mit einem Raspberry Pi „faken“ sie eine sogenannte Master Wallbox und steuern damit die untergeordnete Ladestelle.

Bei der Konsultation der Anleitung beschlich mich zuerst ein ungutes Gefühl. Aber irgendwas im Hinterkopf sagte mir, dass da sehr viel Aufwand für ein nettes Zusatzfeature betrieben wird, welches ich gar nicht zwingend benötige: die Versorgung des Raspberry Pi über den Strom Leuchtdioden in der Wallbox.

Was danach folgte, war dann eher ein Abenteuer und nicht für jedermann geeignet. Ich durchforstete verschiedene Sourcecodes. Von diesen wiederum verschiedene Unterversionen – und habe mir dann die „beste“ Variante geforkt und angepasst. In der Zwischenzeit hat der Entwickler da eine ganze Reihe meiner Anpassungen übernommen und andere gar noch verbessert.

Update vom 06.02.2020:
Ich werde das Abenteuer TWCManager dann zukünftig sein lassen. Die Gründe dazu gibt es hier. Zusammengefasst: keine Zeit und Geduld mehr für Basteleien.

Minimalanforderungen an den Bastler

Wer sich mit Raspberry’s (oder anderen ähnlichen Varianten) etwas auskennt oder schont oft etwas Computerartiges mit Anleitungen aus dem Internet zusammengebastelt hat, der ist hier Gold richtig.

Alle anderen lassen eher die Finger davon.

Es kann schon mal vorkommen, dass man den Raspberry neu starten muss, und dafür jedes Mal in die Garage zu springen…

Material

Hardware Installation

GANZ WICHTIG
STECKER AUS DEM AUTO ZIEHEN
WALLBOX STROMLOS MACHEN
SICHERUNG RAUS
KEINE STROMKABEL BERÜHREN
WER DARIN NICHT GEÜBT IST: FINGER WEG

  • Wallbox öffnen
  • 2 T-Drähte anschliessen und nach aussen bringen. Nach Möglichkeiten den Draht verdrillen. Der Draht darf nicht zu lange sein, da sonst scheinbar das Signal zu schwach wird.
Anschluss Kommunikationskabel
  • Drehregler auf F stellen (unbedingt der Ursprungszustand merken, wenn’s nicht geht – einfach hier wieder zurückstellen).
Drehregler
  • Wallbox wieder schliessen
  • T-Drähte an USB to RS485 Converter anschliessen (Polarität beachten – + zu + / – zu -)
Anschluss Kabel an USB RS485 Converter
Ganze Wallbox

Softwareinstallation

Variante SSH

In Kommandozeile eingeben (auch hier wieder viel Spass bei der Suche nach dem richtigen Zeichen):

sudo raspi-config
  • Verschiedene Einstellungen machen:
    • Tastatur und andere Regionale Einstellungen,
    • Hostname ändern (z.B. twcmanager)
    • Passwort ändern
    • WLAN einstellen
    • ev. fixe IP
    • SSH einschalten (da gibt es sicher einige Anleitungen im Internet)
  • Konfigurationsoberfläche wieder verlassen

Variante Raspberry Pi Imager (Lorenz)

Ergänzung von Lorenz vom 05.10.2020: Es geht noch einfacher mit dem neuen Raspberry Pi Imager for Windows.

  • Die Softwareinstallation ist mit diesem (offiziellen) Tool viel einfacher, als mit ssh: https://www.raspberrypi.org/downloads/
  • Einfach das folgende (offizielle) Tool für Windows runterladen und auf dem Windows-PC installieren.
  • SD-Karte in den PC und das Tool starten.
  • Im Tool als Ziel die SD-Karte auswählen.
  • Dann einfach das vorgeschlagene Raspbian (oberster Eintrag der Liste) wählen und installieren.
  • Voilà, der Rest ist easy, da man durchgeführt wird (Spracheinstellung, Passwort, WLAN).
  • Man landet dann auf dem grafischen Desktop.
  • Jetzt noch im Menü unter „Einstellungen“ – „Raspberry-Pi-Konfiguration“ den gewünschten Hostnamen festlegen und unter Schnittstellen SSH und VNC aktivieren, dann rebooten.
  • Zum Schluss VNC (https://www.realvnc.com/de/connect/download/viewer/) auf dem PC installieren und dann kann man remote über die IP den Raspi erreichen, so dass man ab jetzt Tastatur und Monitor am Raspberry Pi nicht mehr benötigt.

Wir sagen dem WLAN nun noch, dass es nie in dem Energiesparmodus wechseln soll:

sudo nano /etc/rc.local

In der Datei fügen wir vor der letzten Zeile mit „exit 0“ die folgenden Zeile ein:

/sbin/iwconfig wlan0 power off

Speichern, verlassen und System neu starten mit:

sudo reboot

Nach dem Neustart eine Reihe von Befehlen ausführen:

sudo apt-get update
sudo apt-get install -y git python3 python3-setuptools
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
git clone https://github.com/ngardiner/TWCManager
cd TWCManager
git checkout v1.2.1
make install

Bitte berücksichtig, dass das die aktuelle Entwicklungsversion ist – aber das seid ihr euch ja von Tesla ebenfalls gewohnt 😉
Möchtet Ihr eine stabile Version verwenden, dann verwenden beim „git checkout“ die Version v1.2.0

Jetzt ist eigentlich alles installiert. Es muss nur noch die Konfiguration angepasst werden. In den Konfigurationsmodus wechseln mit dem folgenden Befehl:

sudo nano /etc/twcmanager/config.json

Speichern geht übrigens mit STRG+O und dann Eingabetaste. Schliessen geht über STRG+X.

WICHTIG: da muss die maximale Leistung der Wallbox eingetragen werden (dort wo das Einstellungsrädchen vorher sass). Sonst fliegt euch dann die Sicherung um die Ohren. Auch die minimale Leistung solltet ihr einstellen. Werte unter 6A nimmt mir meine Wallbox aber leider nicht. Lest euch die Kommentare auf jeden Fall durch.

Ich habe meine Wallbox dann an meinen HomeAssistant angehängt, damit ich abhängig vom Überschuss laden kann. Eine entsprechende Erweiterung und vieles mehr ist gegeben. Die enstprechenden Dokumentationen sind etwas verschachtelt aber unter https://github.com/ngardiner/TWCManager/tree/v1.2.0/docs/modules auffindbar.

Der TWCManager kann auch per MQTT und HTTP Rest Api Call angesteuert werden.

Dann würde ich mal testen, ob ihr per Putty oder anderem SSH Client auf den Raspberry kommt.

Jetzt noch den TWCManager als Dienst installieren:

sudo cp twcmanager.service /etc/systemd/system/twcmanager.service
sudo systemctl enable twcmanager.service

Den USB to RS485 Converter anschliessen und anschliessend das Gerät nochmals neu starten.

sudo reboot

Der TWCManager ist nun über euren gewählten Hostnamen (z.B. http://twcmanager – altes UI) oder die IP erreichbar. Da kommt das alte UI und es fragt euch nach dem Tesla Passwort, welches selbstverständlich nur einmalig das Token abfragt, ohne die Daten zu speichern. (Notwendig für das zuverlässige starten und stoppen des Ladevorgangs).

Das neue UI ist noch in Entwicklung, erreicht ihr über http://twcmanager:8080

Resultat

Das Resultat lässt sich sehen. Der TWCManager regelt den Strom automatisch zwischen 6 und 12A. Und von Sonntag – Donnerstag lädt mein Tesla ab 21 Uhr (Niedertarif) mit meiner Maximalanschlussleistung von 20A bis das Ladelimit erreicht ist.

Aktuelle persönliche Erweiterungen

In der Zwischenzeit habe ich meinen eigenen Fork unter https://github.com/dschuesae/TWCManager angelegt.

Edit 30.01.2021: diesen Fork werde ich zukünftig löschen.

Ich versuche auch alle meine Anpassungen so kompatibel wie möglich in den https://github.com/ngardiner/TWCManager Fork zu bringen, da ich leider auch keine Zeit für Support habe.

Das war bisher leider nicht ganz für alle Features möglich. Diese sind aber in meinem Fork komplett abgebildet.

Was waren die grössten „Herausforderungen“?

  • Habe endlich Python „gelernt“ und den TWCManager auch für 3 Phasen angepasst
  • Nach 3 fehlgeschlagenen Ladevorgängen, schaltet der Tesla auf stur – ein erneutes manuelles Anschliessen ist unumgänglich – einfach mühsam, wenn man am nächsten Tag 600km fahren will und er alle 90 Minuten die Ladung entsprechend unterbricht (ist in der jetzigen Version nie mehr vorgekommen)
  • Anschlusskabel nicht zu lange planen (max. 20-30cm)

Nützliche Links

https://github.com/ngardiner/TWCManager
https://github.com/ngardiner/TWCManager/tree/v1.2.1/docs

Nützliche SSH Befehle

Starten des Dienstes

sudo systemctl start twcmanager.service

Stoppen des Dienstes

sudo systemctl stop twcmanager.service

Manuelles Ausführen des TWCManagers mit Log Messages

cd TWCManager
python3 -m TWCManager

Updaten mit der aktuellen Entwicklungsversion

cd TWCManager
git pull
sudo cp html/* /var/www/html/
make install

Natürlich wird das nicht immer funktionieren – sobald es neue Konfigurationen gibt, kann es dann sein, dass eine Neuinstallation notwendig wird.

Neustarten des Geräts

sudo reboot

Backup (Ergänzung von Lorenz)

  • Tipp: Um ein Backup der gesamten SD-Karte zu erzeugen, „Roadkil’s Disk Image“ nutzen: https://roadkil.net/program.php/P12/Disk%20Image
  • Für die Rücksicherung auf die SD-Karte dann nicht „Roadkil’s Disk Image“ (das funktioniert unzuverlässig!), sondern wieder das offizielle Raspberry Pi Tool vom Anfang nutzen. Dort unter „Choose OS“ den letzten Menüeintrag „Use custom“ verwenden.