Modul für Tesla Model S / 3 / X

Begonnen von swhome, 17 Juli 2017, 12:53:25

Vorheriges Thema - Nächstes Thema

Oliver Vallant

Wie erstellst du deinen RefreshToken? Ich vertraue hierfür keiner Web-Site oder App mein Passwort an, sondern verwende das Tool tesla_auth von adriankumpf:

https://github.com/adriankumpf/tesla_auth?tab=readme-ov-file

Source ist somit einsehbar und es wird auf deinem Client ausgeführt. Es liegen auch drei Binaries für Mac/Linux/Win zum Download bereit, falls du nicht kompilieren willst.

LG Oliver

stst

Hallo Oliver,

ja genau das Tool verwende ich auch. Damit hats ja zuvor schon funktioniert, deshalb glaub ich nicht, dass es am Token liegt. Habs dann auch einmal testweise mit der iphone App Auth for Tesla probiert, aber auch ohne Erfolg.

Im log steht nur:
2024-03-02 08:37:48.673 TeslaConnection TeslaConn tokenExpiry:
2024-03-02 08:37:48.676 TeslaConnection TeslaConn refreshToken invalid

In irgendeinem Beitrag hab ich gelesen, dass bei neueren Teslas was anders ist. Weiß da wer was Genaueres darüber? Was ist "neuer"? Meiner ist jetzt ein Jahr alt.

LG, Stefan

Oliver Vallant

Hallo Stefan,

mein Tesla ist drei Jahre, fällt also leider nicht mehr unter "die Neuen". Ausschließen, dass dein Token funktioniert, kannst du mittels anderer Tesla-App. Vielleicht hast du einen Freund/Kollegen mit Tesla, der mit dir zusammen zum Ausprobieren für sein Fahrzeug einen Token generiert. Modul neuladen, durchstarten, Devices neu anlegen wirst du ja schon probiert haben.

LG Oliver

satprofi

Müsste man nicht mit update vom jänner den Datenzugriff erneut erlauben? Man sieht ja dann dieses extra Symbol rechts oben, wenn 3rdparty Apps aufs Auto zugreifen
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Dr. Smag

#439
Es wurde doch von Tesla letztes Jahr angekündigt, dass es eine Fleet Api geben wird, wo die Sicherheit erhöht wird, indem es für Drittanbieter eigene Tokens gibt. Somit muss man dann nicht mehr die Angst haben.

Wahrscheinlich so ähnlich wie bei Apple oder Google, Wo man eine App den Zugang gewährt.

Ich denke dahingehend müsste das Modul mal angepasst werden. Meins funktioniert seit einigen Wochen auch nicht mehr.


Das wurde aber frühzeitig angekündigt, dass die alte Restful-API abgeschaltet wird.

Bisher habe ich das auch noch nicht ausprobiert.
Vielleicht muss man sich nur einen neuen Schlüssel generieren.

Auch gibt es eine Einschränkung bei der Anzahl der Abfragen pro Tag. Die API soll wohl extrem erweitert worden sein. Auch für das Multiuser-Handling.

Nagelt mich aber darauf nicht fest.
RPi1,2,3,HMLAN,HM,CC-RT-DN,HM-TC-IT-WM-W-EU,HM-LC-SW2-PB-FM,HM-LC-Sw1PBU-FM,HM-LC-Dim1TPBU-FM,HM-SEC-RHS,HM-SEC-KEY-S,HM-SEC-S,C, HM-OU-LED16,HM-ES-PMSw1-Pl,HM-RC-Dis-H-x-EU,HM-LC-SW4-DR,HM-RC-8,HM-OU-CFM-TW,HM-SEC-WDS, HM-PB-2-WM55,HM-Sen-MDIR-O,HM-Dis-WM55,HM-Dis-EP-WM55,HM-ES-PMSw1-Pl-DN-R1...

Dr.McKay

Hi,

muss man noch irgendwas beachten um ein set-Komando abzusetzen? Das geht bei mir nicht, aber alle Readings vom Fahrzeug sind vorhanden und aktualisieren sich auch regelmäßig.

Grüße

satprofi

Meistens muss man 2x senden, oder vorher wagen aufwecken.

(set LRWYGxxxxxxxx wakeUpCar, set LRWYGxxxxxxx startCharging) z.B.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Dr.McKay

Funktioniert denn das Modul noch wie geplant? Es scheint überhaupt kein Kommando mehr zu funktionieren. Ich habe das Verbose-Level vom Device "LRWYGxxxxxxxx" auf 5 gesetzt um mir anzeigen zu lassen was ein beliebiges "set" Kommando bewirkt, aber ich bekomme für jedes Kommando nur ein "404" zurück. Ich habe etwas gelesen dass die Schnittstelle nicht mehr zu funktionieren scheint und jetzt geht es nur noch über eine sogenannte Fleet API https://developer.tesla.com/docs/fleet-api#2023-10-09-rest-api-vehicle-commands-endpoint-deprecation-warning.
Könntest du mal dein Log-Output von einem set-Kommando posten mit Verbose 5? Welche TeslaConnection.pm und TeslaCar.pm verwendest du?

Vielen Dank und Grüße

satprofi

hallo, gerade Hupe gestartet :-)

wo finde ich die versions nummern?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Dr.McKay

Die Versionsnummern der *.pm Module? In den Dateien z.b."49_TeslaCar.pm" selbst, unter /opt/fhem/FHEM. Kannst du "attr LRWXXXXXXXXX verbose 5" setzen und das fhem-Log posten nachdem du ein set Kommando ausgeführt hast? Hier ein Log Ausschnitt von mir nachdem ich versucht habe das wake_up Kommando zu setzen. Dabei habe ich den Status:404 "Not found" zurückbekommen. Mich würde mal interessieren wie im erfolgreichen Fall der POST Request und die Antwort aussieht.
2024.05.24 14:06:27 4: LRW3Exxxxxxxxxxx is asleep, full update
2024.05.24 14:06:34 2: set command: wakeUpCar
2024.05.24 14:06:34 4: TeslaConnection POST request: https://owner-api.teslamotors.com/api/1/products/9xxxxxxxxxxxx/wake_up
2024.05.24 14:06:34 4: teslaconn current refreshToken: eyJhbGciOiJSUzI1NiIsInR5c...9rvgVGPTFYl4wHFRfALNt4FDQ
2024.05.24 14:06:34 4: teslaconn: no token refresh needed
2024.05.24 14:06:35 4: LRW3Exxxxxxxxxxxx response from Tesla API: {"status":404,"error":"Not Found"}
2024.05.24 14:06:35 5: LRW3Exxxxxxxxxxxx params: $VAR1 = {
          'url' => 'https://owner-api.teslamotors.com/api/1/products/9xxxxxxxxxxxxxxx/wake_up',
          'displayurl' => 'https://owner-api.teslamotors.com/api/1/products/9xxxxxxxxxxxxx/wake_up',
          'hu_port' => 443,
          'host' => 'owner-api.teslamotors.com',
          'header' => 'Accept: application/json
Authorization: Bearer eyJh...........',
          'addr' => 'https://owner-api.teslamotors.com:443',
          'buf' => '',
          'httpheader' => 'HTTP/1.1 404 Not Found

Grüße

satprofi

49_TeslaCar.pm # $Id: $ Version 1.4
49_TeslaConnection.pm # $Id: $ Version 1.1

2024.05.24 13:12:04 4: LRWYGxxxxxxxx POST request: https://owner-api.teslamotors.com/api/1/vehicles/14930222xxxxxx/command/set_charging_amps with data: {"charging_amps": 14}
2024.05.24 13:12:04 4: LRWYGxxxxxxxxx response from Tesla API: {"response":{"result":true,"reason":""}}
2024.05.24 13:12:04 5: LRWYGxxxxxxxxx params: $VAR1 = {
          'httpversion' => '1.1',
          'buf' => '',
          'auth' => 0,
          'displayurl' => 'https://owner-api.teslamotors.com/api/1/vehicles/14930xxxxxxxx/command/set_charging_amps',
          'data' => '{"charging_amps": 14}',
          'timeout' => 3,
          'hash' => {

2024.05.24 13:13:32 2: set command: lock
2024.05.24 13:13:32 4: TeslaConnection POST request: https://owner-api.teslamotors.com/api/1/vehicles/149302227xxxxxxx/command/door_lock
2024.05.24 13:13:32 4: LRWYGxxxxxxx response from Tesla API: {"response":{"result":true,"reason":""}}
2024.05.24 13:13:32 5: LRWYGxxxxxxx params: $VAR1 = {
          'loglevel' => 4,
          'redirects' => 0,
          'hash' => {
                      '.attrminint' => [],
                      'skipFull' => 19800,
                      'tokens' => [

2024.05.24 13:15:55 2: set command: honkHorn
2024.05.24 13:15:55 4: TeslaConnection POST request: https://owner-api.teslamotors.com/api/1/vehicles/14930222xxxxxx/command/honk_horn
2024.05.24 13:15:56 4: LRWYGxxxxxxxx response from Tesla API: {"response":{"result":true,"reason":""}}
2024.05.24 13:15:56 5: LRWYGxxxxxxxx params: $VAR1 = {
          'loglevel' => 4,
          'redirects' => 0,
          'hash' => {


alle commandos wurden ausgeführt mit set LRWGYxxxxxx 
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Dr.McKay

Das ist interessant. Ich habe die Module aus dem Beitrag von Oliver Vallant. Dort sind es 1.1 für TeslaConnection und 1.5 für TeslaCar.


Zitat von: Oliver Vallant am 27 Februar 2024, 08:17:30Hallo Satprofi,https://forum.fhem.de/index.php?action=profile;u=26051

anbei meine aktuellen Versionen der Module.

LG Oliver


Ich versuche mal den POST Request analog zu deinem aufzubauen, ansonsten könntest du mir deine TeslaCar.pm mal reinstellen?

Danke

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Dr.McKay

#448
Das ist merkwürdig. Ich bekomme die Deprecation Warnung mit einem 403 FORBIDDEN
2024.05.24 18:00:47 2: set command: unlock
2024.05.24 18:00:47 4: TeslaConnection POST request: https://owner-api.teslamotors.com/api/1/vehicles/92xxxxxxxxxxxx/command/door_unlock
2024.05.24 18:00:47 4: teslaconn current refreshToken: eyJhbGciOiJSUzI1NiIsInR5c...9rvgVGPTFYl4wHFRfALNt4FDQ
2024.05.24 18:00:47 4: teslaconn: no token refresh needed
2024.05.24 18:00:47 4: LRW3Exxxxxxxxxxxx response from Tesla API: {"response":null,"error":"Tesla Vehicle Command Protocol required, please refer to the documentation here: https://developer.tesla.com/docs/fleet-api#2023-10-09-rest-api-vehicle-commands-endpoint-deprecation-warning","error_description":""}
2024.05.24 18:00:47 5: LRW3Exxxxxxxxxxxxx params: $VAR1 = {
.....
          'addr' => 'https://owner-api.teslamotors.com:443',
          'header' => 'Accept: application/json
Authorization: Bearer eyJh......',
          'hu_port' => 443,
          'httpheader' => 'HTTP/1.1 403 Forbidden

Das WakeUp klappt. Was könnte das sein? :(

Dr.McKay

Ich habe mir das mal durchgelesen unter dem angegebenen Link https://developer.tesla.com/docs/fleet-api#2023-10-09-rest-api-vehicle-commands-endpoint-deprecation-warning. Laut denen muss man als Vorraussetzung einen extra Zugriff auf die Developer API anfordern, mit Angaben über den Zweck der Verwendung, Beschreibung der eigenen App, von der Tesla ausgeht, dass man diese entwicklet und Angaben über die Firma, weil ancheinend nur noch Business-Benutzern der Zugang gestattet ist, der von Tesla verifiziert wird um dann Zugangsdaten für die Generierung eines API-Tokens zu bekommen. Ich kann mir nicht vorstellen, dass mittlerweile solche Maßnahmen nötig sind nur um sein SmartHome anzubinden. Versteht irgendjemand von euch vielleicht anders was das ganze bedeuten soll?