Modul für Tesla Model S / 3 / X

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

Vorheriges Thema - Nächstes Thema

Gunther

Ja, mit der 1 und 0 kann ich bestätigen. Leider geht das anscheinend nicht über mein FHEM. Per App gesteuert schalten auch die Readings um.
Ein "Set" von nicht in die App eingebauten Befehlen bekomme ich nicht hin.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

NewRasPi

Zitat von: Gunther am 20 Januar 2022, 08:57:02
Ja, mit der 1 und 0 kann ich bestätigen. Leider geht das anscheinend nicht über mein FHEM. Per App gesteuert schalten auch die Readings um.
Ein "Set" von nicht in die App eingebauten Befehlen bekomme ich nicht hin.

Hallo Gunther
hast Du jeweils vor dem set Befehl erst mal das aufwecken gesendet?
Ich könnt mir vorstellen das der Tesla im "sleep- Modus" keine Anweisungen annimmt/ ausführt.
set <FIN> wakeUpCar 
gibt es ja in der Drop Down Liste der set Befehle

Set
    wakeUpCar
    If the car is in state 'asleep', it can be put to 'online' using this call

Grüße
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

speedAmaster

Zitat von: Gunther am 19 Januar 2022, 22:33:20
Für die, denen FHEM auch beim scannen nach dem Auto immer abstürzt:

Ich habe es geschafft:

Über die Kommandozeile habe ich
set MeinTeslaDevice init

eingegeben.

Danach konnte ich das Attribut
attr MeinTeslaDevice AccessToken ...
setzen.

Danach ist FHEM nicht abgeschmiert beim
set MeinTeslaDevice scanCars

Obwohl ich die FHEM Module 49_Tesla* ersetzt habe, den init, den AccessToken, den login geschafft habe: bei scanCars stürzt FHEM gnadenlos ab. Bekomme ich nur wieder über "sudo service fhem restart" zum Laufen....

Woran kann es liegen?

PS: habe es mehrfach versucht...

Gunther

Hast Du erfolgreichen Login UND AccessToken vor dem Scan erledigt?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

speedAmaster

#319
@Gunther: ja. ich habe LOGIN und AccessToken UND init geschafft. Status is connected.

das ist ja das Sonderbare, da auf meiner alten FHEM Instanz hat es noch einem einmaligen Absturz beim 2ten Versuch funktioniert. Da ich aber auf einen neuen Server umgezogen bin muss ich hier alles neu aufsetzen und jetzt hänge ich hier völlig fest...... :-(

TechnoTron

@speedAmaster
Ich hatte das auch, bei mir war das Problem, dass der Token abgelaufen ist.
Mittlerweile ist die Anbindung an die Tesla API über Fhem aber nicht mehr nutzbar. Alle paar Tage muss man den Token aktualisieren obwohl man sogar mit dem Owner Token arbeitet.

Das Käseparadoxon.

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

Elektrolurch

Hallo,

meines Wissens und meiner Erfahrung nach funktioniert der Aufruf mit dem login nicht mehr, da ja Tesla vor einiger Zeit die 2-Faktor Authentifizierung umgestellt hat.
Ich habe mir einen AccessToken und den ersten RefreshToken mit der "TeslaToken" App generiert.
Die Funktion "RefreshToken" in dem Modul "49_TeslaConnection.pm" habe ich entsprechnd umgebaut.
Die beiden Tokens werden nicht mehr in einem Attribut (Klartext!!!!), sondern mit der fhem - Funktion "SetValue" gesichert und mit "GetValue" wieder eingelesen.
Der set - Funktion von TeslaConnection habe ich eine Erweiterung "AccessToken" verpasst, mit der ich einmalig (statt des logins), die beiden Tokens aus der App mit SetValue verschlüsselt in fhem speichere.
Das Alter des "RefreshTokens" wird gemerkt und vor Ablauf mit der Funktion RefreshToken ein neuer RefreshToken generiert und wieder mit SetValue in fhem gesichert.
Die App "TeslaToken" habe ich eigentlich nur einmal am Anfang für den AccessToken benötigt. Ich habe mir hierbei den Netzwerk - Verkehr angesehen und es sieht tatsächlich so aus, als würde die App nur lokal arbeiten und nichts nach aussen weitergeben.

Es sieht so aus, als würde das jetzt stabil funktionieren, habe aber noch nicht alle Fälle durchgespielt... so dass ich den vollständigen Code noch nicht weiter geben möchte, da ich leider wenig Zeit habe, um Support dafür leisten zu können.

Elektrolurch
configDB und Windows befreite Zone!

Gunther

Das klingt ja schon sehr vielversprechend! Danke für Deine Arbeit!
Bin gespannt.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Elektrolurch

#323
Hallo Tesla / FHEM - Gemeinde,

trotz gültigem Token bekomme ich seit 26.1.2022 ca. 19:00 Uhr über die API von Tesla nichts mehr zurück.
Der AccessToken war erst wenige Tage alt und noch einige Wochen gültig.
Auch mit einem neuen Token geht nichts mehr.
Ist jemandem bekannt, das Tesla was an der API gemacht hat?
Wir hatten das ja schon mal vor einiger Zeit, dass der login weggefallen ist....?

Elektrolurch

P.S.:
noch Mals geändert. Der Link hier ist vom letzten Jahr gewesen, hatte noch 2021 im Kopf, also für das jetzige Problem nicht mehr relevant... :-)
configDB und Windows befreite Zone!

abc2006

Failed to connect to TeslaCar API, see log for details

2022.01.30 11:06:00.815 4: LRW3E7FA0MC336661 request: https://owner-api.teslamotors.com/api/1/vehicles
2022.01.30 11:06:00.815 4: LRW3E7FA0MC336661: no token to be refreshed
2022.01.30 11:06:01.010 4: LRW3E7FA0MC336661 response:


Habe jetzt auch das Problem festgestellt. Wenn es bei dir funktioniert, wäre es super, wenn du deinen Code teilen würdest.
lg,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Elektrolurch

Hallo Stephan,

hatte in den vergangenen Monaten schrittweise in den beiden Modulen (TeslaConnection, TeslaCar) aufgeräumt, aber in den letzten Tagen keine relevanten Änderungen mehr vorgenommen.
Offensichtlich scheint es ja nicht an meinen Code - Änderungen zu liegen,  denn habe jetzt 2 Tage noch einmal gründlich revidiert.

1. Egal was ich an die API schicke, der response (data) ist leer, aber ein Fehlercode wird auch nicht gesetzt.
2. Das Modul HttpUtils.pm ist vom 19.1.2022, hat also noch mindestens 7 Tage mit der Tesla-API zusammen gespielt. Andere Zugriffe über das HttpUtils funktionieren auch ohne Probleme.
3. Habe komplett einen Stand vom 9.1.2022 mal zurückgespielt. Die API von Tesla reagiert trotzdem nicht.
4. Die Tesla-App funktioniert.
5. Die App "TeslaToken" funktioniert. Habe mir einen neuen Access- und Refresh-Token generieren lassen. In der App gibt es zum Testen einen "Playground" Tab, mit dem man einen Befehl an das Auto schicken kann.
Das funktioniert mit dem neu generierten Token. Da wird sogar der komplette string des response in der App angezeigt. Also kein fake.
Das Token-Pärchen funktioniert aber nicht in fhem.

Jetzt brauche ich Nachhilfe in Latein... :-)

Elektrolurch

configDB und Windows befreite Zone!

abc2006

Hi,
sowas habe ich schon befürchtet.
Danke!
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Jaykoert

Ich denke ich habe den Fehler gefunden. Mit

httpversion => "1.1",

als zusätzlichen Parameter sollte es funktionieren. Der Tesla Server meldet HTTP/1.1 426 Upgrade Required.

Leider sind meine Perl-Fähigkeiten echt sehr begrenzt und ich scheitere die ganze Zeit an PERL WARNING: Use of uninitialized value Meldungen im Log. Das Modul ist sehr fehleranfällig und dazu meine Unwissenheit.

Mal so ein paar Anfängerfragen in die Runde.
Wie kann ich eine Logausgabe machen, wenn die Werte evtl. uninitialized sind, z.B. sowas hier:
Log3 $name, 5 , "$name request params: $param Error: $gkerror Token: $token";
oder
if (ReadingsVal($hash->{NAME}, "state", undef) ne $car->{state}) {

 



mahil

mit

if (! defined($var)) {
  # Fehlermeldung wenn $var nicht initialisiert
}

könntest du diese "uninitialized" Fehlermeldungen abfangen.

Deine zweite Anfrage könnte etwa so gelöst werden:

if (defined(ReadingsVal($hash->{NAME}, "state", undef)) && ReadingsVal($hash->{NAME}, "state", undef) ne $car->{state}) {
Raspberry Pi4; CUL_MAX: MAX! Heizkörperthermostat basic; Zigbee über Deconz ConBee II: Xiaomi (Thermostate, Fenstersensoren, Bewegungsmelder), Ikea (Bewegungsmelder, Repeater, Leuchtkörper); Shelly: Dimmer, Schalter; Tasmota: Steckdosen, Rollladenschalter

Jaykoert

Danke mahil für deine Hinweise.

Ich habe jetzt soweit alles umgestellt und nun funktioniert bei mir das Modul wieder. Einfach herunterladen und im FHEM-Verzeichnis ersetzen.