FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Wallboxen und E-Fahrzeuge => Thema gestartet von: Elektrolurch am 06 Juni 2026, 12:09:14

Titel: Tesla - Fleet API - Befehle an Fahrzeug senden
Beitrag von: Elektrolurch am 06 Juni 2026, 12:09:14
Ich habe meinen Tesla M3 von 2020 bisher über die Hausautomatisierung fhem angebunden, kann aber jetzt ASleeep / wakeup und Starten / Stoppen des Ladevorgangs darüber nicht mehr steuern.
Was habe ich bisher getan:
- Schlüssel generiert und den öffentlichen Schlüssel bei github hinterlegt
Achtung: Der Pfad für den Schlüssel muss wie folgt lauten:
<domaine>/.well-known/appspecific/com.tesla.3p.public-key.pem
Das neu angelegte Projekt darf nicht "tesla-keys" heißen, wie das Internet fälschlicherweise behauptet.
Man muss das Repo so benennen: <benutzername.github.io, dann kann mann unter der Wurzel den Ordner ".well-known" anlegen.
 
Da der Pfad mit einem "." anfängt, muss in .well-known eine leere Datei .nojekyll enthalten, sont wird das ganze nicht von außen erreichbar.
Dann bei github das Projekt auf "pages" veröffentlichen.

Wenn man auch woanders öfffentlichen Webspace hat, der über <domainenname>/.well-known.... über das Internet erreichbar ist, geht das natürlich auch.

Wenn alles geklappt hat, dann öffnet der Browser das public Zertifikat zum download.
 
- Einen developer account bei Tesla angelegt und die 2 Faktor Authentisierung aktiviert.
- Eine App "homeassistant" dort angelegt und die URLs eingetragen.
Oder auch anders benennen.
<domaine> ohne / für den Pfad
callback url hängt von der Applikation ab.
Auf meinem Developer Account bei Tesla habe ich URLs hinterlegt:
https://<benutzername>.github.io
Zulässige Weiterleitungs URI(s)
https://my.home-assistant.io/redirect/oauth

Achtung: homeassistant hat sich bei mir als Sackgasse herausgestellt.
Die bei Tesla zu registrierende App auf dem developer account darf im Namen nicht "tesla" enthalten. Am Besten so was wie: "sonnenschein"... :-)
 
Die Kunden-ID und das secret kopieren, das brauchen wir sowohl für homeassistant, als auch für TeslaMate.

Mit homeassistant hat die Einbinung nicht funktioniert.
Für Arm V7 ist das letzte docker image 2025.11
Für AMD64 bekomme ich beim Entpacken der images von homeassistant Fehlermeldungen.
Das stelle ich jetzt ein.

Dann habe ich es mit TeslaMate probiert.
Es hat sich dann aber heraus gestellt, dass TeslaMate keine Befehle an das Fahrzeug senden kann.
Das Lesen der Fahrzeugdaten funktioniert und über mqtt kann man damit auch fhem "füttern".
Zumindest kann TeslaMate den Access und den Refresh Token automatisch "aufffrischen".

Zum Senden von Kommandos an das Fahrzeug muss ein Virtual Key im Fahrzeug installiert werden.

Dazu wird bei Tesla eine Webseite mit dem <domaine> aufgerufen, wo der public key hinterlegt wurde.
 Dieser Endpoint" / Partner muss zuvor aber bei Tesla bekannt gemacht werden:
 
 Partner registrieren:

sudo curl --request POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<Tesla_ID' \
--data-urlencode 'client_secret=<Tesla_secret>' \
--data-urlencode 'scope=openid vehicle_device_data vehicle_cmds vehicle_charging_cmds' \
--data-urlencode 'audience=https://fleet-api.prd.eu.vn.cloud.tesla.com' \
'https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token' 2>&1 | sudo tee register.txt

In register.txt ist dann ein <partner token> vorhanden, den man für den nächsten Aufruf benötigt:

sudo curl -X POST \
-H "Authorization: Bearer <partner token>" \
-H "Content-Type: application/json" \
-d '{"domain":"<benutzername>.github.io"}' \
https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/partner_accounts 2>&1 | sudo tee register-step2.txt

# POST /api/1/partner_accounts

# Registrierung prüfen
sudo curl \
-H "Authorization: Bearer <partner token>" \
"https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/partner_accounts/public_key?domain=<benutzername>.github.io" 2>&1 | sudo tee register-proof.txt

Dann  sollte  sich der  öffentliche Schlüssel in der Antwort befinden.
 
Im Browser aufrufen:
https://www.tesla.com/_ak/<domaine>

  Das Erscheinen des QR-Codes ist der wichtigste und richtige Schritt. Das bedeutet, dass die Kommunikation mit Deinem Tesla-Konto funktioniert und Tesla nun bereit ist, den virtuellen Schlüssel in Deinem Fahrzeug zu hinterlegen.
Hier ist die genaue Erklärung, was der QR-Code bedeutet und wie Du jetzt ohne optische Rückkopplung weitermachst:
Was bedeutet der QR-Code?
Der QR-Code enthält nichts anderes als einen speziellen Befehl für die Tesla-App auf Deinem iPhone. Da Du den Prozess gerade am Computer durchführst, dient der QR-Code als Brücke zum Smartphone.
Wenn man diesen QR-Code mit der iPhone-Kamera scannt, öffnet sich automatisch die offizielle Tesla-App auf dem Telefon und springt direkt in das Menü "Schlüssel einrichten".
Der Weg ohne Scannen: So kommst Du direkt weiter

Wenn Du den Browser auf Deinem iPhone benutzt, öffnet sich die Tesla-App sofort direkt.

Was passiert in der Tesla-App?
Sobald sich die Tesla-App öffnet (entweder durch den Link oder falls Du den QR-Code doch irgendwie erfasst hast), fordert Dich die App auf, die Schlüsselregistrierung zu bestätigen.
Die App fragt Dich, ob Du den Zugriff für Deine registrierte Domain erlauben willst.
Bestätige dies in der App auf dem iPhone.

Und an dem Punkt hänge ich jetzt, die Tesla App öffnet sich und meldet:
Fehler: Es ist der domäne <domaine> nicht erlaubt, auf das Konto zuzugreifen.

Die Meldung erscheint nur kurz in der App.
Unter Konto -> Sicherheit und Datenschutz -> 3. Anbieter erscheint nichts.
 
Bis jetzt habe ich noch nicht herausgefunden, woran das liegt.

Hat jemand da bereits Erfahrungen gesammelt?

Zu TeslaCar.pm in fhem:
Diese nutzt ja die alte OwnerAPI von Tesla, die ja zum Teil schon eingestellt wurde.
Man müsse also die Schnittstelle in TeslaConnection.pm auf die neue "fleet API" von Tesla umstellen.

Hat da schon jemand Erfahrungen gesammelt?

Elektrolurch