Entwurf – Mit der Tesla Wallbox intelligent laden

Einleitung

Achtung Entwurf

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.

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

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

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 folegnden 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.0
make install

Bitte berücksichtig, dass das die aktuelle Entwicklungsversion ist – aber das seid ihr euch ja von Tesla ebenfalls gewohnt 😉

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

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.

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.

Weitere zukünftige Optimierungsmöglichkeiten

  • Da der HomeAssistant dem TWCManager etwas „spät“ die aktuellen Verbräuche meldet (weil sie dieser zuerst vom SolarLog lesen muss), „pendelt“ sich die zu verwendende Stromstärke mit Ausschlägen ein und unterbricht in den seltensten Fällen das Laden unmittelbar wieder. Ich werden versuchen direkt eine Erweiterung des TWCManagers für SolarLog zu schreiben.
  • Wenn der Befehl für das Laden von 6A gegeben wird, wird bei mir dann mit ca. 5.4A geladen. Bei 20A sind es dann ca. 19.7A. Diesen Faktor möchte ich gerne ebenfalls noch berücksichtigen – um die Kurve weiter zu optimieren.
  • Scheinbar kann man der Wallbox Anforderungen bis zu 1/100A angeben – muss ich mal testen, wie da das Auto dann drauf reagiert.
  • Umschalten auf 1 bzw. 2-phasiges Laden
  • Entkoppelung von der Tesla Car Api – das Starten und Stoppen des Ladevorganges sollte unabhängig vom Fahrzeug sein

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.0/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