[Modul] Tesla

Finde ich auch kontraproduktiv… möchte nicht das mein Fahrzeug alle Stunde geweckt wird. Und wenn, dann möchte ich die Kontrolle darüber haben und das ausschalten können.

Gruß Torsten

Wir bekommen das Problem bestimmt noch gelöst. Ich habe im Moment nur etwas weniger Zeit.

Grüße,
Kai

Ein neuer Fehler?

`05.11.2021, 13:15:00 | ScriptEngine         | Result for Event 42315

Warning: 
Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php:545
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php(545): json_decode(false, true)
#1 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php(123): TeslaSplitter->sendRequest('/vehicles/68357...')
#2 C:\Windows\System32\-(3): TeslaSplitter->ForwardData('{"DataID":"{514...')
#3 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php on line 545
 in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\libs\TeslaHelper.php on line 18

Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\libs\TeslaHelper.php:18
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\libs\TeslaHelper.php(18): json_decode(false, true)
#1 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaVehicleControl\module.php(100): TeslaVehicleControl->isOnline()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(1335): TeslaVehicleControl->State()
#3 C:\ProgramData\Symcon\scripts\32971.ips.php(91): Tesla_State(28709)
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\libs\TeslaHelper.php on line 18
`

Kann auch den Splitter nicht mehr aufrufen:

Konnte Konfigurationsform nicht laden
Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php:545
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php(545): json_decode(false, true)
#1 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php(494): TeslaSplitter->sendRequest('/vehicles')
#2 C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php(94): TeslaSplitter->getVehicles()
#3 C:\Windows\System32\-(3): TeslaSplitter->GetConfigurationForm()
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tesla\IPS-TeslaSplitter\module.php on line 545 (Code: -32603)

Bin ich damit allein?

LG, Peter

Bei mir kommt der Fehler nicht.

Danke für den Hinweis.
Habe den Splitter neu angelegt, jetzt geht es wieder!

@emtek, hat mir einen PR zukommen lassen. Er hat das Problem mit dem refreshen des Tokens gelöst, da ich gerade wenig Zeit habe. Vielen Dank dafür.
Es ist nun auch gemerged, ihr könnt es ja mal testen.

Grüße,
Kai

Hallo Kai,
es funktioniert.
Aber:

  1. evtl. muss ich 2 mal eine Abfrage machen (beim ersten mal passiert anscheinen nichts)
  2. habe letzte Nacht 6% Batterieladung verloren (beobachte ich noch weiter)

LG, Peter

Hallo,
ich bin mal so frech und antworte für Kai.
zu 1) könntest du bitte das Statusprotokoll anhängen. Musst du immer 2 Abfragen machen?
zu 2) das kann nicht wirklich mit dem refresh des Tokens zu tun haben, da das Auto dafür nicht geweckt wird.

lg, Bernhard

Da könnte es sein, dass bei der ersten Abfrage der neue Token noch nicht verwendet wird, oder?

Richtig, da werden nur die Server von Tesla abgefragt, aber noch nicht das Auto und somit sollte das Auto auch nicht geweckt werden.

Grüße,
Kai

Das kann ich mir nur bei der aller ersten Abfrage die mit der neuen Version gemacht wird vorstellen.
Es wird ja vor jedem Request geprüft ob der Token abgelaufen ist (sogar mit 30 Minuten Offset).

Was ich mir eher vorstellen kann ist, dass ein Befehl an ein schlafendes Auto geschickt wird. Das muss dann erst aufwachen und das kann dauern.

lg Bernhard

Das klingt plausibel.

Grüße,
Kai

Hallo Bernhard, Hallo Kai,

ja ihr habt das richtig eingeschätzt.
Wenn TESLA schläft werden alle Abfragen nicht ausgeführt (vehicle unavailable). Es wäre hilfreich wenn man einen Rückgabewert abfragen könnte.

Der Ladeverlust hat sich nicht wiederholt, letzte Nacht war sogar eine Erhöhung drin. Das liegt wohl am Batteriemanagement. Ich hatte an beiden Tagen mit 2KW geladen.

Danke für die Rückmeldungen, Peter

Bekommst du kein false zurück?

Grüße,
Kai

leider nicht.
Kann das evtl. jemand testen, um Fehler meinerseits auszuschliessen?
Rückmeldung ist leer (oder true?) Protokoll steht

10.11.2021, 11:07:05 | Tesla                | Vehicle unavailable

Grüße, Peter

Bei welcher Instanz passiert das?
Also was fragst du da zur Zeit ab?

Grüße,
Kai

das sind meine Testabfragen:

$result     = Tesla_State($id_tvc);			// $result enthält "online" oder "asleep" - TESLA wird nicht geweckt!
echo "Ergebnis State: ".$result."\n";
$result     = Tesla_FetchData($id_tch);		// TeslaCharging
echo "Ergebnis :".$result.":\n";

und das kommt zurück:

Ergebnis State: asleep
Ergebnis ::

Versuche bitte mal:

//echo "Ergebnis :".$result.":\n";
print_r ($result);

Da kommt ganz sicher false zurück. Wahrscheinlich wird das Auto nicht geweckt für den Datenabruf.
Leider steht ja nirgends offiziell wie das mit dem Aufwecken und Schlafen funktioniert, aber ich glaube es ist so:

Wenn das Auto schläft musst du den Aufwecken Befehl schicken bevor andere Aktionen oder Datenabruf funktionieren.
Wenn das Auto munter ist, schläft es erst ca. 10 bis 20 Minuten nach der letzten Aktion / Datenabruf wieder ein.

Ich habe mir eine Funktion geschrieben die die Daten abruft solange das Auto munter ist, es aber auch einschlafen lässt.

lg Bernhard

Hallo Bernhard,
auch mit print_r keine Ausgabe.

Ich frage normalerweise auch nur ab, wenn mein Tesla ladet. Dann ist er ja schon wach.
Ansonsten muss ich halt vorher wecken.

LG, Peter

Moin, mein Tesla ist seit 5 Wochen in der Werkstatt, daher kann ich nicht mit testen (Service Mode).

Ich frage so ab:

if
        (
        ($VAR_WallboxLeistung > 50) or
        ($VAR_Waechter == true) or
        ($VAR_Geschwindigkeit !== "") or  
        ($VAR_Verschlossen == false) or
        ($VAR_Klima_Aktiv == true)
        )

        {
            echo "\n";
            echo "Abfrage startet!"."\n";
            echo "\n";
            //Abfage ausgeführt loggen
            $VAR_Abfrageprotokoll = GetValue ($ID_Abfrageprotokoll);
            SetValue ($ID_Abfrageprotokoll, ($VAR_Abfrageprotokoll + "1"));
            
            IPS_RunScript ($ID_FetchdataSkript);

            $AutoOnline = "true";
            //echo "Auto ist Online!"."\n";

Dann und hole ich mir noch einzeln den State, wenn der Online ist frage ich einmal die Stunde ab, damit das Aut auch einschlafen könnte (was meiner nicht kann, weswegen er unter anderem bei Tesla ist)

Hallo zusammen,

seit geraumer Zeit lese ich hier zum Thema schon mit und das Abfragen der Daten von meinem Fahrzeug (M3) funktioniert sehr gut. Wenn das Fahrzeug schläft, frage ich den Status jede Minute ab. Damit verliere ich beim Losfahren maximal eine Minute an Daten. Ist das Fahrzeug wach und der Fahrer anwesend, frage ich alle 30 Sek. ab. Ist weder der Fahrer anwesend, das Fahrzeug verschlossen, der Ladestrom < 1A, die Klima aus und der Wächtermodus nicht aktiv, frage ich nur alle 30 Min. ab, so dass der Tesla einschlafen kann. Ist er nach dieser Zeit tatsächlich eingeschlafen, frage ich wieder jede Minute ab.
Aber mal was anderes: Mit der neuesten Softwareversion der Tesla APP besteht jetzt die Möglichkeit der Vorgabe des Ladestroms. Hier wäre eine ganz einfache Möglichkeit gegeben, den Ladestrom abhängig vom Überschuss einer installierten PV-Anlage zu steuern.

@KaiS Hallo Kai. Hast Du eventuell noch vor, diese Variable in das Tesla Vehicle Control zu implementieren? Wäre eine super Geschichte.

Liebe Grüße

Armin