[Modul] Tesla

Hello!
Ich bekomme beim Aufruf Tesla_FetchData(17919);
Notice: Array to string conversion in C:\ProgramData\Symcon\modules.store\info.schnittcher.ips.tesla\IPS-TeslaVehicle\module.php on line 138

IPS 6.1 ; habe auf der Testmaschine mit 6.3 auch das Modul installiert und den Code verglichen in Zeile 138 - aus meiner Sicht ident.
Lg Alexander

Bei mir funktioniert noch alles, bin aber noch nicht auf der neusten IPS Version.

Konntest du dein Auto im Splitter auswählen?

Bin in „Production“ auch noch auf 6.1 im „Test“ auf 6.3
Ja kann noch im Splitter wählen. Scheint eigentlich noch zu gehen, mir ist eben die Meldung aus Zeile 138 aufgefallen…

Ja, die Meldung von Zeile 138 bekomme ich auch …IPS vom 01.12. … sonst scheint aber alles mormal zu laufen …

Könnt ihr bitte ein Mal kurz zusammenfassen, was nicht funktioniert?
Welche Fehlermeldungen bekommt ihr?

Grüße,
Kai

Was kann man denn tun um das hier weiter voranzutreiben?
Ich habe das Modul installiert (Dateien sind vom 23.11.2022) ich hoffe das ist die neueste Version.
In der Modules.php gibts ne FetchAccessToken() die aber nie aufgerufen wird. Ist das richtig so?
Wenn ich das richtig sehe versucht er nur refresh, holt aber den Accesstoken nie.
Wenn ich manuell versuche die Token zu erstellen scheiter ich schon daran, dass in meiner Response wenn man den Kram mit code_challange und so schickt, _process nicht vorhanden ist. und cancel den Wert 1 hat. Also da geht schon direkt was schief.

Hallo Kai,
beim aktualisieren mit meinem Aufwecken Script, dort werden die einzelen Instanzen wie auch Tesla Vehicle mit dem Tesla_FetchData abgefragt. Die Meldung kommt nur wenn das Fahrzeug „wach“ ist.
Ich meine das die Meldung nach der Implementierung von „Set Preconditioning Max“ kam, bin mir aber nicht 100% sicher.

grafik

Gruß Torsten

Du musst die Tokens über eine App generieren und im Modul hinterlegen.
Bei der API wurde was geändert und das holen der Tokens habe ich nicht wieder umgesetzt bekommen.

Für iOS funktioniert die App „Auth for Tesla“ sehr gut.

Grüße,
Kai

Schau mal, ob der Fehler mit der aktuellen Beta Version noch auftritt.

Grüße,
Kai

Das ist ja schade. Bin auf Android unterwegs, würde aber meine Zugangsdaten keine App anvertrauen die ich da im Shop finde.
Werd dann mal weiter versuchen mich mit der API bzw. Authentifizierung auseinanderzusetzen.

Hier gibts sicherlich jemanden, der das mit Android gemacht hat.

Grüße,
Kai

Hallo,

Fehler kommt noch, jetzt in Zeile 140.

grafik

Gruß Torsten

Habs hinbekommen selbst die Token zu erzeugen ohne meine Logindaten an Dritte weiterzugeben. Ist mir lieber so :smiley: Trotzdem Danke

14.12.2022, 21:58:45 | Variable not exist | Key: media_info - Value: Array

media_info scheint ein Array zu beinhalten. Daher der Fehler.
Komme aber heute nicht mehr dazu ne Lösung anzubieten.
Aber Kai ist da ja vielleicht auch schon dran.

Hab die Zeile auskommentiert, dann geht erstmal alles was ich so geschaut hab.

Kannst du dazu eine Anleitung posten?

Grüße,
Kai

Den Fehler mit dem Array schaue ich mir an.

Grüße,
Kai

Klar:

Als erstes braucht man einen 86 Zeichen langen String als code_verifier.
Und den dazugehörigen SHA256 Hash encoded als URL safe base64.

Der String ist random, bestehend aus Alphanumerischen Zeichen. Einfach irgendwas eingeben.

Habe das mit Ruby gemacht:

require 'digest'
require 'base64'
code_verifier = "igDTZvuwerig823t76iDtrdfwurwebpoqwehadvzXTazurbweu4238956webirbu23utktr343uiovYrcRQhdw"
code_challenge = Base64.urlsafe_encode64(Digest::SHA256.hexdigest(code_verifier))
puts "verifier: " + code_verifier
puts "challenge: " + code_challenge

Output ist dann:

verifier: igDTZvuwerig823t76iDtrdfwurwebpoqwehadvzXTazurbweu4238956webirbu23utktr343uiovYrcRQhdw
challenge: OGI1ZDJmMTE1YWM5Mjc0ZWZmZTRjNTE0MzAyZjE4NjAyMjA0Mzc0YTEyYjg2MWUzYmVjNjcwMTdjMjBkMjlmZQ==

Bin mir nicht sicher, ob das Padding hinten dran (==) weggelassen werden muss oder nicht. Ich habe es bei meinem Versuch weggelassen.

Wenn man das alles hat loggt man sich auf auth.tesla.com ein und übergibt dabei die eben generierte code_challenge und ersetzt state noch durch irgendwas (auch random, weiss nicht was die max length ist):

https://auth.tesla.com/oauth2/v3/authorize?code_challenge=OGI1ZDJmMTE1YWM5Mjc0ZWZmZTRjNTE0MzAyZjE4NjAyMjA0Mzc0YTEyYjg2MWUzYmVjNjcwMTdjMjBkMjlmZQ&client_id=ownerapi&state=351261&redirect_uri=https%3A%2F%2Fauth.tesla.com%2Fvoid%2Fcallback&response_type=code&code_challenge_method=S256&scope=openid+email+offline_access

Nach dem einloggen mit seinen Tesla credentials bekommt man eine Page Not Found Meldung und in der Adressleiste kopiert man den String nach „code=“ raus. Das ist euer authorization_code

Ab hier gilt es alles was rauskommt geheim zu halten.

Mit dem authorization_code und dem code_verifier kann man nun die Token generieren.

Habe das mit curl gemacht:

curl -H "Content-Type: application/json" -X POST -d '{"grant_type": "authorization_code", "client_id": "ownerapi", "code": "AUTHORIZATION_CODE", "code_verifier": "CODE_VERIFIER", "redirect_uri": "https://auth.tesla.com/void/callback"}' -s https://auth.tesla.com/oauth2/v3/token

Da natürlich AUTHORIZATION_CODE und CODE_VERIFIER dementsprechend ersetzen.
Dann bekommt man als Response die Token.

Ich hoffe das ist verständlich. Wenn nicht, dann nachfragen. :slight_smile:

Fibs

Danke.
Mal schauen, ob man das irgendwie ins Modul einbauen kann.

Grüße,
Kai

Servus @KaiS ,
ich habe das Teslamodul gestern aktualisiert…vordergründig läuft alles.
Im Log ist aber eine Meldung

16.12.2022, 10:11:01 | ScriptEngine | Result for Event 52569
Notice: Array to string conversion in C:\ProgramData\Symcon\modules.store\info.schnittcher.ips.tesla\IPS-TeslaVehicle\module.php on line 140

Was will mir IP-Symcon sagen?

Danke
JoeB

Und welche Meldung?

Grüße,
Kai