[Modul] Tesla

habe ich im Tesla-Splitter gemacht
TeslaSplitter_resetPairing ausgewählt und oben rechts auf „ausführen geklickt“
Danach immer noch Fehler

Kannst du die aktuelle Beta Version nochmal testen?

Grüße,
Kai

sorry , hat etwas länger gedauert (habe nochmal die Token überprüft.
Fehler bleibt.

Kommando zurück,
die alten Token funktionieren

so, habe jetzt nochmal alles gründlich getestet.
Es funktioniert auch mit den neuen Tokens.

Also mal die nächsten 8 Stunden abwarten, ob die Token refreshen.

Grüße, Peter

so, die 8 Std. sind rum und das Modul geht wieder auf Fehler :sneezing_face:

aufgefallen im LOG:

19.10.2021, 10:43:43 | tokenExpires         | {"year":2021,"month":11,"day":27}

das ist das Verfalldatum der „alten“ Token.

Grüße, Peter

Ich schaue mir das nochmal an.
Du müsstest per Hand die Token ja ändern können.

Grüße,
Kai

ja, alle 8 Stunden…

der access-token reicht, aber es muss ein resetPairing erfolgen.

Gruß, Peter

Kannst du mal folgendes versuchen?

Wenn der Token nicht funktioniert, dann nutze nicht resetPairing() sondern refreshToken().
Bei mir scheint es dann wieder zu funktionieren.

Wenn das funktioniert, dann werde ich alle 7 Stunden oder so diese Funktion ausführen.

Grüße,
Kai

Hallo Kai,
resetPairing() war erforderlich, wenn ich den Token manuell geändert habe.

Habe jetzt mal refreshToken() ausprobiert, aber ohne Erfolg.
Im Splitter muss doch der neue Token stehen, damit er bei der nächsten Abfrage auch benutzt wird?

Gruß, Peter

Eigentlich nicht, ich speicher die anderen dann intern.
Ich teste es nochmal.

Grüße,
Kai

Hallo, wenn ich refreshToken() ausführe bekomme ich folgende Fehlermeldung:

Warning: Attribut expires_in ist nicht vom Typ String in /var/lib/symcon/modules/.store/info.schnittcher.ips.tesla/IPS-TeslaSplitter/module.php on line 477

Das Konfigurationsformular geht dann auch nicht mehr mit folgendem Fehler:

Warning: Attribut expires_in ist nicht vom Typ String in /var/lib/symcon/modules/.store/info.schnittcher.ips.tesla/IPS-TeslaSplitter/module.php on line 507

Nach einem resetPairing() funktioniert das Formular wieder, aber die Einstellung „expires_in“ ist nicht in dem Formular sichtbar. Vielleicht weil ich die Version mit den Tokens die länger gültig sind nicht in Betrieb hatte und deswegen der Wert leer ist?

Als Workaround habe ich mir auf iOS in der Kurzbefehle App ein Skript geschrieben, dass den neuen Token aus der Auth for Tesla App über Http in Symcon einem Skript übergibt. Falls wer Interesse hat kann ich das gerne teilen.
Bernhard

Hallo Bernhard,
expires_in gibt es irgendwie nicht mehr, das kann aber nur Kai beantworten.

Den workaround für IOS-Kurzbefehl würde mich stark interessieren.

Gruß, Peter

…mich auch :+1:
Gruß Michael

Für die Kurzbefehle App braucht ihr:

  1. folgendes Skript in Symcon:
define('TESLA_SPLITTER_ID', 51666);
define('TESLA_VEHICLECONTROL_ID', 54441);
define('UPDATE_SECRET', 'secret');

$secret = isset($_POST['secret']) ? $_POST['secret'] : '';
$accessToken = isset($_POST['accesstoken']) ? $_POST['accesstoken'] : '';

if($secret != UPDATE_SECRET){
    die('no access');
}
if($accessToken == ''){
    die('no token');
}

IPS_LogMessage('Tesla Access Token', substr($accessToken, 0, 10));

TeslaSplitter_resetPairing(TESLA_SPLITTER_ID);

$config = json_decode(IPS_GetConfiguration (TESLA_SPLITTER_ID));
$config->AccessToken = $accessToken;

IPS_SetConfiguration(TESLA_SPLITTER_ID, json_encode($config));
IPS_ApplyChanges(TESLA_SPLITTER_ID);

Tesla_State(TESLA_VEHICLECONTROL_ID);

echo 'OK';
  1. Einen Webhook „/hook/teslaaccesstoken“ welcher das Skript aufruft.

  2. Den Kurzbefehl Tesla Token.shortcut
    Die Datei dann mit der Kurzbefehle App importieren. Beim Import wirst du dann nach der Symcon Url gefragt, diese ist die https://***.ip-magic.de/hook/teslaaccesstoken (die *** bekommt man am einfachsten im Connect Control → per E-Mail senden)

  3. Das Secret ändern.
    Im Code ‚UPDATE_SECRET‘ ändern. In dem Shortcut „Inhalte von …“ bearbeiten das gleiche Geheimwort eintragen.

Ich hoffe es ist halbwegs nachvollziehbar, es ist nicht perfekt hat aber ein funktionaler Workaround.
Man kann übrigens auch in der Kurzbefehle App Uhrzeit basierte Automationen für den Shortcut einrichten (Kurzbefehl ausführen: Tesla Token). Das funktioniert aber nicht immer, da weiß ich aber nicht wieso.

Bernhard

Ich hatte das mit den Kurzbefehlen auch schon überlegt, aber cooler wäre es halt direkt im Modul.

Aber ich schaue mir das mit dem Fehler nochmal an. Ich weiß schon, was da passiert. Evtl. schaue ich heute Abend nochmal.

Grüße,
Kai

Es gibt eine neue Beta Version.

Könnt ihr mal die Funktion refreshToken erneut testen?
Bei mir funktioniert es mit dem Auto von @Dustin723.

Grüße,
Kai

1 „Gefällt mir“

Hallo,
ich hab’s gerade getestet. Es kommt keine Fehlermeldung im Log steht:

22.10.2021, 13:59:08 | Refresh              | {"access_token":"***","expires_in":28800,"token_type":"Bearer"}
22.10.2021, 13:59:12 | time                 | 1634903952
22.10.2021, 13:59:12 | tokenExpires         | 1634932752

Der Abruf der Daten funktioniert auch noch.
Wird der Refresh jetzt automatisch gemacht?

Ich teste es wenn ich am WE aus dem Urlaub zurück bin. Einloggen geht sicher bei meinem Auto, aber ich glaube man bekommt keine Daten so lange der im Service Mode ist.

bekomme Fehlermeldung:

22.10.2021, 21:53:05 | Refresh              | {"error":"server_error","error_description":"Internal server error","error_uri":"https://auth.tesla.com/error/reference/1346b5bb-2f25-4448-bff0-bcda122c046b-1634932384921"}

ich habe extra gewartet bis der token abgelaufen war.

Gruß, Peter

Das sollte automatisch passieren.

Grüße,
Kai

Das hat dann ja eher was mit den Servern zu tun. Kannst du es nochmal versuchen?

Grüße,
Kai