Modul für Tesla Model S / 3 / X

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

Vorheriges Thema - Nächstes Thema

Decki

Hallo Andi,

ich habe requestSettings ausgeführt. Verbose ist auf 5 und im log habe ich alle Werte, aber die Readings werden nur teilweise aktualisiert.
Ist irgenwie seltsam.

Gruß Andy
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

mrmops


Zitat von: Decki am 16 Februar 2021, 18:48:22
ich habe requestSettings ausgeführt. Verbose ist auf 5 und im log habe ich alle Werte, aber die Readings werden nur teilweise aktualisiert.
Ist irgenwie seltsam.

Dies ist mehr als seltsam - kann ich mir auch nicht erklären.
Zum besseren Verständnis: Du hast kein FileLog Device für Dein 'TeslaCar' angelegt, sondern mit Verbose-Level 5 die Modul-Debug-Ausgaben in 'fhem-*.log' aktiviert?

Beste Grüße,
Andi

mrmops

Zitat von: baeda am 16 Februar 2021, 11:33:07
ich habe die 49_TeslaConnection.pm nach Deiner Vorlage angepasst - nun wird alles wieder aktualisiert.

Hi Baeda,
super das es bei Dir nun auch funktioniert - danke für Dein Feedback.

mrmops

#198
Zitat von: LR66 am 04 Februar 2021, 18:22:30
swhome hat nach Rückfrage im anderen Forum wohl momentan keine Zeit und Druck.
Er meint, es könnte viell. auch einfach klappen, indem man im Tesla-Portal einen (Dummy-Fhem-) Fahrer ohne Multifaktor-Authentifizierung anlegt und den für Fhem nutzt - was zu probieren wäre...
Vg Lutz

Hallo Lutz,
hast Du eine Ahnung ob swhome in den nächsten Wochen Zeit für eine Anpassung der geänderten Authorisierung finden wird oder hat er sein Modul selbst nicht mehr in Verwendung und somit gar keinen Bedarf einer Anpassung?

Beste Grüße,
mrmops

Decki

Hallo mrmops,

habe es genau so konfiguriert, wie du es vermutet hast. Ich logge nur die Akkureichweite in Km und lese die Ladezeit über Dummy aus und lasse diese mir anzeigen.
Andy
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

mrmops

Hi Decki,

zur Anzeige ausgewählrer Infos habe ich mir eine ReadingsGroup erstellt - siehe Screenshot in meinem Beitrag hier: https://forum.fhem.de/index.php/topic,74341.msg1041052.html#msg1041052. Ist vielleicht ein alternativer Ansatz für Die Anzeige von Recihweite und Ladezeit.



LR66

ZitatHallo Lutz,
hast Du eine Ahnung ob swhome in den nächsten Wochen Zeit...
Leider nicht. Hab ihn auch nur im TFF angeschrieben.

Es müsste sich ein Developer finden, der die im www findbaren PHP- oder Python-Lösungen mit den geeigneten Get und Post in Perl - HttpUtils (möglichst auch noch nonblocking) umsetzt.

Selber hab ich da zu wenig Ahnung und scheiterte bisher schon in Anfängen:

Für Zufallszahl und sha256 hab ich im Testsystem die Libs Crypt-URandom-0.36 und CryptX-0.070 nachinstalliert, dann
use Crypt::URandom qw( urandom );
use Crypt::Digest::SHA256 qw( sha256 sha256_hex sha256_b64 sha256_b64u
                             sha256_file sha256_file_hex sha256_file_b64 sha256_file_b64u );


Schon die korrekte Abfrage im 1. Schritt gelingt mir nicht. Wie wird der Request korrekt übergeben mit Header und Parametern?

sub TeslaConnection_GetAuthToken
{
  my ($hash,$user,$pwd) = @_;
  my $name = $hash->{NAME};
  my $JSON = JSON->new->utf8(0)->allow_nonref;
 
   
###Step 1: Obtain the login page 
  my $cvnum = urandom(86);
  my $code_verifier = sha256($cvnum);
  my $code_challenge = sha256_b64($cvnum);
  my $state = sha256_b64(urandom(12));
  $hash->{conn}{code_verifier} = $code_verifier;
  $hash->{conn}{code_challenge} = $code_challenge;
  $hash->{conn}{state} = $state;
 
  #Log3 $name, 4, "cvnum: $cvnum";
  #Log3 $name, 4, "code_verifier: $hash->{conn}{code_verifier}";
  #Log3 $name, 4, "code_challenge: $hash->{conn}{code_challenge}";
  #Log3 $name, 4, "state: $hash->{conn}{state}";
 
  Log3 $name, 4, "Request oauth code for: $user";

  my $header ={
        'User-Agent' => 'UA',
        'x-tesla-user-agent' => 'X_TESLA_USER_AGENT',
        'X-Requested-With' => 'com.teslamotors.tesla',
    };
 
  my $data = {
        'client_id' => 'ownerapi',
        'code_challenge' => $code_challenge,
        'code_challenge_method' => 'S256',
        'redirect_uri' => 'https://auth.tesla.com/void/callback',
        'response_type' => 'code',
        'scope' => 'openid email offline_access',
        'state' => $state
    };

  my $param = {
url => "$hash->{conn}{accessUrl}",
method => 'GET',
        timeout => 4,
        noshutdown => 0,
ignoreredirects => 1,
header => $header,
data => $data, 
  };

  my($err,$data) = HttpUtils_BlockingGet($param);
  Log3 $name, 3, "$name AuthTokenResponse: $data";

 

... liefert timeout/error: Bad file descriptor

Kann das nicht jemand mit HttpUtils-Ahnung anhand https://tesla-api.timdorr.com/api-basics/authentication#step-1-obtain-the-login-page hinkriegen?

swhome

Zitat von: mrmops am 15 Februar 2021, 20:32:31
solange die Änderungen bei der Tokenerneuerung seitens Tesla vom Modulauthor noch nicht umgesetzt wurden muss bei Aublauf der Tokengültigkeit (siehe Reading 'tokenExpiry') die Vorgehensweise erneut durchgeführt werden.
Hi das wundert mich, bei mir läuft das Modul mit einem uralten Login und refresht den auch noch, das letzte mal am 17. Februar. Was die tokengenerierung angeht, die Strategie dieses php Script schaut ja wirklich schlimm aus, und ich glaub das gilt nicht nur für Leute die kaum php Erfahrung haben. Das muss doch eleganter gehen?

Impliziert war das auch die Antwort auf die Frage ob ich das Modul noch nutze  :) Leider gibts aber viele Baustellen und ich gehöre nicht zu den bedauernswerten Mitbürgern denen in Corona Zeiten die Arbeit weggefallen ist...

Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

LR66

#203
Bei mir hat der vor Ablauf der Gültigkeit nun manuell mit 'set refreshToken' angeforderte Original-Token-Refresh auch geklappt, angeblich jetzt bis Ende April gültig. Und er funktioniert auch: eben mit wakeup, Soc-Änderung, flashLights probiert - geht genauso wie Readings.
Im Web-TeslaAccount war vor dem Refresh bereits die MFA aktiviert.
Ich hoffe, dass es nach April auch noch geht...
PS: Betrifft das Problem der neuen Authentifizierung Neuinstallationen mit erstem Login-Versuch und fehlendem Erst-Token? Wann ist bei anderen das Problem aufgetreten?

swhome

#204
Ich denke es passiert neuen Anwendern und all jenen die ihr refresh token verloren haben.

Hab gerade mal versucht einen korrekten OAuth Login einzubauen, leider kommt keine Login Seite wenn man etwas anderes als https://auth.tesla.com/void/callback als redirect Url verwendet. Vermutlich muss dann auch ein anderer Wert für client_id und evtl client_secret eingesetzt werden, was natürlich niemand weiß weil Tesla keinen Entwicklersupport bietet.

Wir bräuchten jemand mit Javascript knowhow, der könnte die Tesla Login Seite mit client_id=ownerapi in einem Popup anzeigen, das Resultat bei Tesla validieren und die location URL mit dem richtigen code aus der Antwort extrahieren und an fhem übergeben. Damit würde auch MFA wieder funktionieren. Dieses Gewurschtel mit dem Imitieren der Login Seite finde ich zu uncool und bekomme es auch in perl nicht hin.

Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

kamp

Hallo, schau dir mal das an, dort wurde das Problem schon gelöst: https://github.com/adriankumpf/teslamate/issues/1398


TimoD

#206
Wäre die Nutzung hiervon vielleicht eine Lösung:

https://github.com/tomhollander/TeslaAuth




-------
btw. Das Php Skript funktioniert nicht mehr

swhome

Hm.. wie könnte man sowas von Perl aufrufen? Google sagt mit Mono kann man C# unter Linux kompilieren, kennt das wer? Ich bin leider nur in Java zuhause.
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

lichtimc

Optimalerweise sollten die sämtlichen notwendigen Requests schon über perl erfolgen. Ansonsten muss nur zum Zwecke dieser einen Bibliothek eine neue Laufzeitumgebung eingerichtet werden. Das ist aus performance- und übersichtlichkeitsgründen nicht empfohlen.

Natürlich kann aber das erwähnte Script als Basis für die erforderliche Vorgehensweise beim Login herangezogen werden.

In dieser Doku fehlt ja derzeit noch die MFA:
https://tesla-api.timdorr.com/api-basics/authentication

TechnoTron

Funktioniert das PHP Script bei jemanden?
Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.