Modul für Tesla Model S / 3 / X

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

Vorheriges Thema - Nächstes Thema

Elektrolurch

Ich habe mit diesem Teil hier schon ein Verständnisproblem:

Step 1: Obtain the login pageauthentication step-1-obtain-t...
Subsequent requests to the SSO service will require a "code verifier" and "code challenge". These are a random 86-character alphanumeric string and its SHA-256 hash encoded in URL-safe base64 (base64url). Here is an example of generating them in Ruby, but you can apply this same process to other languages.
Copy
1code_verifier = random_string(86)
2code_challenge = Base64.urlsafe_encode64(Digest::SHA256.hexdigest(code_verifier))
You will also need a stable state  value for requests, which is a random string of any length.

Und wie man dann den Cookie aus der Antwort heraus holt und in den nächsten Request an die Tesla-Auth-Seite schickt, weiß ich leider auch nicht.
configDB und Windows befreite Zone!

TimoD

Geht mir auch so, bin nun kurzfristig auf Teslafi ausgewichen, die haben eine API die sich abfragen läßt und als json auch alle Einträge liefert.

Nicht perfekt aber kurzfristig zumindest ne Lösung (kostet 5$ im Monat)

Wenn hier Fragen zur Einrichtung sind kann ich helfen  ;)

Faber38

ich hab den Teslalogger https://e-mobility-driving-solutions.com/produkt-kategorie/teslalogger/...ist auf einem Pi und die Daten sind bei mir Zuhause..
Da ist seid ein paar Tagen das Problem mit dem refreshToken und MFA gelöst.

ohne gebühren !

mrmops

Ansatz für einen vorübergehenden Workaround um 'TeslaConnection' wieder zum Laufen bringen, bis eine Implementierung der neuen Authentication (siehe https://tesla-api.timdorr.com/api-basics/authentication) zur Verfügung steht:

Man benötigt lediglich ein neues Access-Token, welches man 'TeslaConnection' zur Verfügung stellt.
Dieses hat eine Gültigkeit von über einem Monat - Zeit um eine "richtige Lösung" zu implementieren.

Schritt 1 - Token erzeugen:
Für die Erzeugung eines neuen Access-Tokens gibt es bereits ein PHP-Script hier:
https://github.com/timdorr/tesla-api/discussions/283

In der letzten Zeile "login", "password" durch die persönlichen Tesla-Account-Daten ersetzen und ausführen.
Als Ergebnis erhält man das Token in folgender Art (Beachte: Dies ist KEIN gültiges Token, nur exemplarisch):

  ["access_token"]=>
  string(68) "qts-b0cc74872ecb753ecd20da37686ae440ba294917XXXXXXXXXXXX"

Schritt 2 - Token in 'TeslaConnection' zur Verfügung stellen:

Dazu im Modul '49_TeslaConnection.pm' in

sub TeslaConnection_Set($@)

bei 'login' den Aufruf von 'TeslaConnection_GetAuthToken'

  if ($a[1] eq "login") {
    return TeslaConnection_GetAuthToken($hash,$a[2],$a[3]);


ersetzen und das in Schritt 1 ermittelte Token setzen sowie den Status auf "Connected":

if ($a[1] eq "login") {
   setKeyValue($hash->{NAME}."_accessToken","qts-b0cc74872ecb753ecd20da37686ae440ba294917XXXXXXXXXXXX");
   $hash->{STATE} = "Connected";
   readingsBeginUpdate($hash);
   readingsBulkUpdate($hash, "state", $hash->{STATE});
   readingsEndUpdate($hash, 1);
}


Schritt 3 - Restart FHEM, erneutes login bei 'TeslaConnection'

Nach einem ersten Versuch scheint dies zu funktionieren.

Seber

Danke für den Workaround! Bei mir funktioniert das Modul mit den beschriebenen Schritten aktuell auch wieder.

mrmops

Zitat von: Seber am 06 Februar 2021, 19:08:34
Danke für den Workaround! Bei mir funktioniert das Modul mit den beschriebenen Schritten aktuell auch wieder.

Danke für das Feedback!

TimoD

Vielen Dank mrmops,

ich hab das ursprüngliche Repo von sw-home geforked und um ein Attribute AccessToken erweitert. Darüber läßt sich nun direkt in fhem der Token eingeben und der Login ausführen.

Liegt hier: (inkl. PHP Skript und kurzer Anleitung)

https://github.com/BAngel87/FHEM-Tesla

Grüße und einen schönen Sonntagabend

mrmops

Hi TimoD,

hatte dies mittlerweile ebenso über Attribute gelöst - da hatten wir unabhängig von einander die selbe Idee.
Vielen Dank für den GitHub-Fork samt Doku, perfekt!

Elektrolurch

Hallo TimoD,

wenn ich

update all https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/controls_tesla.txt

eingebe, bekomme ich:

2021.02.08 11:19:49 1 : Downloading https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/controls_tesla.txt
2021.02.08 11:19:49 1 : RMDIR: ./restoreDir/update/2021-01-29
2021.02.08 11:19:49 1 : UPD FHEM/49_TeslaCar.pm
2021.02.08 11:19:49 1 : Got 24864 bytes for FHEM/49_TeslaCar.pm, expected 15158
2021.02.08 11:19:49 1 : aborting.
/controls_tesla.txt

und die Datei wird nicht herunter geladen.

Was tun?

Elektrolurch
configDB und Windows befreite Zone!

TimoD

Zitat von: Elektrolurch am 08 Februar 2021, 11:28:46
Hallo TimoD,

wenn ich

update all https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/controls_tesla.txt

eingebe, bekomme ich:

2021.02.08 11:19:49 1 : Downloading https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/controls_tesla.txt
2021.02.08 11:19:49 1 : RMDIR: ./restoreDir/update/2021-01-29
2021.02.08 11:19:49 1 : UPD FHEM/49_TeslaCar.pm
2021.02.08 11:19:49 1 : Got 24864 bytes for FHEM/49_TeslaCar.pm, expected 15158
2021.02.08 11:19:49 1 : aborting.
/controls_tesla.txt

und die Datei wird nicht herunter geladen.

Was tun?

Elektrolurch

Kannst du es nochmal versuchen?

smarthome999

Bei mir hat das mit dem holen des Tokens mit Hilfe des PHP-Scriptes erst funktioniert, nachdem ich die Multifactor-Auth. für meinen Tesla-Account deaktiviert hatte.

Decki

Hallo an Programmierer mit Teslas,
könnt ihr mir als Nichtprogrammierer erklären, wie ich "php -f PHPScriptTeslaLogin.php" auf einem Raspi oder Win10 ausführe/starte?
Muss in der letzten Zeile des php Scriptes bei Name und Passwort die "" dort bleiben, oder müssen die "" auch raus?

Danke
Raspi 2 im Schaltschrank, USB IR Lesekopf am EHz21, Gaszähler mit Reedkontakt, Jeelink,  16 FS20 Aktoren,  3 Ufos für LED, 11 FS20 Rolladenaktore, AMAD 4.0 mit Sprachausgabe, Esp12 mit EspEasy

Elektrolurch


update all https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/controls_tesla.txt
2021.02.09 11:42:53 1 : UPD FHEM/49_TeslaCar.pm
2021.02.09 11:42:54 1 : Got 24864 bytes for FHEM/49_TeslaCar.pm, expected 14910
2021.02.09 11:42:54 1 : aborting.

Der update-Befehl geht leider immer noch nicht.


Elektrolurch
configDB und Windows befreite Zone!

baeda

ich hänge bei der Ausführung von  php -f PHPScriptTeslaLogin.php:

PHP Notice:  Undefined index: set-cookie in /home/user/PHPScriptTeslaLogin.php on line 291
PHP Notice:  Undefined offset: 1 in /home/user/PHPScriptTeslaLogin.php on line 317
PHP Notice:  Undefined index: access_token in /home/user/PHPScriptTeslaLogin.php on line 344
PHP Notice:  Undefined index: refresh_token in /home/user/PHPScriptTeslaLogin.php on line 345
PHP Notice:  Undefined index: access_token in /home/user/PHPScriptTeslaLogin.php on line 369
array(2) {
  ["response"]=>
  string(17) "invalid_sso_token"
  ["refresh_token"]=>
  NULL
}


Danke für einen Tipp!

mrmops

Hi baeda,

sieht verdächtig nach einem Problem mit der Groß-/Kleinschreibung aus - je nach System dürfte alternativ 'set-cookie' oder 'Set-Cookie' erforderlich sein. Wurde mitlerweile im Script berücksichtigt - siehe Diskussion und aktualisiertes Skript dazu hier: https://github.com/timdorr/tesla-api/discussions/288

Hoffe das hilft.