Hallo allseits, gibts ausser mir hier noch Tesla Fahrer? Es existiert ja ein cloud basiertes API, welches von den Apps verwendet wird. Ich hab ein Modul dafür gebastelt, hauptsächlich damit FHEM den Ladezustand kennt und das Laden sowie die Heizung starten / stoppen kann. Es kommt eine Riesenmenge an Readings rüber, bestimmt sind noch andere Anwendungen denkbar.
Zur Installation / Update muss in der FHEM Befehlszeile folgendes eingegeben werden:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
Alexa, fahr schon mal den Wagen vor?
Zumindest "Alexa schalte Tesla Heizung ein" wird diesen Winter schon funktionieren.
Das mit dem Fahren traue ich weder dem Auto noch der Alexa schon unfallfrei zu ;)
https://www.youtube.com/embed/CAP3DbyOtGE
Alexa und ein fhem-gesteuertes Garagentor habe ich schon. Jetzt bräuchte ich nur noch einen Tesla :D
Zitat von: swhome am 17 Juli 2017, 13:14:37
Das mit dem Fahren traue ich weder dem Auto noch der Alexa schon unfallfrei zu ;)
Nennst dein Auto aber KITT :-p
Genau, KITT wird im Funktionsumfang nämlich ständig erweitert. Das autonome Fahren lernt er also bestimmt auch noch irgendwann.
Das Tesla-Modul ist jetzt auf github: https://github.com/sw-home/FHEM-Tesla
Grüßt Euch,
jedes mal wenn ich ein "define teslaconn TeslaConnection" machen möchte bekomme ich als Ausgabe "Cannot load module TeslaConnection"
Update to Date ist alles
Moin Moin,
ich habe das Problem das sich FHEm aufhängt und jedesmal ist der letzte Logeintrag:
"malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html>\n<ht...") at ./FHEM/49_TeslaCar.pm line 211 "
Dazu habe ich mal das gefunden https://forum.fhem.de/index.php/topic,71737.msg632648.html#msg632648
Kann man das fixen?
Gruß Gerd
Es gibt mittlerweile auch den Alexa Skill "my Vallet", damit sind viele Sachen möglich.
Ich werde aber in der nächsten Zeit es ebenfalls hiermit ausprobieren. Dabei habe ich vor allem eine Anwesenheitserkennung des Fahrzeugs im Kopf, um in einem bestimmten Radius die Heizungen zu schalten.
Zitat von: moes am 08 November 2017, 15:40:48
jedes mal wenn ich ein "define teslaconn TeslaConnection" machen möchte bekomme ich als Ausgabe "Cannot load module TeslaConnection"
Hi, das Modul muss im Moment noch manuell installiert werden, ich habe die Beschreibung im ersten Eintrag diesbezüglich erweitert.
Zitat von: Gerd am 13 November 2017, 19:31:24
Moin Moin,
ich habe das Problem das sich FHEm aufhängt und jedesmal ist der letzte Logeintrag:
"malformed JSON string
Hallo Gerd, das ist bei mir auch passiert und inzwischen hab ich den Fehler behoben. Mach einfach mal ein Update des Moduls.
Zitat von: Allan Sche Sar am 18 November 2017, 09:21:32
Dabei habe ich vor allem eine Anwesenheitserkennung des Fahrzeugs im Kopf, um in einem bestimmten Radius die Heizungen zu schalten.
Das mache ich einfach mit einem notify auf die Position:
if ($position =~ m/.*48.788.*11.349.*/ ) {
Lg
Stefan
Echt so einfach ist das? Und wie gibst du dann den Radius ein? Also um die Koordinate die du angegeben hast davon X m entfernt
Oh für eine korrekte Entfernungsberechnung ist diese Zeile tatsächlich zu simpel, ich vergleiche einfach nur die ersten paar Ziffern der Geokoordinaten. Vermutlich kommt dabei dann eher ein Rechteck raus und kein Kreis. :)
Beim Update habe ich folgenden Fehler:
2017.11.19 18:04:13 1 : RMDIR: ./restoreDir/2017-11-15
2017.11.19 18:04:13 1 : UPD FHEM/49_TeslaCar.pm
2017.11.19 18:04:14 1 : Got 23045 bytes for FHEM/49_TeslaCar.pm, expected 22199
2017.11.19 18:04:14 1 : aborting
Sorry, da war noch ein Fehler drin. Nun müsste das Update durchlaufen.
Alles klar, läuft. Danke
Habe heute FHEM auf einem Windows Server installiert und einige MAX Thermostate und den Tesla eingebunden.
Beim Tesla hatte ich folgendes Problem.
Beim Aufruf "define teslaconn TeslaConnection" kam die Meldung "Cannot load module TeslaConnection".
In der Logdatei steht:
reload: Error:Modul 49_TeslaConnection deactivated:
Can't locate Switch.pm in @INC (you may need to install the Switch module)
Nach der Installation von Switch.pm hats funktioniert. Das Modul gibts auf http://search.cpan.org.
Danke funktioniert super. Werde mich demnächst damit näher auseinander setzen.
Wie installiere ich denn das Switch.pm Modul? Bisher habe ich alles nur über GitHub installiert.
Ist das das korrekte Modul? http://search.cpan.org/~lausser/Monitoring-GLPlugin-2.4.14.1/
Nicht schlecht - hatte auch schon die Idee, da mal was zu basteln.
In Verbindung mit dem SMAEM Modul (falls man SMA bei der Photovoltaik nutzt), kann man sich eine teurere Wallbox ersparen und prognostiziertes Laden umsetzen.
Fehlt nur noch mein Modell 3 :).
Zitat von: Allan Sche Sar am 25 November 2017, 20:36:26
Wie installiere ich denn das Switch.pm Modul? Bisher habe ich alles nur über GitHub installiert.
Ist das das korrekte Modul? http://search.cpan.org/~lausser/Monitoring-GLPlugin-2.4.14.1/
Ich bin kein Spezialist sondern Leihe. Ich habe dies http://search.cpan.org/~chorny/Switch-2.17/Switch.pm installiert.
Die Datei Switch-2.17.tar.gz heruntergeladen, entpackt und die Datei switch.pm in den Ordner FHEM kopiert.
Switch sollte eigentlich in den meisten Linux Distributionen als Paket enthalten sein. Auf einem Raspberry zum Beispiel genügt das hier:
sudo apt-get install libswitch-perl
Tatsache mit dem Befehl hat es geklappt. Mal schauen, wann ich das nächste Mal testen kann.
Ich habe ein Update mit kleinen Verbesserungen veröffentlicht, unter anderem werden FHEM crashes bei ungültigen Antworten des Tesla API vermieden. Bitte aktualisieren und berichten ;)
blöde frage wie bekomme ich die Readings?
habe alles installiert und denke auch richtig den er hat sich die VIN und den Namen des Autos Selber geholt aber ich bekomme keine readings angezeigt.
was habe ich vergessen oder falsch gemacht?
edit:
Also Steuern kann ich es alles soweit ich des sehen kann man zumindest zeigt mir die Tesla APP des gleiche an
Mach mal set [vin] init oder speichere die Settings und starte FHEM neu, vielleicht aktualisiert es dann. Ansonsten mal im logfile nachschauen ob da Fehlermeldungen zu sehen sind.
Danke für die Antwort.
Zitat von: swhome am 02 Oktober 2018, 22:31:59
set [vin] init
brachte keine lösung.
ein Neustart vom RasPi und FHEM auch nichts.
Update habe ich auch alles gerade. Alles auf dem aktuellen Stand.
Im LOG fand ich das zb.
2018.10.03 09:45:15 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/49_TeslaCar.pm line 234.
oder schon vorher das
2018.10.03 09:23:39 2: 5YJSA7E29GFXXXXXX can't get https://owner-api.teslamotors.com/api/1/vehicles -- https://owner-api.teslamotors.com/api/1/vehicles: Select timeout/error:
wo liegt da mein Fehler Begraben weil eine Verbindung zum Fahrzeug hat er ja kann ja alles Steuer nur bekomme ich keine Antwort
Jetzt habe ich alles neu aufgesetzt und bekomme die Readings.
Aber bekomme diese beiden Meldungen im Log.
2018.10.03 12:01:01 2: 5YJSA7E29GFXXXXXX event channel received an http error: HTTP/1.1 401 Unauthorized
2018.10.03 12:01:08 2: error while requesting https://owner-api.teslamotors.com/api/1/vehicles/4588391398xxxxx64/data_request/charge_state - read from https://owner-api.teslamotors.com:443 timed out
Zitat von: swhome am 04 August 2017, 19:35:30
Genau, KITT wird im Funktionsumfang nämlich ständig erweitert. Das autonome Fahren lernt er also bestimmt auch noch irgendwann.
Das Tesla-Modul ist jetzt auf github: https://github.com/sw-home/FHEM-Tesla
Darf ich noch fragen wie du das hier mit dem aktuellen Standort gemacht hast?
Das ist ein weblink mit einem iframe auf googlemaps. Hatte hier im Forum schon mal jemand gemacht. Man braucht einen eigenen googlemaps API key, und dann sieht die def etwa so aus:
define teslamap weblink htmlCode {'<div style="width: 400; overflow: hidden; height: 300px;"><iframe src="https://www.google.com/maps/embed/v1/place?key=AIzaSyxxxxxxxq8U5P_k&q='.ReadingsVal('5YJSA7E27HF000000','position','').' " width="480" height="480" frameborder="0" style="pointer-events:none; border:0; margin-top: -100px; margin-left: -30px;"></iframe></div>'}
Hallo,
ich nutze das Modul sehr gerne, allerdings fehlen mir ein paar Befehle, die über ander Apps über die API Schnittstellen bereits bedient werden.
Wird an diesem Projekt noch weiter gearbeitet bzw. gibt es ein Update dazu?
- Lock/Unlock
- Fahrzeug fahrbereit schalten (ohne Schlüssel)
- Fenster öffnen/ schliessen
- Schiebedach öffnen/ schliessen
- Front- / Heckklappe ansteuern
etc ...
Soweit erstmal vielen Dank,
Mfg.
Zitat von: data_001 am 10 Januar 2019, 11:11:51
Hallo,
ich nutze das Modul sehr gerne, allerdings fehlen mir ein paar Befehle, die über ander Apps über die API Schnittstellen bereits bedient werden.
Wird an diesem Projekt noch weiter gearbeitet bzw. gibt es ein Update dazu?
- Lock/Unlock
- Fahrzeug fahrbereit schalten (ohne Schlüssel)
- Fenster öffnen/ schliessen
- Schiebedach öffnen/ schliessen
- Front- / Heckklappe ansteuern
etc ...
Soweit erstmal vielen Dank,
Mfg.
Wie öffnet man die Fenster über die App? geht bei der Organal doch gar nicht oder?
aber ich denke mal des wird alles aus Sicherheits gründen nicht mit drin sein im Modul
Hi, ich hab jetzt lange nichts mehr geändert weil alles funktioniert was ich brauche. Generell müsste jede Funktion möglich sein die auch in in der App möglich ist. Das API ist hier dokumentiert: https://tesla-api.timdorr.com/
Die Fensterheber fallen also schon mal aus. Bei den anderen Sachen mache ich mit, wenn ich verstehe wozu man das brauchen könnte :) Der schon genannte Sicherheitseffekt spielt natürlich auch eine Rolle.
Letztlich kann auch jeder gern beim Coden mithelfen, das Modul ist ja auf github und ich empfange gern pull requests.
Lg!
Stefan
Hallo,
vielen Dank für deine Antwort.
Erstmal vorne weg, nicht alles was in der Technik geht ist mit Sinn - manchmal geht es einfach nur darum zu sehen was und vor allem wie es geht ;)
Ich würde nicht sagen, dass ich das alles brauche - aber damit würde FHEM eine App ersetzen und ich habe alles Zentral auf meinem Pad ...
Such ich mal ein paar Gründe, warum diverse Funktionen ach in FHEM aktiviert werden sollten:
(manches geht bereits das nutze ich auch, manches geht noch nicht ist halt eine wunschvorstellung ...)
- Fenster: Ist korrekt, das geht auch über eine App nicht, wäre aber schön, schon alleine aus dem Grund, wenn der Wagen abgestellt wurde und man später erkennt, dass diese halt noch offen sind bzw. automatisiert über ein notify nach abstellen auf der Home position nach 10 min automatisch alles geschlossen wird (Schiebedacht und Heckklappe ginge ja ...)
/offtopic "Zusatz: Leider hab ich auch über den Funk Schlüssel nicht erkennen können, wie ich die Fenster nach oder bei dem LOCK mit verschliessen kann" /ontopic
- Lock/Unlock, Schiebedach, Heckklappe wie oben, geht über die "Tesla App" und auch über "Remote S" aber ohne Programmierlogik
- Frunk macht in der Tat kein Sinn, da dieser dann wohl offen bleibt ...
- Fahrbereit schalten ... nur weils halt geht ... ;)
- Klimatisierung und Vorheizen ... at Steuerung über FHEM ohne z.B. an "Teslafi" zu outsourcen ...
An die API trau ich mich aktuell noch nicht ran,
MfG
Moin!
Deine Motivation ist eigentlich genau wie meine :)
Nur leider ist Zeit eine notorisch knappe Ressource. Etwas zum Probieren hab ich aber schon für Dich: Die Klimatisierung steuern ist in FHEM schon möglich weil meine Frau gern in ein warmes Auto einsteigt:
set vin startHvacSystem
If the car is in state 'online', it will start the air conditioning system
set vin stopHvacSystem
If the car is in state 'online', it will stop the air conditioning system
Das entspricht dem Einschalten der Heizung über die App.
sag mal ist des mit der API auch möglich die Daten seiner Powerwall (Gateway) zu nutzen?
Ist ja in der Tesla App auch mit drin.
Hi,
für die Powerwall 2 gibts schon ein Model Modul (falls es eine 2 ist): https://commandref.fhem.de/#TeslaPowerwall2AC (https://commandref.fhem.de/#TeslaPowerwall2AC)
Viele Grüße
Johannes
Zitat von: jojoja am 30 Januar 2019, 19:16:19
Hi,
für die Powerwall 2 gibts schon ein Model Modul (falls es eine 2 ist): https://commandref.fhem.de/#TeslaPowerwall2AC (https://commandref.fhem.de/#TeslaPowerwall2AC)
Viele Grüße
Johannes
ja Danke das weis ich war ja nicht unbeteiligt. Läuft auch soweit gut aber die app zeigt noch paar werte an die ich so nicht bekomme bzw. nur selbst berechnen muss.
Hallo Leute,
finde die Arbeit hier schon sehr genial, dass es für fast jedes Gerät ein Modul gibt. Aber hier bin ich mit meinem Latein ein bisserl am Ende, da in der CommandRef nichts über das Modul zu finden ist. Installiert hab ichs und irgendwo muss ich die Logindaten ja eintragen oder muss man dafür das File editieren. Leider geht das aus dem readme File auf github nicht hervor.
Glaub ich brauch hier nur den richtigen Anstoß. ;)
Nachtrag:
Ich habs nun gefunden, da die interne CommandRef ewig lädt und erst nach über 3 Minuten aufgeht, hab ich die nie verwendet. Im FHEM Menü eurer Installation findet man diesen Punkt recht weit unten und dort findet man Stand 09.02.2019 folgenden Text:
Define
define <name> TeslaConnection <api_key> <redirect_url> [simulator]
Defines a connection and login to Tesla.
The following steps are needed:
Define the FHEM TeslaConnection device
define teslaconn TeslaConnection
Execute the set login with your tesla account user name and password, e.g. set teslaconn login user pass
Execute the set scanDevices action to create TeslaCar devices for your vehicles.
Set
scanCars
Start a vehicle scan of the Tesla account. The registered cars will then be created as devices automatically in FHEM. The device scan can be started several times and will not duplicate cars.
refreshToken
Manually refresh the access token. This should be necessary only after internet connection problems.
logout
Delete the access token and refresh tokens, and show the login link again.
lg
Ja genau! Und hast Du es damit zum Laufen gebracht?
Eine neue Version 1.0 des Moduls ist verfügbar und kann per update all installiert werden.
Änderungen:
- enable stateFormat attribute
- renamed chargeLimit reading to charge_limit_soc to improve changing via UI
- add new API data request item "data" which includes everything from the older items vehicle
- charge drive climate gui in one request
- improve polling to support car sleep mode / wakeup
Für bestehende TeslaCar Objekte würde ich empfehlen, das Attribut dataRequest auf den Wert "data" zu ändern. Dieses (relativ) neue API von Tesla beinhaltet alle bisherigen einzelnen Datenpunkte.
Kurze Frage (Modul scheint prima zu Laufen):
Die Werte bei den Timern sind Sekunden oder Minuten?
Sekunden. Hast Du ein M3?
Ja, und probiere gerade die Anbindung.
Ich überlege auch noch was für Apple TV zu basteln - stehe mit Perl auf Kriegsfuß.
Du meinst wohl mit Apple TV eher die HomeKit Anbindung oder?
Zitat von: CarlosTT am 25 Februar 2019, 20:23:43
Ja, und probiere gerade die Anbindung.
Cool! Freut mich zu lesen dass es auch mit dem neuesten Modell funktioniert.
P.S. Apple TV bitte in einem passenden Thema diskutieren ;)
Hallo Stefan,
kannst Du bitte mal ein Screenshot von der SVG Plot Definition machen?
Bevor ich hier lange in der Logdatei suche ...
Danke!
Hat schon einer von euch probiert nach der Beendigung des lade Vorgange sich eine Nachricht (push) zuschicken über paar Infos zum laden Vorgang als zb. "Datum" "von" "bis" "zeit->minuten" "menge->kWh" "Reichweite->" "Standort" usw.
finde kein Reading das mir das beende des lade Vorganges mitteilt. "Chaging_State" gibt es zwar Disconnected aber des Kommt bei mir öfters als die anderen.
Von 115 "charging_state" einträgen im Log habe ich nur einen einzige "charging_state: Complete" und"charging_state: Stopped" und da glaube ich wurde des auto auf 100% geladen als kann ich nicht mit "Complete" "Stopped" als Trigger zu arbeiten und sonst kommt immer
charging_state: NoPower -> charging_state: Starting -> charging_state: Charging ->charging_state: Disconnected
aber von NoPower sind es 12 Einträge, Starting 11, Charging 15 also überhaupt kein Muster zu erkennen.
Vielleicht fällt euch ja was dazu ein......
edit: evtl. auf charge_port_door_open: true / false
Ich nutze die charge_rate für einen watchdog und hab inzwischen eine Überschußladung in Verbindung mit dem SMAInverter Modul hinbekommen.
Das reicht mir erst mal.
Zitat von: CarlosTT am 14 März 2019, 22:36:46
Ich nutze die charge_rate für einen watchdog und hab inzwischen eine Überschußladung in Verbindung mit dem SMAInverter Modul hinbekommen.
Das reicht mir erst mal.
Kannst du das mal bitte näher erklären evtl. in einen anderen Beitrag.
Ich benutze einen trigger auf den SoC und schalte das Laden beim gewünschten Stand über FHEM aus. Damit weiß ich natürlich immer ob er gerade lädt oder fertig ist. Disconnected sehe ich nur wenn der Stecker wirklich nicht drin ist.
@Carlos,sorry,Screenshot anbei
Hab meinen Code mal unter Codeschnipsel eingestellt:
https://forum.fhem.de/index.php/topic,98615.0.html
Zitat von: swhome am 15 März 2019, 07:50:09
Ich benutze einen trigger auf den SoC und schalte das Laden beim gewünschten Stand über FHEM aus. Damit weiß ich natürlich immer ob er gerade lädt oder fertig ist. Disconnected sehe ich nur wenn der Stecker wirklich nicht drin ist.
Kannst du mal bitte deine Einstellungen zeigen wie das genau aus sieht? Danke!
Hi,
ich erhalte leider auch keine Readings, es sind im Log folgende Fehlermeldungen zu finden:
2019.03.20 08:55:53 2: 5YJSA2DN5DFPxxxxx can't get https://owner-api.teslamotors.com/api/1/vehicles -- https://owner-api.teslamotors.com/api/1/vehicles: Select timeout/error:
Muss man noch irgendwas anderes einstellen?
Die Funktionen gehen übrigens, z. B. Start/Stopp der Klimaanlage, etc.
Grüße,
j.
So, habe noch ein wenig rumprobiert, erhalte jetzt alle paar Sekunden folgende Meldung:
2019.03.20 19:45:44 2: 5YJSA2DN5DFPxxxxx event channel received an http error: HTTP/1.1 401 Unauthorized
Werde das Auto nochmal löschen...
Erstaunlicherweise geht z. B. folgender Befehl (kann das am Auto bestätigen):
set 5YJSA2DN5DFPxxxxx charge_limit_soc 50
Dabei gibt es folgendes Ergebnis:
{"response":{"reason":"","result":true}}
Nur, dass es keinerlei Readings außer "Status: online" gibt :(
Hmm komisch... setze mal das Attribut verbose in beiden devices auf 5, speichere die Konfiguration und starte FHEM neu, vielleicht sieht man dann was im logfile.
Zitat von: Black7king am 18 März 2019, 07:50:27
Kannst du mal bitte deine Einstellungen zeigen wie das genau aus sieht? Danke!
Hab es mal hier eingestellt: https://forum.fhem.de/index.php/topic,98821.0.html
Hi,
habe die Verbose-Level auf 5 gestellt, Log hier:
root@S720:/opt/fhem/log# cat fhem-2019-03.log|grep -i 5y|grep "2019.03.21 17:"
2019.03.21 17:06:25 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:06:25 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:06:26 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:06:26 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:06:26 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:06:26 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:06:26 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:06:27 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:06:27 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:06:27 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:06:30 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:06:30 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:07:27 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:07:27 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:07:28 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:07:28 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:07:28 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:07:31 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:08:28 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:08:28 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:08:29 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:08:29 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:08:29 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:08:32 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:09:29 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:09:29 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:09:29 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:09:29 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:09:29 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:09:32 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:10:29 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:10:29 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:10:30 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:10:30 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:10:30 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:10:34 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
2019.03.21 17:11:30 4: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2019.03.21 17:11:30 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:11:31 4: 5YJSA2DN5DFPxxxxx response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["8cf27b620847f1fb","40a880e96ebb5d22"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:11:31 4: 5YJSA2DN5DFPxxxxx: no token refresh needed
2019.03.21 17:11:31 5: 5YJSA2DN5DFPxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles/431707512618376/vehicle_data
2019.03.21 17:11:34 5: 5YJSA2DN5DFPxxxxx returned: {"response":null,"error":"invalid_endpoint","error_description":""}
Fehlermeldung: "invalid endpoint", sagt mir nichts...
Grüße,
j.
und hier das Log vom neuen scanCars:
root@S720:/opt/fhem/log# cat fhem-2019-03.log|grep -i 5y|grep "2019.03.21 17:4"
2019.03.21 17:43:57 4: teslaconn response: {"response":[{"id":431707512618376,"vehicle_id":1310270932,"vin":"5YJSA2DN5DFPxxxxx","display_name":"Tesla","option_codes":"MS02,REEU,TM00,DRLH,PF00,BT85,PBSB,RFPO,WT19,IDOM,IPMT,TR00,SU01,SC01,TP01,PK01,CW00,AU01,CH01,HP00,PA00,LP00,SP01,PS00,AD02,YF00,X020,X025,X001,X003,X007,X009,X011,X027,X031,X013,CODE","color":null,"tokens":["cf409fc7f96079e4","9e4d84fcdfc7e03d"],"state":"online","in_service":false,"id_s":"431707512618376","calendar_enabled":true,"api_version":null,"backseat_token":null,"backseat_token_updated_at":null}],"count":1}
2019.03.21 17:43:58 2: 5YJSA2DN5DFPxxxxx defined as TeslaCar 5YJSA2DN5DFPxxxxx
@joker4791, was steht im Attribut dataRequest des TeslaCar devices? Sollte nur ,,data" drinstehen.
Ja, steht nur data drinne. Hatte auch mal stream getestet, gab aber keine Veränderung.
Mit der Android-App geht ja alles, deswegen wundert mich, dass die API nicht will. Da im Moment die 12V-Batterie im Auto rumzickt gehen im Moment auch keine Software-Updates und auch kein Spotify. Service-Termin ist aber auch erst im April. Vielleicht liegt's daran... :(
heute beim erneuten Anlegen des Autos mittels Funktion 'scanCars' habe ich im log folgende Meldung gesehen:
2019.03.25 18:55:58 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/49_TeslaCar.pm line 326.
2019.03.25 18:55:58 1: PERL WARNING: Use of uninitialized value $a[1] in subtraction (-) at ./FHEM/99_Utils.pm line 21.
Kann das mit meinem Problem zu tun haben?
Grüße,
j.
Die Definition sieht übrigens so aus:
defmod 5YJSA2DN5DFPxxxxx TeslaCar teslaconn 5YJSA2DN5DFPxxxxx
attr 5YJSA2DN5DFPxxxxx alias Tesla
attr 5YJSA2DN5DFPxxxxx dataRequest data
attr 5YJSA2DN5DFPxxxxx devStateIcon .*:hue_room_driveway
attr 5YJSA2DN5DFPxxxxx pollingTimer 60
attr 5YJSA2DN5DFPxxxxx room Garage
attr 5YJSA2DN5DFPxxxxx streamingTimer 1
attr 5YJSA2DN5DFPxxxxx updateTimer 600
setstate 5YJSA2DN5DFPxxxxx online
setstate 5YJSA2DN5DFPxxxxx 2019-03-25 18:55:58 state online
Noch eine andere Idee: Kann es sein dass Du eine sehr alte Firmware im Auto hast?
Früher gab es nur diese Endpoints: vehicle charge drive climate gui config
Also stell das dataRequest Attribut mal so ein (anstelle von 'data').
Hi,
Habe jetzt dataRequest auf "vehicle charge drive climate gui" umgestellt und irgendwann kamen dann Daten --> seltsam...
Nun noch eine Frage zu pollingTimer und updateTimer: lt. Beschreibung ist ersteres für "Interval for updating car data if it is not moving, default is 10 minutes" und letzteres für "Interval for checking if the car is online, default is 1 minute". Allerdings ist der default bei mir eingestellt auf updateTimer 600 und pollingTimer 60. Kann es sein, dass in der Hilfe da ein Dreher drin ist?
Nochmals Danke für die Hilfe!
Jetzt würde ich gerne noch eine Karte auf OpenStreepMap-Basis anzeigen lassen, Positions- und Richtungsdaten sind ja verfügbar. Gibt es da schon was fertiges oder muss das erst neu gebaut werden?
Die Google-API ist ja inzwischen quasi kostenpflichtig, jedenfalls möchte ich denen nicht irgendwelche Kreditkarten-Daten geben...
Grüße
j.
Stimmt, da ist ein Fehler im Hilfetext. Deine Einstellungen sind korrekt.
Was hast du für eine Softwareversion im Auto? Steht in Reading ,,car_version".
Freut mich dass es nun klappt.
Mit OSM hab ich es noch nicht probiert, sollte aber einfach sein.
Mal kurz für einen frischen Model 3 Besitzer..
Läuft das Modul schon soweit ohne Probleme?
Würde am liebsten Heizung im Auto nach Zeit steuern und evtl die Garage..
Ja, sollte funktionieren.
Hab gerade mal aus der Oberfläche heraus HVAC gestartet und wieder gestoppt.
Soo habe das Modul mal installiert und eine TeslaCon angelegt. Leider kackt mir bei set teslaconn scanCars
jedes mal der Server ab..
Im Log steht folgendes:
2019.04.03 22:57:56 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/49_TeslaConnection.pm line 370.
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/49_TeslaConnection.pm line 313.
2019.04.03 22:58:02 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^(\s*([\w.-]+)(:\S*)?\s+((\w+)\s+)?({ <-- HERE .*?})\s*)(,\s*(.*))*$/ at fhem.pl line 2805, <$fh> line 37.
2019.04.03 22:58:02 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^(\+)?(\*({ <-- HERE \d+})?)?(.*)$/ at ./FHEM/90_at.pm line 64, <$fh> line 51.
2019.04.03 22:58:02 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^(\+)?(\*({ <-- HERE \d+})?)?(.*)$/ at ./FHEM/90_at.pm line 214, <$fh> line 51.
2019.04.03 22:58:03 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^({ <-- HERE .*})$/ at ./FHEM/98_SVG.pm line 1478, <$fh> line 114.
2019.04.03 22:58:03 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^({ <-- HERE .*})$/ at ./FHEM/98_SVG.pm line 1729, <$fh> line 114.
2019.04.03 22:58:03 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^{ <-- HERE .*}$/ at ./FHEM/49_TeslaConnection.pm line 139.
2019.04.03 22:58:03 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^{ <-- HERE .*}$/ at ./FHEM/49_TeslaConnection.pm line 235.
Als erstes musst du Login ausführen: set teslaconn login user pass
Jop das wars!
Jetzt findet er sogar ein Auto.. leider das ModelX und nicht das Model 3 welches ich steuern möchte..
Model 3 sollte aber doch erkannt werden?
Hier haben schon ein paar Model 3 Besitzer Erfolg gemeldet, aber mit deinem Setup bist du bestimmt der erste Tester. Du könntest versuchen, das Fahrzeug mit define 5YJSA7E27HFxxxx TeslaCar teslaconn 5YJSA7E27HFxxxx manuell anzulegen. Selbst fehlt mir noch der passende Zweitwagen zum Testen :D
Ich werde morgen mal testen..
habe bevor ich auf die Arbeit gefahren bin folgendes getestet:
mal nur
define XXXX TeslaCar teslaconn XXXX
Hier hat er mir ein device angelegt aber sonst nix gemacht..
und mal den Kram aus dem anderen Auto kopiert:
define XXXX TeslaCar teslaconn XXXX
attr XXXX alias Wutzmobil
attr XXXX dataRequest data
attr XXXX pollingTimer 60
attr XXXX streamingTimer 1
attr XXXX updateTimer 600
Wenn ich das mache kackt aber das Model X device ab und zeigt nix mehr an und das Model 3 zeigt die Daten vom Model X...
Du hast schon die VIN Deines M3 verwendet oder?
Bitte stell mal im teslaconn device das Attribut verbose auf 5 und schick mir den Log-Output von scanCars per PN. Sollte ungefähr so aussehen:
teslaconn response: {"response":[{"id":6888981231231234,"vehicle_id":1481123123129,"vin":"5YJSA7
Ja habe die richtige Nummer verwendet..
Ich probiers heute Abend mal aus..
..PM erhalten?
Ja, aber noch nicht dazu gekommen, sorry! Liegt schon ganz oben auf der Todo Liste ::)
Hab den Fehler gefunden, war natürlich was ganz dummes. Update steht bereit:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
Hallo,
ich habe das Modul gestern installiert (Model3). Funktioniert auch soweit.
Bekomme aber unregelmäßig folgende Fehlermeldung im Log:
fhem.pl: Use of uninitialized value $current in string ne at ./FHEM/49_TeslaCar.pm line 462.
Gruß
scotti
Hi Scotti, immer noch? Hab mein Log durchsucht und nichts dergleichen gefunden.
Hallo,
ich hab mir das Modul installiert, habe allerdings probleme mit meinem Account und würde gerne sozusagen "alles auf anfang" und das Modul löschen.
Ich hab mit bei teslaconn ausgeloggt, und die devices gelöscht.
Allerdings geht da im Hintergrund noch "irgendwas" richtung Tesla API.
Wie kann man denn das richtig "clean" löschen??
Danke
Starte mal FHEM neu. Irgendwie bleiben manchmal nach dem löschen die Hintergrundtasks bestehen
Mann, manchmal kann das Leben so einfach sein....und ich hab zweimal neu angelegt und wieder gelöscht....
Asche auf mein Haupt, dass ich da nicht selbst drauf gekommen bin...
danke
Hat sich eigentlich schon was am Modul geändert mit der neuen V10 von Tesla? also Fenster öffnen usw.
Sag al was muss ich denn tun um ein Update der Daten zu erzwingen? Gibt es ein Set Tesla update oder so?
Schonmal DANKE
Hi, es gibt set tesla requestSettings. Lg!
Moin,
ich habe mal "Max Defrost" ergänzt, vielleicht kann jemand was damit anfangen.
Ggf. kann @swhome das mit einpflegen (kenne mich mit GIT nicht gut genug aus um das darüber zu machen).
Gruß Patrick
Hi Patrick, vielen Dank für die Mitarbeit! Habe Deine Änderung übernommen.
Magst Du noch kurz schreiben wie Du den neuen Befehl einsetzt?
Hallo Stefan, danke fürs einbauen! Im Moment nutze ich den Befehl noch nicht aktiv.
Aktuell habe ich die Automatisierung so am laufen, dass (wenn es unter 5°C sind) die Klimatisierung 20 Minuten vor Abfahrt eingeschaltet wird.
Geplant ist das ganze händisch in der Visu oder über einen Wetterdienst (wenn z.B. Schnee angesagt ist) zu lösen, ggf. auch über Siri oder Alexa,
immer dann wenn ich befürchte, dass die normale Klimatisierung nicht reicht um den Wagen abzutauen.
Ich liebe die Blicke der Nachbarn die Eiskratzen und ich einfach ins Auto steige und losfahre ;D
Hallo Zusammen,
wie habt Ihr das Problem mit der Fehlermeldung im Log hinbekommen? Bei mir geht alles aber wenn das Auto aktiv ist kommt weiterhin immer (alle 5 Sekunden):
2020.03.05 13:41:38 2: 5YJ3E7xxxxxxxxxxx event channel received an http error: HTTP/1.1 401 Unauthorized
Bzw. hin und wieder ein Time-out
2020.03.05 13:41:24 2: error while requesting https://owner-api.teslamotors.com/api/1/vehicles/355440063xxxxxxxx/vehicle_data - read from https://owner-api.teslamotors.com:443 timed out
Neustart FHEM hat keine Verbesserung gebracht und über Verbose 5 sehe ich die korrekte Response ohne jegliche Fehlermeldung...
Viele Grüße und besten Dank
André
TM3P mit V10.2 2020.4.1
Kann es sein dass in deinem Attribut dataRequest das Wort stream auftaucht? Wenn ja, nimm das mal raus. Das Feature hab ich schon lang nicht mehr getestet. Aktuell sollte da einfach ,,data" drin stehen.
Gelegentliche Timeouts sind normal. Nachdem die Daten direkt vom Auto abgerufen werden, kann je nach WLAN oder Mobilfunkverbindung schon mal eine Abfrage hängen bleiben.
Hi swhome,
super danke das wars... sonst funktioniert es wirklich perfekt :)
Vielen DANK für die Arbeit.
André
Hi,
das Modul ist genau was ich gesucht habe um nur an bestimmten Wochentagen morgens wenn es zu kalt ist die Klimatisierung und damit Batterievorkonditionierung einzuschalten.
Ich teste das Modul mal. Seit einer knappen Woche habe ich endlich mein Model 3 LR :)
Hat dafür eventuell schon gemand DOIF´s gebaut und kann sie teilen? Ansonsten wurschtel ich mich selbst durch
Ich habe mir mal ein DOIF gebaut das bei <= 3° den DefrostMOdus und die Klima anschaltet, unter 10° nur die Klima
defmod DOIF_Tesla_Vorklimatisierung DOIF ([04:45|Mo Die Do] and [?Heizung:HZ-Temp-Aussen]<=3) (set 5YJ3E7EB5LFxxxxxx startHvacSystem) (set 5YJ3E7EB5LFxxxxxx startDefrost) (set 5YJ3E7EB5LFxxxxxx stopHvacSystem)\
DOELSEIF ([04:45|Mo Die Do] and [?Heizung:HZ-Temp-Aussen]<=10) (set 5YJ3E7EB5LFxxxxxx startHvacSystem) (set 5YJ3E7EB5LFxxxxxx stopHvacSystem)\
DOELSE
attr DOIF_Tesla_Vorklimatisierung DbLogExclude .*
attr DOIF_Tesla_Vorklimatisierung disable 0
attr DOIF_Tesla_Vorklimatisierung room Auto
attr DOIF_Tesla_Vorklimatisierung verbose 3
attr DOIF_Tesla_Vorklimatisierung wait 0,0,1200:0,1200
Gibt es einen GRund warum es nur einen "startDefrost" gibt aber kein "stopDefrost" ?
Hallo Tobias,
ich hatte keine Lust "stopDefrost" mit einzubauen ;D, brauchts aber auch nicht wirklich...
"stopHvacSystem" schaltet das auch mit ab. "startHvacSystem" brauchts auch nicht wenn du "startDefrost" ausführst.
Was du allerdings brauchst ist ein "wakeUpCar" sonst laufen die Befehle ins leere.
Ich sende den "wakeUpCar" bis zu 10 mal in einer Schleife (minütlich) und teste dann ob der Wagen da ist bevor ich die Klima starte, da der LTE Empfang bei mir mehr als bescheiden ist.
Gruß Patrick
Ich habe mal noch eine Frage:
Weckt das Modul das Fahrzeug ständig auf sodass ein erhöhter Standby Verbrauch auftritt?
Grüße
Gesendet von iPhone mit Tapatalk
Ich habe bei der Programmierung darauf geachtet und beobachte diesen Aspekt sehr genau. Alle Energiesparoptionen in meinem Auto sind an. Es ist meist im Status ,,asleep" wie es sein soll. Muss man schon im Auge behalten sonst ist der Verbrauch enorm. Bei anstehenden Firmware Updates bleibt der Wagen aber auch schon mal tagelang wach...
Hi
Irgendetwas scheine ich noch falsch eingestellt zu haben. Habe ich das Auto in fhem mit dem Modul registriert habe ich einen Verbrauch von 4% pro 24h.
Lösche ich das Auto wieder aus fhem habe ich einen Verbrauch von 1%
Gesendet von iPhone mit Tapatalk
Hallo, könnte man das Modul um die Powerwall 2 erweitern?
Gruß
Chris
Zitat von: Tobias am 10 April 2020, 07:56:59
Hi
Irgendetwas scheine ich noch falsch eingestellt zu haben. Habe ich das Auto in fhem mit dem Modul registriert habe ich einen Verbrauch von 4% pro 24h.
Lösche ich das Auto wieder aus fhem habe ich einen Verbrauch von 1%
Aktuell benutze ich diese Einstellung, vielleicht muss ich die Standardeinstellung im Modul anpassen wenn das bei dir das Problem löst.
Zitat von: slawekking am 10 April 2020, 09:54:59
Hallo, könnte man das Modul um die Powerwall 2 erweitern?
Hi Chris, super Idee. Die Tesla Connection in meinem Modul eignet sich bestimmt auch für die Powerwall.
Hallo Teslafahrer,
ich aktiviere/deaktiviere immer wieder einmal anlassbezogen den Wächtermodus (SentryMode) meines in der Gemeinschaftsgarage stehenden Model 3 von zu Hause.
Dazu mußte ich bislang immer das Smartphone nehmen die Tesla-App starten und SentryMode einstellen.
Ich habe daher im Modul "TeslaCar.pm" einen neuen command "sentryMode on/off" hinzugefügt um dies auch über FHEM erledigen zu können.
Ich stelle in zwei ReadingsGroups die wichtigsten Infos dar und kann über click auf den Toggle den SentryMode ein/ausschalten (im Screenshot rot da aktiv).
@swhome: Sollte diese Erweiterung von allgemeinem Interesse sein bitte diese in GIT einpflegen.
Beste Grüße
mrmops
Hey dein Auto hat erst 257 km auf der Uhr? Muss an Corona liegen :)
P.S. Danke für die Erweiterung, nehme ich mit auf.
Zitat von: swhome am 11 April 2020, 23:26:06
Hey dein Auto hat erst 257 km auf der Uhr? Muss an Corona liegen :)
P.S. Danke für die Erweiterung, nehme ich mit auf.
Richtig - wegen "HomeOffice" dzt. nur für Einkäufe in Verwendung :-(
Zitat von: swhome am 10 April 2020, 12:14:18
Hi Chris, super Idee. Die Tesla Connection in meinem Modul eignet sich bestimmt auch für die Powerwall.
Das wäre ideal, da ja 'teslaconnection' und damit token schon da ist:
Damit wäre m.E. statt nur Auslesen (ein Modul dafür oder halt HttpMod gibt es ja) dann auch "Einstellen Notreserve", "An", "Aus" für den Zweck einer PV- oder zeitgesteuerten Beeinflussung des Ladens/Entladens möglich!
Ansonsten hab ich gerade Dein Modul entdeckt und bin begeistert, geht out-of-the-box !!! :D
Warum ist das eigentlich nicht in der generellen Verteilung (SVN) enthalten, ist doch sogar bei github??
Sowas überrascht mich immer wieder...
Grad wenn man an FHEM Einsteiger denkt: suchen sich wund, experimentieren mit kryptischen Befehlen oder wechseln zu anderer Software weil sie nicht auf Anhieb was passendes finden - macht es schwer, andere für Fhem zu begeistern::)
zwei Anmerkungen:
- wenn man eventMap benutzt hat und wieder löscht, bleiben die Befehle leider in der set Liste,
- es gibt nach der Ausführung von set eine Rückmeldung, was (bei mir) die aktuelle Seite wegblendet oder ein zu bestätigendes Popup öffnet (nicht ganz hübsch im Floorplan o.ä.).
Könntest Du da was machen? Jammern auf hohem Niveau... ::)
Wär schön. Echt nützliches Modul!
PS: Noch ein paar passende nach Status einfärbbare SVG - Icon's anbei. Das kleine Logo nehme ich z.b. für Status teslaconnection. Ein Front-Icon vom S und X kann ich bei Bedarf auch suchen und passend machen).
Zitat von: LR66 am 18 April 2020, 16:13:07
Warum ist das eigentlich nicht in der generellen Verteilung (SVN) enthalten, ist doch sogar bei github??
Ja gute Frage. Was muss da getan werden? Bin ein grosser Fan von Github.
Zitat von: LR66 am 18 April 2020, 21:14:38
- wenn man eventMap benutzt hat und wieder löscht, bleiben die Befehle leider in der set Liste,
Hm darunter kann ich mir nichts vorstellen... kannst das bitte etwas genauer beschreiben?
Zitat von: LR66 am 18 April 2020, 21:14:38
es gibt nach der Ausführung von set eine Rückmeldung, was (bei mir) die aktuelle Seite wegblendet oder ein zu bestätigendes Popup öffnet (nicht ganz hübsch im Floorplan o.ä.).
Ja das ist doof, muss ich mir mal ansehen. Im Falle nicht ausgeführter Befehle (was ja nicht so selten ist) muss man das natürlich angezeigt bekommen. Verbesserungsvorschläge dürfen gern auch technisch sein, Perl programmiere ich eher aus Not denn aus Leidenschaft...
Zitat von: swhome am 21 April 2020, 14:13:13
Ja gute Frage. Was muss da getan werden? Bin ein grosser Fan von Github.
Wg. in's SVN: ich denke ein Hero müsste mal drüberschauen, ob das mit den Funktionen so passt und es sollen wohl mehrere User (5+) das erfolgreich im tägl. Einsatz haben. Und da Du ja bereits Devoloper bist, müsstest Du das dann als Maintainer ggf. sicher auch in github pflegen (wenn sich in FHEM was ändert oder User Probleme haben)?
Superhero's wie Rudi oder andere Hero's wie Cooltux können best. sagen, wie das für einen bereits aktiven 'github'-Developer geht...Zitat von: swhome am 21 April 2020, 14:13:13
Hm darunter kann ich mir nichts vorstellen... kannst das bitte etwas genauer beschreiben?
Anbei mal Screenshots, wozu ich eventMap nutze (zwecks Kürzel für webcmd gegen längere Befehle). Erstaunlicherweise tauchen die dann in der set-Liste auf und wenn ich die Atrribute webcmd und eventMap wieder lösche, bleibt es trotzdem in der set-Liste (erstmal, forever?). Das ist ggf. ein generelles Thema, ist mir bei mind. einem eigenen Modul auch aufgefallen,
viell. was geä. oder User-Fehler... ziemlich unkritisch, man kann es mit wenigstens einem eventMap wieder reduzieren, aber nicht ganz wegkriegenZitat von: swhome am 21 April 2020, 14:13:13
Ja das ist doof, muss ich mir mal ansehen. Im Falle nicht ausgeführter Befehle (was ja nicht so selten ist) muss man das natürlich angezeigt bekommen.
Ohne reingeschaut zu haben (hab es nur auf headless Produktiv-Pi): Reicht es nicht, nur den Fehler ins Log zu schreiben und die sub einfach enden zu lassen? So hab ich es mal in eigenem Modul gemacht... man sieht ja eigentlich an Readings oder Status, ob sich was tut...
I am trying to use the module but when logging in I am getting error 183. What am I doing wrong?
I tried logging in using my Tesla account credentials but also using credentials of smartcar.com. All help appreciated!
Apologies for using English, I hope it is OK for you. Reading German is fine for me but typing.... not so much. Too much Fehler!
After browsing through the code of the module, some testing with the API in Postman, I finally found that the problem was due to the fact that my password contained a semi-colon ";" character. I removed that character and was able to login! This might be something to check, to match characters accepted in FHEM with the Tesla password if possible? (or at least issue a warning).
Keep up the good work!
Hi, good find, haven't had this issue up to now. Could be related with the way FHEM handles commands. Are you entering the set xxx login etc.. to the command line or rather selecting set in the ui? Maybe putting the password in quotation marks could help?
Hi swhome, I did it through the GUI, did not even consider the command line :o nor the quotation marks. Just changing my password did the trick 8)
Hallo,
beim Laden des Moduls kommt:
2020.08.12 16:26:47 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^{ <-- HERE .*}$/ at ./FHEM/49_TeslaConnection.pm line 139, <$fh> line 4531.
2020.08.12 16:26:47 1: stacktrace:
2020.08.12 16:26:47 1: main::__ANON__ called by ./FHEM/49_TeslaConnection.pm (139)
2020.08.12 16:26:47 1: (eval) called by fhem.pl (2636)
2020.08.12 16:26:47 1: (eval) called by fhem.pl (2635)
2020.08.12 16:26:47 1: main::CommandReload called by fhem.pl (2021)
2020.08.12 16:26:47 1: main::LoadModule called by fhem.pl (2078)
2020.08.12 16:26:47 1: main::CommandDefine called by fhem.pl (1254)
Gibt wohl ein Problem mit perl 5.30
Elektrolurch
Hab eine überarbeitete Version des Moduls hochgeladen, unter anderem sind die Perl Warnings behoben (@Elektrolurch, danke für den Hinweis!)
Die neue Version ist ein wenig vereinfacht, das Feature zum Lesen des Event-Streams hab ich entfernt weil die Menge an Information für FHEM eigentlich eh zuviel war und ich auch selbst nicht mehr benutze un damit nicht mehr testen kann. Beim Timing der Abfragen war ein kleiner Bug drin der mir aufgefallen ist weil das Auto nicht mehr in den Sleep-Mode ging. Die Ursache war dann aber wohl nicht im Modul zu finden sondern irgendwo in der Tesla Infrastruktur. Trotzdem bitte beobachten ob der Status wieder asleep wird wenn man das Energiesparen-Feature benutzt welches bei meinem Auto wirklich sehr empfehlenswert ist. Kann auch sein dass das bei neueren Autos nicht mehr so durchschlägt (zB Model 3).
https://github.com/sw-home/FHEM-Tesla
Danke!! Wird auch von mir dann ausprobiert...
Mit M3 hatte ich keine Schlafstörungen in der bisherigen Version :D
Mmh, hab erstmal Fhem aktualisiert dann Deine update-Variante für die Module probiert, das ging schief:
Zitat2020.08.17 11:43:00 1: UPD FHEM/49_TeslaCar.pm
2020.08.17 11:43:01 1: PERL WARNING: Use of uninitialized value $written in numeric ne (!=) at ./FHEM/98_update.pm line 576.
2020.08.17 11:43:01 1: writing ./FHEM/49_TeslaCar.pm failed: , trying to restore the previous version and aborting the update
Dann manuell auf RPi kopiert, Rechte gesetzt, neu gestartet. Fehler das Devices definiert werden müssen und bei definieren TeslaConnection im Logfile das
Zitat
2020.08.17 11:55:03 1: reload: Error:Modul 49_TeslaConnection deactivated:
Excessively long <> operator at ./FHEM/49_TeslaConnection.pm line 20.
2020.08.17 11:55:03 0: Excessively long <> operator at ./FHEM/49_TeslaConnection.pm line 20.
Grübel...
Ja passiert hier auch, ist mir ein Rätsel was das sein könnte. Hab die Änderung nochmal zurückgenommen und versuche es erneut.
So, ein neuer commit und push, nun scheint das Update zu klappen.
Ja, prima. Update lief durch, hat auch die letzten Einstellungen wieder übernommen. Läuft wieder alles und war schön im asleep (M3). Feine Sache! Hast Du viell. auch eine Powerwall? Da könnte man die TeslaConnection gleich mitnutzen um nicht nur auszulesen...
ich Kann mit Fahrzeug und Speicher dienen wenn ihr jemanden zum testen Braucht :-D
Zitat von: LR66 am 18 August 2020, 08:33:51
Ja, prima. Update lief durch, hat auch die letzten Einstellungen wieder übernommen. Läuft wieder alles und war schön im asleep (M3). Feine Sache! Hast Du viell. auch eine Powerwall? Da könnte man die TeslaConnection gleich mitnutzen um nicht nur auszulesen...
Hab leider keine Tesla-PW, nur nen Eigenbau. Falls mir jemand eine leihen oder schenken will wäre ich interessiert :)
Zitat von: swhome am 18 August 2020, 14:53:40
Hab leider keine Tesla-PW, nur nen Eigenbau. Falls mir jemand eine leihen oder schenken will wäre ich interessiert :)
eine Ganze Powerwall wird schwer aber evtl ein Gateway 1 wäre zu test zwecken machbar...
Ja, ich verleihe oder verschenke meine auch eher ungern ???
Da muss ich mir wohl doch mal Deine Module anschauen.
Die Powerwall lässt sich ja über HttpMod ohne Authentication auch so auslesen:
Die m.M.n. interessantesten:
https://192.168.0.xx/api/system_status/soe
https://192.168.0.xx/api/meters/aggregates
https://192.168.0.xx/api/system_status/grid_status
Nützlich mit vorheriger Authentication (POST /api/login/Basic) wäre:
/api/sitemaster/stop
/api/sitemaster/run
/api/operation braucht dann /api/config/completed
um sie für PV-Laden zeitweise abzuschalten (erst Auto laden oder nur über Mittag) oder um die Notstrom-Reserve anzupassen.
Die Api ist gut unter https://github.com/vloschiavo/powerwall2 (https://github.com/vloschiavo/powerwall2) dokumentiert. Dürfte nicht viel anders aussehen als beim Auto.
Zitat von: LR66 am 18 August 2020, 15:19:22
Ja, ich verleihe oder verschenke meine auch eher ungern ???
Da muss ich mir wohl doch mal Deine Module anschauen.
Die Powerwall lässt sich ja über HttpMod ohne Authentication auch so auslesen:
Die m.M.n. interessantesten:
https://192.168.0.xx/api/system_status/soe
https://192.168.0.xx/api/meters/aggregates
https://192.168.0.xx/api/system_status/grid_status
Nützlich mit vorheriger Authentication (POST /api/login/Basic) wäre:
/api/sitemaster/stop
/api/sitemaster/run
/api/operation braucht dann /api/config/completed
um sie für PV-Laden zeitweise abzuschalten (erst Auto laden oder nur über Mittag) oder um die Notstrom-Reserve anzupassen.
Die Api ist gut unter https://github.com/vloschiavo/powerwall2 (https://github.com/vloschiavo/powerwall2) dokumentiert. Dürfte nicht viel anders aussehen als beim Auto.
zur powerwall auslesen gibts schon ein FHEM Modul
Ja, das Powerwall Modul kenne ich, aber die unzähligen Readings sind mir zuviel - daher nehm ich HttpMod. Leider hat der Autor wohl auch keine PW gehabt und das mit Authentication und set-Befehlen für ein/aus/%Reserve geht leider nicht. Die Authentication von Stefan swhome müsste eigentlich so auch für die PW2 gehen.
Schade... aber am Ende geht es aber auch ohne ihre Steuerung.
Hallo,
jetzt habe ich auch einen M3 abgeholt und gleich eine teslaconn angelegt.
Login funktioniert, bei
set teslaconn scanCars steht folgendes im log:
2020.08.29 19:24:14 4: teslaconn request: https://owner-api.teslamotors.com/api/1/vehicles
2020.08.29 19:24:14 4: teslaconn: no token refresh needed
2020.08.29 19:24:15 4: teslaconn response: {"response":[{"id":35923271904557652,"vehicle_id":1699123857,"vin":"5YJ3E7EB5LF753420","display_name":"753420","option_codes":"AD15,MDL3,PBSB,RENA,BT37,ID3W,RF3G,S3PB,DRLH,DV2W,W39B,APF0,COUS,BC3B,CH07,PC30,FC3P,FG31,GLFR,HL31,HM31,IL31,LTPB,MR31,FM3B,RS3H,SA3P,STCP,SC04,SU3C,T3CA,TW00,TM00,UT3P,WR00,AU3P,APH3,AF00,ZCST,MI00,CDM0","color":null,"access_type":"OWNER","tokens":["94be4b64696792a2","8ba75b3a260c8415"],"state":"online","in_service":false,"id_s":"35923271904557652","calendar_enabled":true,"api_version":7,"backseat_token":null,"backseat_token_updated_at":null,"vehicle_config":null}],"count":1}
2020.08.29 19:25:51 4: teslaconn request: https://owner-api.teslamotors.com/api/1/vehicles
2020.08.29 19:25:51 4: teslaconn: no token refresh needed
2020.08.29 19:25:52 4: teslaconn response: {"response":[{"id":123456789,"vehicle_id":123456789,"vin":"7YJ1E1234567","display_name":"753420","option_codes":"AD15,MDL3,PBSB,RENA,BT37,ID3W,RF3G,S3PB,DRLH,DV2W,W39B,APF0,COUS,BC3B,CH07,PC30,FC3P,FG31,GLFR,HL31,HM31,IL31,LTPB,MR31,FM3B,RS3H,SA3P,STCP,SC04,SU3C,T3CA,TW00,TM00,UT3P,WR00,AU3P,APH3,AF00,ZCST,MI00,CDM0","color":null,"access_type":"OWNER","tokens":["94be4b64696792a2","8ba75b3a260c8415"],"state":"online","in_service":false,"id_s":"35923271904557652","calendar_enabled":true,"api_version":7,"backseat_token":null,"backseat_token_updated_at":null,"vehicle_config":null}],"count":1}
Es wird aber kein Auto angelegt.
attr autocreate disable 0
teslacar hat Version 1.1
teslaconnect hat Version 0.9
Was könnte da schief laufen?
Hinweis:
Es fehlt noch eine Kleinigkeit:
Gibt man einen unbekannten set-Befehl ein, sollte eigentlich ja die fhem-Standardantwort (wie bei ?) kommen.
Wie z.B.:
Unknown argument zich, choose one of off off-for-timer on on-for-timer reset timer toggle off-till-overnight intervals on-till-overnight off-till blink on-till
]/code]
Elektrolurch
Das Kommando "scanCars" auf die TeslaConnection hast Du schon versucht? Was ist danach im Log zu sehen?
Hey swhome,
zu Beginn, erstmal vielen Dank für das Klasse Modul, nutze es nun bereits seit längerem. Ich habe aber folgende Punkte, die ich mich schon länger Frage:
1. Sleep Mode: Werden über das Attribut "updateTimer" das Intervall festgelegt, wie lange keine Abfragen an den Tesla gehen, dass er im Stand in den Sleep Modus wechselt? Bedeutet dies im Umkehrschluss, dass wenn das auto "online" + "stehend" ist, dass man zum Teil von einer Fahrt den Anfang nicht mit bekommt?
2. Läßt sich, das wecken des Moduls bei Start der Fahrt händisch trigger? Hatte Set init versucht, aber ohne Erfolg.
3. Ich würde gerne die Geschwindigkeit mit aufzeichnen (aber in einer besseren "Auflösung" welchen Parameter muss ich den Einstellen, dass während der Fahrt die Daten häufiger aktualisiert werden? Hatte es mit "pollingTimer 10" versucht, aber ohne Erfolg.
4. Sleep allgemein. Hatte versucht Informationen in deinem Code zu finden, leider erfolglos. Wie handhabt den dein Modul den Sleepmode vom Fahrzeug, gibt es hier noch gesonderte Zeit im Modul um das Fahrzeug in sleep zu bekommen?
5. Wie sieht das Rolling aus, wenn das Fahrzeug bereits im Modus "sleep" ist?
Schonmal vielen lieben Dank,
grüße Timo
Hallo,
da ich seit vier Wochen nun auch einen M3 habe, sitze ich über dem Modul.
Ich versuche gerade ein automatisches Fahrternbuch zu implementieren....
Hier mal einige Erkenntnisse zu Deinen Fragen:
1. Sleep Mode: Werden über das Attribut "updateTimer" das Intervall festgelegt, wie lange keine Abfragen an den Tesla gehen, dass er im Stand in den Sleep Modus wechselt? Bedeutet dies im Umkehrschluss, dass wenn das auto "online" + "stehend" ist, dass man zum Teil von einer Fahrt den Anfang nicht mit bekommt?
Wenn ich das Modul richtig verstehe, schläft das Auto nicht ein, wenn man ständig die Werte abruft. Ansonsten sind es bei mir ca. 25 Minuten, dann geht es mal in "offline", mal in "asleep".
Nur das Abragen des Status weckt das Auto nicht auf (polling_timer).
Ändert sich der Tacho (odometer) innerhalb von 3 x polling_timer, wo wird ein fullrequest aller Daten angefordert.
2. Läßt sich, das wecken des Moduls bei Start der Fahrt händisch trigger? Hatte Set init versucht, aber ohne Erfolg.
Eigentlich sollten die Werte alle abgerufren werden, sobald (spätenstens nach polling_timer) das Auto auf "online" geht.
Es gibt ja auch den set-Befehl wakeupCar, der funktioniert bei mir.
Auch bei Zugriff über die Tesla - App wird das Auto wach, aber braucht auch dann mehr Strom.
3. Ich würde gerne die Geschwindigkeit mit aufzeichnen (aber in einer besseren "Auflösung" welchen Parameter muss ich den Einstellen, dass während der Fahrt die Daten häufiger aktualisiert werden? Hatte es mit "pollingTimer 10" versucht, aber ohne Erfolg.
speed liefert bei mir nicht die Geschwindigkeit, sondern nur Werte 0 oder 3... ???
4. Sleep allgemein. Hatte versucht Informationen in deinem Code zu finden, leider erfolglos. Wie handhabt den dein Modul den Sleepmode vom Fahrzeug, gibt es hier noch gesonderte Zeit im Modul um das Fahrzeug in sleep zu bekommen?
siehe 1.
5. Wie sieht das Rolling aus, wenn das Fahrzeug bereits im Modus "sleep" ist?
Ist dann aus, da ansonsten das Auto wieder wach wird.
Im übrigen, habe die Koordinaten über OSM in eine Adresse umgewandelt. War nicht so schwierig.
Elektrolurch
Hi!
ZitatBedeutet dies im Umkehrschluss, dass wenn das auto "online" + "stehend" ist, dass man zum Teil von einer Fahrt den Anfang nicht mit bekommt?
Ja das ist leider so.
ZitatLäßt sich, das wecken des Moduls bei Start der Fahrt händisch trigger? Hatte Set init versucht, aber ohne Erfolg.
Set requestSettings sollte da helfen.
ZitatIch würde gerne die Geschwindigkeit mit aufzeichnen (aber in einer besseren "Auflösung" welchen Parameter muss ich den Einstellen, dass während der Fahrt die Daten häufiger aktualisiert werden? Hatte es mit "pollingTimer 10" versucht, aber ohne Erfolg.
Hm komisch, genau so hätte ich das auch gemacht. Versuch nochmal, die geänderte Wartezeit wirkt erst nach dem Ablauf der aktuellen Periode.
Lg
Stefan
Zitat:
Bedeutet dies im Umkehrschluss, dass wenn das auto "online" + "stehend" ist, dass man zum Teil von einer Fahrt den Anfang nicht mit bekommt?
Ja das ist leider so.
Ich versuche es gerade so hinzubekommen:
Das Ende einer Fahrt ist ja bezüglich des Kilometerstandes und des Ortes auch der anfang einer neuen Fahrt.
Zumindest meistens, wenn nicht die Tieflader unterwegs sind... :-)
Also, pollingTimer 10, für eine Abfrage alle 10 Sekunden habe ich hinbekommen bzw. funktioniert. Dann ist allerdings, das Problem, dass das Abfragen der Daten nach 30 Sekunden Stillstand vom Fahrzeug beendet wird und das Modul versucht das Auto in den Schlaf zu schicken:
#$odometerChangeAge < (3*$pollingTimer) || # or if speed has changed between the last three polls
weshalb ich folgende Änderungen / Verbesserungen an deinem Code vorgenommen habe:
my $ParkingAge = gettimeofday() - time_str2num(ReadingsTimestamp($name,"shift_state",gettimeofday()));
Hinzugefügt zum feststellen, wann das Fahrzeug abgestellt wurde
my $requestFullStatus = (
ReadingsVal($name,"state",undef) eq "online" && # request full status at this poll when online and
(
$hash->{skipFull} >= $updateTimer || # at least all $updateTimer seconds
(
#$odometerChangeAge < (18*$pollingTimer) || # or if speed has changed between the last three polls
$stateChangeAge < (3*$pollingTimer) || # or if state has changed between the last three polls
$ParkingAge < (3*$updateTimer) || # or if car has been parked the last 30 minutes
ReadingsVal($name,"charging_state","none") eq "Charging" || # or if car is charging
ReadingsVal($name,"shift_state","none") ne "P" || # or if car is not in P
ReadingsVal($name,"sentry_mode","none") == 1 # or if car is in sentry mode
)
)
);
1. Auskommentierung Odometer Change (aus meiner Sicht nicht mehr benötigt)
2. ParkingAge (30 Minuten) analog Teslafi, Status wird auch nach 30 Minuten Stillstand bzw. parken vom Fahrzeug noch abgefragt (mein Fahrzeug ist immer mindestens noch 1h Stunde wach nach dem Abstellen, so verpasst man weitere Fahrten z.B. am Rastplatz nicht mehr
3. FullStatus, wenn Fahrzeug nicht in P also "Fährt"
4. FullStatus, wenn Fahrzeug SentryMode an hat (hier kann das Auto ja nicht einschlafen)
5. Wenn Fahrzeug offen (nicht umgesetzt)
Ob es funktioniert wie ich es mir vorstelle? Keine Ahnung, meine Programmierkenntnisse halten sich in Grenzen. Zusätzlich steht das Auto im Moment in der Garage.
Ich freue mich aber über deine / Eure Rückmeldungen bzw. Anmerkungen.
Grüße Timo
Zitat von: swhome am 30 September 2020, 00:48:45
Hi!
Ja das ist leider so.
Set requestSettings sollte da helfen.
Hm komisch, genau so hätte ich das auch gemacht. Versuch nochmal, die geänderte Wartezeit wirkt erst nach dem Ablauf der aktuellen Periode.
Lg
Stefan
Habe herum experimentiert:
locked geht nicht, da beim Fahren die Türen wieder verriegelt werden.
Was aber gut geht ist:
is_user_present
Ich habe bei mir odoemeter_age durch folgende sub ersetzt:
sub TeslaCar_lastMove($)
{
my ($hash) = @_;
return minNum(
readingsage($hash,'odometer',0),
readingsage($hash,'longitude',0),
readingsage($hash,'latitude',0),
readingsage($hash,'speed',0),
readingsage($hash,'state',0),
# prevent asleep immediately after stop charging
readingsage($hash,'charging_state',0),
# changes during charging, if charging longer than 30 min
readingsage($hash,'battery_level',0)
);
} # end sub TeslaCar_lastMove
##############################
Die minNum ist in 99_utils.pm
readingsage müsst ihr durch ReadingsAge($name... ersetzen.
Das Auto schläft auch nicht ein, wenn es aufgeladen wird. Kam neulich vom Einkaufen zurück und das Laden lief noch, aber 30 min waren schon vorbei, so dass ich das Wegfahren auch nicht mitbekommen habe (state = online).
Die gps - Koordinaten über Open Street Map umzusetzen, funktioniert super.
Elektrolurch
Zitat von: Elektrolurch am 08 Oktober 2020, 15:04:23
Die gps - Koordinaten über Open Street Map umzusetzen, funktioniert super.
Hast Du da mal ein Beispiel für?
Hallo Joker,
sub TeslaCar_UpdateAddress($$$)
{
my ($hash,$la,$lo) = @_;
my $name = $hash->{NAME};
# hier die eigene Mail-Adresse einsetzen
my $mailaddress = 'meineMail@web.de';
my $api_uri = "http://nominatim.openstreetmap.org/reverse?format=json&accept-language=de&lat=$la&lon=$lo&zoom=18&addressdetails=12&email=$mailadress";
# my $api_uri = "http://nominatim.openstreetmap.org/reverse";
#### Get status variables
my $param = {
'url' => $api_uri,
'hash' => $hash,
'format' => 'json',
'header' =>
{
'Accept' => "application/json"
},
# "Authorization" => "Bearer $token",
'timeout' => 10,
'callback' => \&TeslaCar_UpdateAddressCallback
}; # param
Log3 $name, 4, "TC_UpdateAddress: $name request: $param->{url}";
HttpUtils_NonblockingGet($param);
return undef;
} # end sub TeslaCar_UpdateAddress
##############################
Die 'TeslaCar_UpdateAddress($$$)' rufe ich von der 'TeslaCar_UpdateStatusCallback' auf, aber nur wenn
'is_user_present' und sich die Koordinaten geändert haben.
$hash ist der hash von Deinem Auto.
sub TeslaCar_UpdateAddressCallback($)
{
my ($param, $err, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
my %readings = ();
my $JSON = JSON->new->utf8(0)->allow_nonref;
if($err ne "")
{
Log3 $name, 1, "TeslaCar_updateAddressCallback: error while requesting ".$param->{url}." - $err";
} # if error
elsif($data ne "")
{
Log3 $name, 5, "TeslaCar_UpdateAddressCallback: $name returned: \n$data";
my $parsed = eval {$JSON->decode ($data)};
if($@)
{
Log3($name,1,"TeslaCar_UpdateAddressCallback: $name - JSON error requesting data: $@");
} # json parse error
else
{
# readings
my $short = $parsed->{address};
my %unknown = map(
{($_ !~m/(building|office|industrial|shop|neighbourhood|man_made|railway|city|town|village|road|house_number|suburb|city_district|neighbourhood|postcode|country_code|country|state|county|junction)$/) ? ($_,$short->{$_}):()}
sort keys %$short);
Log3($name,1,"TC_updateaddresscb: unknown: \n".
join(' ',%unknown)) if(int( keys %unknown));
my $address = "$short->{road} $short->{house_number}";
my $city = "";
foreach my $c ('city','town','village')
{
if(exists($short->{$c}))
{
$city = $short->{$c};
last;
} # if exists
} # foreach $c
# $address .= $city;
my $extra = "";
foreach my $c ('building','office','shop','industrial',
'junction',
'suburb','city_district','man_made','address_county','address_country')
{
if(exists($short->{$c}))
{
$extra = $short->{$c};
last;
} # if exists
} # foreach $c
my $address_county = "";
$address_county = $short->{county} if(exists($short->{county}));
my $address_country = "";
$address_country = $short->{country} if(exists($short->{country}));
my $address_state = "";
$address_state = $short->{state} if(exists($short->{state}));
# readings aktualisieren
my $update = 0;
readingsBeginUpdate($hash);
if(readingsval($hash,'position_addr','') ne $address)
{
readingsBulkUpdate($hash,'position_addr',$address,1);
$hash->{end}{'position_addr'} = $address;
$update = 1;
} # adress has changed
if(readingsval($hash,'position_addr_city','') ne $city)
{
readingsBulkUpdate($hash,'position_addr_city',$city,1);
$hash->{end}{'position_addr_city'} = $city;
$update = 1;
} # city has changed
readingsBulkUpdate($hash,'position_addr_county',$address_county,1);
readingsBulkUpdate($hash,'position_addr_country',$address_country,1);
readingsBulkUpdate($hash,'position_addr_state',$address_state,1);
if(readingsval($hash,'position_addr_extra','') ne $extra)
{
readingsBulkUpdate($hash,'position_addr_extra',$extra,1);
$update = 1;
} # extra has changed
readingsEndUpdate($hash,1);
# in start wird der Anfang einer Reise gespeichert
# in end die aktuelle Position
# kann aber weg gelassen werden, da für die Trip-Aufzeichnung verwendet wird
if($hash->{start}{time} == 0)
{
$hash->{start}{'position_addr'} = $address;
$hash->{start}{'position_addr_city'} = $city;
} # start
# kann auch auskommentiert werden, da die einzelnen Punkte des Trips im Abstand von 2 min aufgezeichnet werden
TeslaCar_Trace($hash)
if($update && AttrVal($name,'trace',0));
} # no parse error
} # there is data
} # end sub TeslaCar_UpdateAddressCallback
##############################
OSM hat sehr viele zusätzliche Infos, die ich (gewichtet und nach ihrem Auftreten) in $extra bzw. im Reading position_addr_extra speichere.
$city wird generiert aus city - town - village (je nach dem wer vorhanden ist).
Der untere Teil ist spezifisch für die Aufzeichnung einer Reise, die ich noch eingebaut habe.
Da werden dann so Werte wie Verbrauch je 100 km, Reisezeit, Reise-Distanz, Start- und Zieladresse für ein Fahrtenbuch) usw. erzeugt.
Bin gerade beim Testen...
Elektrolurch
(
Hallo zusammen,
ich habe heute versucht, mein M3 in FHEM einzubinden.
Nach dem Login ist das Modul connected, aber ich sehe weder ein Fahrzeug, noch kommen readings.
ein set teslaconn scanCars bringt FHEM zum Absturz.
Im Log ist trotz verb5 nichts zu finden.
Was mache ich falsch ?
Ich brauche mal Hilfe der Programmier Profis:
War heute bei Tesla, sie haben wohl bei den neuen MCUs das Verhalten geändert. Und zwar wacht das Fahrzeug jede Stunde einmal kurz auf um sich mit den Tesla Servern zu verbinden (Es wacht aber nur die MCU und nicht das gesamte Fahrzeug auf. Wenn aber FHEM verbunden ist, wird das Fahrzeug als Online gesehen und es passiert:
# always read all data and update all values after coming online
if ($car->{state} eq "online") {
$requestFullStatus = 1;
$hash->{updateAllValues} = 1;
}
} else {
$hash->{updateAllValues} = 0;
}
Woraufhin, dann das ganze Fahrzeug aufwacht und auch nicht direkt wieder einschläft.
Jetzt würde ich gerne in dem Fall, dass das Fahrzeug in den Status Online geht abwarten, ob es 3 Minuten später auch noch Online ist und erst dann die komplette Abfrage starten. (Um zu schauen, ob das Auto nicht schon wieder eingeschlafen ist. Bekomme es aber nicht hin, bzw. mir fehlt einfach Programmiererfahrung in der Sprache (Was ist perl?)
Ich versteh es wie folgt:
1. Abfrage ob FullStatus
my $requestFullStatus = (
ReadingsVal($name,"state",undef) eq "online" && # request full status at this poll when online and
(
$hash->{skipFull} >= $updateTimer || # at least all $updateTimer seconds
(
#$odometerChangeAge < (18*$pollingTimer) || # or if speed has changed between the last three polls
$stateChangeAge < (3*$pollingTimer) || # or if state has changed between the last three polls
$ParkingAge < (3*$updateTimer) || # or if car has been parked the last 30 minutes
ReadingsVal($name,"charging_state","none") eq "Charging" || # or if car is charging
ReadingsVal($name,"shift_state","none") ne "P" || # or if car is not in P
ReadingsVal($name,"sentry_mode","none") == 1 # or if car is in sentry mode
)
)
);
2. Aufruf Funktion mit Übergabe ob FullStatus:
if ($hash->{skipStatus}>=$pollingTimer) {
TeslaCar_UpdateStatus($hash, 1);
$hash->{skipStatus}=0; #HILFE was machen diese Zeilen?
$hash->{skipFull}=0; #HILFE was machen diese Zeilen?
3. Abfragen ob Wert frisch auf Online gewechselt hat
if (ReadingsVal($hash->{NAME},"state",undef) ne $car->{state}) {
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "state", $car->{state});
readingsEndUpdate($hash, 1);
# always read all data and update all values after coming online
if ($car->{state} eq "online") {
$requestFullStatus = 1;
$hash->{updateAllValues} = 1;
}
} else {
$hash->{updateAllValues} = 0;
}
und in diesem Fall requestFullStatus "händisch auf 1"
4. Abruf der Daten wenn FullRequest
if ($car->{state} eq "online" && $requestFullStatus) {
my @names = ();
push @names, "vehicle_data" if (index($dataRequest, "data")>-1);
push @names, "data_request/vehicle_state" if (index($dataRequest, "vehicle")>-1);
push @names, "data_request/charge_state" if (index($dataRequest, "charge")>-1);
push @names, "data_request/drive_state" if (index($dataRequest, "drive")>-1);
push @names, "data_request/climate_state" if (index($dataRequest, "climate")>-1);
push @names, "data_request/gui_settings" if (index($dataRequest, "gui")>-1);
push @names, "data_request/vehicle_config" if (index($dataRequest, "config")>-1);
$hash->{topics} = [@names];
TeslaCar_UpdateVehicleStatus($hash);
}
Was ich auch noch nicht gefunden habe, ist wo der eigentlich "kleine" Abruf von nur Status stattfindet!?
Wow was hier alles los ist ;D
@Elektrolurch, sehr interessant, genau dieser Punkt ist in der Tat mit den meisten Unsicherheiten verbunden. Bin gespannt welche Erfahrungen Du machst und werde Deinen Code auch mal mit meinem Oldtimer ausprobieren.
Ich finde es auch schade dass das zeitnahe Erkennen des Fahrtantritts ohne vorherigen Schlaf des Computers nicht möglich ist. Die Idee, nach dem Laden nicht direkt auf lange Aktualisierungspausen zu schalten finde ich super!
@roadghost, gibts vor dem Absturz noch irgendeine Meldung im fhem.log?
@TimoD, wow echt Du hast bei Tesla jemand gefunden mit dem Du über das API sprechen konntest? Das ist ja fast unglaublich. Lebst Du in Kalifornien? Deine Info mit dem kurzen Aufwachen ist sehr wichtig und führt natürlich wie Du schon beobachtest hast zu einem vollen Request aller Daten. Zunächst aber mal eine Bitte: Dein Code ist nicht aktuell, bitte führe ein update des Moduls durch.
Nachdem Elektrolurch auch gerade mit der Steuerung der Abfrage experimentiert, kann er das 3-Minuten-Delay vielleicht mit einbauen. Ich nehme an dass er auch ein Auto mit neuer MCU hat. Ich überlege schon ob ich ein Upgrade machen lasse, wollte damit aber noch warten bis das Radio auch upgegradet werden kann.
Zitat von: swhome am 12 Oktober 2020, 23:38:51
Wow was hier alles los ist ;D
@Elektrolurch, sehr interessant, genau dieser Punkt ist in der Tat mit den meisten Unsicherheiten verbunden. Bin gespannt welche Erfahrungen Du machst und werde Deinen Code auch mal mit meinem Oldtimer ausprobieren.
Ich finde es auch schade dass das zeitnahe Erkennen des Fahrtantritts ohne vorherigen Schlaf des Computers nicht möglich ist. Die Idee, nach dem Laden nicht direkt auf lange Aktualisierungspausen zu schalten finde ich super!
@roadghost, gibts vor dem Absturz noch irgendeine Meldung im fhem.log?
@TimoD, wow echt Du hast bei Tesla jemand gefunden mit dem Du über das API sprechen konntest? Das ist ja fast unglaublich. Lebst Du in Kalifornien? Deine Info mit dem kurzen Aufwachen ist sehr wichtig und führt natürlich wie Du schon beobachtest hast zu einem vollen Request aller Daten. Zunächst aber mal eine Bitte: Dein Code ist nicht aktuell, bitte führe ein update des Moduls durch.
Nachdem Elektrolurch auch gerade mit der Steuerung der Abfrage experimentiert, kann er das 3-Minuten-Delay vielleicht mit einbauen. Ich nehme an dass er auch ein Auto mit neuer MCU hat. Ich überlege schon ob ich ein Upgrade machen lasse, wollte damit aber noch warten bis das Radio auch upgegradet werden kann.
@swhome: Nein, wohne nähe Stuttgart, habe mich aber wahrscheinlich derart beschwert, dass er Kollege meinte, er zeigt mir die Rohdaten vom Fahrzeug (CAN, BMS etc.). Habe jetzt als quick BugFix mal das $requestFullStatus für updateTimer und "after coming online deaktiviert" und die Daten über Nacht mit geloggt. Es deckt sich exakt mit den Ausführungen von Tesla:
2020-10-13_00:19:44 5YJ19HF176512 state: online
2020-10-13_00:22:38 5YJ19HF176512 state: offline
2020-10-13_01:21:25 5YJ19HF176512 state: online
2020-10-13_01:24:08 5YJ19HF176512 state: offline
2020-10-13_02:22:47 5YJ19HF176512 state: online
2020-10-13_02:25:30 5YJ19HF176512 state: offline
2020-10-13_03:24:16 5YJ19HF176512 state: online
2020-10-13_03:27:11 5YJ19HF176512 state: offline
2020-10-13_04:25:50 5YJ19HF176512 state: online
2020-10-13_04:28:33 5YJ19HF176512 state: offline
2020-10-13_05:27:20 5YJ19HF176512 state: online
2020-10-13_05:30:03 5YJ19HF176512 state: offline
2020-10-13_06:28:52 5YJ19HF176512 state: online
2020-10-13_06:31:36 5YJ19HF176512 state: offline
2020-10-13_07:30:18 5YJ19HF176512 state: online
2020-10-13_07:33:14 5YJ19HF176512 state: offline
Fahrzeug wacht exakt nach einer Stunde für ca. 3 Minuten auf und schläft danach wieder ein. Meine zusätzliche Lösung ist, dass ich über FTUI im Fahrzeug eine Tesla Darstellung habe und darüber den $requestFullStatus auslösen kann, siehe Anhang.
@Elektrolurch: Deine Änderungen hören sich klasse an! (u.a. Durchschnittsverbrauch und Co. (Habe dies derzeit per userReadings umgesetzt) Eine Implementierung des "Verzögerungstimers nach Online für 3 Minuten oder für Variable-Minute wäre klasse. Gerne zu Begin auch erstmal als Hinweis wie du es umsetzten würdest.
Ansonsten werde ich heute zusätzlich noch das Update durchführen.
Grüße Timo
Habs jetzt wie folgt versucht:
my $stateChangeAge = gettimeofday() - time_str2num(ReadingsTimestamp($name,"state",gettimeofday()));
my $requestFullStatus = (
ReadingsVal($name,"state",undef) eq "online" && # request full status at this poll when online and
(
$stateChangeAge > (24*$pollingTimer) || # or if state has changed between the last three polls
ReadingsVal($name,"charging_state","none") eq "Charging" || # or if car is charging
ReadingsVal($name,"sentry_mode","none") == 1 # or if car is in sentry mode
)
);
pollingTimer habe ich auf 10 Sekunden, was bedeuten würde, wenn Online und Alter 4 Minuten, dann FullRequest. Müsste doch passen,... gerade schläft das Fahrzeug :-)
Hallo,
Zitat:
Nachdem Elektrolurch auch gerade mit der Steuerung der Abfrage experimentiert, kann er das 3-Minuten-Delay vielleicht mit einbauen. Ich nehme an dass er auch ein Auto mit neuer MCU hat. Ich überlege schon ob ich ein Upgrade machen lasse, wollte damit aber noch warten bis das Radio auch upgegradet werden kann.
Eigentlich habe ich auf meinem neuen M3 die neuste Software aufgespielt, kann aber das o.g. Verhalten nicht bestätigen.
Allerdings steht bei mir der pollingTimer auch auf 120, vielleicht fällt das kurze 'online' daher aus dem Zeitraster.
Ich werde es weiter beobachten.
OSM-Adressenumsetzung funktioniert, Fahrtenbuch auch (nach 30 Minuten Pause wird der aktuelle Trip als Eintrag in eine Datei eingetragen), das Aufladen wird auch abgespeichert, so dass man auch über längere Zeit die Verbrauchswerte ermitteln kann.
Habe dem Modul für die einzelnen Bereiche auch noch einen eigenen html-Output verpasst.
Aktion, Batterie, Einstellungen, Fahren, Fahrtenbuch, Klima, Status, Strecke
Schönes Spielzeug. Wenn alles funktioniert und Interesse an einer Integration besteht, benötige ich allerdings etwas Unterstützung.
Elektrolurch
Zitat von: swhome am 12 Oktober 2020, 23:38:51
Wow was hier alles los ist ;D
@roadghost, gibts vor dem Absturz noch irgendeine Meldung im fhem.log?
Hi. Folgenden Eintrag habe ich im Log gefunden:
2020.10.11 21:28:22.617 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/49_TeslaConnection.pm line 370.
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/49_TeslaConnection.pm line 313.
Und danach stürzt das ganze FHEM ab? Ich schau's mir an.
Übrigens kommt noch weitere Arbeit auf uns zu, Tesla hat eine multifaktor authentication eingeführt. Ich nehme an dass das Modul nach dem Aktivieren der mfa nicht mehr funktioniert.
Zitat von: swhome am 16 Oktober 2020, 23:21:47
Übrigens kommt noch weitere Arbeit auf uns zu, Tesla hat eine multifaktor authentication eingeführt. Ich nehme an dass das Modul nach dem Aktivieren der mfa nicht mehr funktioniert.
Jup so siehts aus geht leider nicht mehr mit der MFA
Seit 31.10. 13:00 Uhr geht es bei mir auch nicht. "teslaconn" sagt login neccessary, aber der login geht nicht mehr?
Merkwürdigerweise gab es aber kein Update der Tesla - App auf dem iPhone.
Ist es jetzt die MFA oder ein anderes Problem?
Hat noch jemand Probleme mit dem login?
set teslacoon scancars führt zu
2020.11.02 12:10:17 4: teslaconn request: https://owner-api.teslamotors.com/api/1/vehicles
2020.11.02 12:10:17 4: teslaconn: no token to be refreshed
2020.11.02 12:10:17 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/49_TeslaConnection.pm line 370.
2020.11.02 12:10:18 4: teslaconn response:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/49_TeslaConnection.pm line 313.
2020.11.02 12:11:49 1: Including fhem.cfg
Elektrolurch
Sieht aus wie nicht eingeloggt. Ich hab mich bisher noch nicht neu anmelden müssen... aber irgendwann wird's passieren :-\
erstmal DANKE ;D für das Modul...
Funktioniert für meine belange einwandfrei .
Mal sehen was man damit alles anfangen kann 8)
Bei meinem M3 läuft es nach Erstinstallation im Frühjahr tadellos vor sich hin, selbst wenn die Handy-App mal tot ist, kriegt es beim Laden neue Daten. Überhöhter Schlafverbrauch ist mir nicht aufgefallen. Jetzt werde ich mal forschen, was die Log's so sagen...
Danke, dass ihr ein Auge drauf habt und da ggf. was macht!
PS: Im November schlief das M3 bei mir im Schnitt über Phasen von 6-10h (Firmware aktuell 2020.44.10.1).
Zitat von: Elektrolurch am 02 November 2020, 12:14:47
Seit 31.10. 13:00 Uhr geht es bei mir auch nicht. "teslaconn" sagt login neccessary, aber der login geht nicht mehr?
Merkwürdigerweise gab es aber kein Update der Tesla - App auf dem iPhone.
Ist es jetzt die MFA oder ein anderes Problem?
Hat noch jemand Probleme mit dem login?
Elektrolurch
Hallo,
bei mir geht der login nur in der Befehls-Zeile mit
set teslaconn login xxx@xxx.de passwort
Zitat von: swhome am 04 November 2020, 00:03:39
Sieht aus wie nicht eingeloggt. Ich hab mich bisher noch nicht neu anmelden müssen... aber irgendwann wird's passieren :-\
Danke für das grandiose Modul. Ich konnte sofort Daten aus meinem Model 3 LR auslesen.
Alexa habe ich auch angebunden an FHEM. Mit FHEM klappt Sprachsteuerung des ganzen Hauses.
NUR: wie kann ich mein Auto im Tesla Modul ansprechen/abfragen/schalten?
Kannst Du mir da bitte einen Tipp geben?
Danke
Roy
Zitat von: Fashionbye am 30 November 2020, 15:29:19
NUR: wie kann ich mein Auto im Tesla Modul ansprechen/abfragen/schalten?
Kannst Du mir da bitte einen Tipp geben?
@Fashionbye: Da musst du dich mit "genericDeviceType" und "homebridgeMapping" von homebridge-fhem beschäftigen --> Doku (https://github.com/justme-1968/homebridge-fhem/blob/master/README.md)
Wenn sich das einmal jemand genau ansieht und die custom mappings zu den Readings / Set Befehlen sinnvoll erstellt, könnten viele davon profitieren.
@swhome: Danke für das Modul!
Ich würde gerne folgenden Feature-Request einmelden: Alle Funktionen des Moduls nonblocking machen. Mir wird bei "apptime max" immer dieses Modul ganz oben aufgeführt mit Ausführungszeiten von über einer Sekunde. (Solange blockiert das Modul dann das restliche FHEM...)
Login funktioniert nicht mehr ?
Gestern war der Web-Login bei Tesla mit einer Errormeldung gekrönt...was jetzt wieder geht. https://www.tesla.com/de_de (https://www.tesla.com/de_de)
heute geht das Login im Modul nicht mehr ? bin ich der einzige ?
2021.01.30 12:40:40 2: teslaconn AuthTokenResponse {"response":"endpoint_deprecated:_please_update_your_app."}
ich bin auch betroffen
2021.01.30 13:40:57 2: teslaconn AuthTokenResponse {"response":"endpoint_deprecated:_please_update_your_app."}
Beimir geht es seit 30.1.14:00 uhr nicht mehr.
Andi
Bei mir geht das login seit gestern auch nicht mehr.
Verstehe allerdings nicht, was der Unterschied zur App ist, die geht ja noch und wurde schon seit ewigen Zeiten nicht mehr aktualisiert.
Schade, hatte das Modul gerade so schön aufgebohrt... Ladestatistik, automatische Fahrtentbuch...
Elektrolurch
hier auch
Hallo zusammen,
ich habe in einem anderen Forum was gefunden:
Hey, I'm the dude that documented the API.
They shut down the main authentication API endpoint in favor of auth.telsa.com. I'm working on updated docs. If you have an old token that's still valid, you can use that for now. Otherwise, you'll need to wait until I figure it all out (it's not that hard, just some new APIs to call) and can get a new token.
Edit: New docs are up: https://tesla-api.timdorr.com/api-basics/authentication
Ich hoffe, damit kann jemand was mit anfangen, ich leider nicht.
Andi
Also ich habe jetzt mal swhome angeschrieben ob er vor hat die Änderungen zeitnah um zu setzen. Falls nein, hätte ich einen Entwickler an der Hand der das bestimmt "schnell" machen könnte. (Ich habe es mir gestern angeschaut und meine PERL Kenntnisse reichen leider nicht)
Hier könnte ich mir vorstellen, dass wir einen freiwilligen Paypal Moneypool einrichten. Was meint Ihr? Oder arbeitet schon jemand an der Inplementation?
Einfach ist wohl nicht, wenn man sich mit der Materie nicht auskennt.
Grüße Timo
Hallo,
hier noch ein Link, wo das gleiche Thema behandelt wird.
https://github.com/timdorr/tesla-api/issues/215
Als mein Beitrag zur Unterstützung für die Programmierer unter den Tesla Fahrern.
Andi
Puh,
das Problem an dem Beitrag ist... try and error....
Ich glaube, man müsste sich eher an das hier halten: https://tesla-api.timdorr.com/api-basics/authentication
Wenn ich das also richtig verstehe, muss man zwei requests an die Seite schicken, also ein zweistufiges Verfahren. Nur die URL austauschen funktioniert nicht.Leider bin ich nicht besonders in dem http-request - Kram....
Zitat von: Elektrolurch am 03 Februar 2021, 12:08:56
Puh,
das Problem an dem Beitrag ist... try and error....
Ich glaube, man müsste sich eher an das hier halten: https://tesla-api.timdorr.com/api-basics/authentication
Wenn ich das also richtig verstehe, muss man zwei requests an die Seite schicken, also ein zweistufiges Verfahren. Nur die URL austauschen funktioniert nicht.Leider bin ich nicht besonders in dem http-request - Kram....
Ein Notoption wäre auch noch die Token als Parameter zu übergeben. Sie lassen sich z.B. über Teslafi erzeugen. Aber meine PERL Kenntnisse reichen einfach nicht :-\
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
Aber es liegt ja nicht an der Multifaktor Authentifizierung, sondern, dass die Art wie man einen Token bekommt geändert wurde,... in welchem Forum?
Zitatswhome 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...
Ich kann bei Tesla nur weitere Benutzer für das Fahrzeug anlegen, die aber nicht weiter konfigurieren (Berechtigung / Authentifizierung...)
btw: https://tesla-api.timdorr.com/api-basics/authentication - Die Beschreibung der API wurde offenbar aktualisiert - falls sich jemand auskennt...
Gruß
Baeda
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.
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 ;)
ich hab den Teslalogger https://e-mobility-driving-solutions.com/produkt-kategorie/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 !
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 (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 (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.
Danke für den Workaround! Bei mir funktioniert das Modul mit den beschriebenen Schritten aktuell auch wieder.
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!
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
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!
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
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?
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.
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
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
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!
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 (https://github.com/timdorr/tesla-api/discussions/288)
Hoffe das hilft.
Zitat von: Decki am 08 Februar 2021, 19:52:39
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
Hi Decki,
Die "" müssen bleiben. In Windows gibt es (meines Wissens als MacUser) die "DOS-Box" - command dort einfach eigeben und ausführen.
Zitat von: Elektrolurch am 09 Februar 2021, 11:51:44
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
Alternative falls Update nicht funktioneren sollte: Code vonGitHub als zip herunterladen (https://github.com/BAngel87/FHEM-Tesla/archive/master.zip (https://github.com/BAngel87/FHEM-Tesla/archive/master.zip)) und die enthalteten Dateien händisch in FHEM kopieren.
Hallo,
ich konnte nun das Token erzeugen, nachdem ich php auf einem anderen Raspi installiert hatte.
Habe dann das Token in Teslaconn als Attribut mit Anführungszeichen hinzugefügt.
Dann Login: funktioniert
In TeslaCar init ausgeführt kommt:
Failed to connect to TeslaCar API, see log for details
2021.02.14 11:38:19 2: set command: init
2021.02.14 11:38:19 4: 5YJ3E7EBXXXXXXXXX request: https://owner-api.teslamotors.com/api/1/vehicles
2021.02.14 11:38:19 4: 5YJ3E7EBXXXXXXXXX: no token to be refreshed
2021.02.14 11:38:19 4: 5YJ3E7EBXXXXXXXXX response:
Habe die Module von https://github.com/BAngel87/FHEM-Tesla
Was stimmt da nicht?
Ok. Die Dateien habe ich jetzt über den git-Link heruntergeladen.
php musste ich installieren.
Beim Ausführen des Skripts bekomme ich allerdings:
PHP Fatal error: Uncaught Error: Call to undefined function curl_init() in /hdd/sda4/fhem/lib/FHEM/PHPScriptTeslaLogin.php:503
Stack trace:
#0 {main}
thrown in /hdd/sda4/fhem/lib/FHEM/PHPScriptTeslaLogin.php on line 503
Fehlt da eine lib für php (curl)?
Leider kenne ich mich mit dem php - Kram so gar nicht aus.
Mir ist nur aufgefallen, dass bei der Installation auch der apache2 mitkommt...
Elektrolurch
Hallo Elektroluch,
ich habe folgenden Befehl/ Module auf einem Raspi installiert:
apt install php libapache2-mod-php php-cli php-fpm php-json php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath
ZitatFehlt da eine lib für php (curl)?
ich habe php bei mir lokal installiert (Linux Mint), dazu noch folgende Pakete:
php-curl, php-dom, php7.2-xml @ mrmops: Danke für den Tipp! Mit der aktuellen Version klappte es - ich konte den Token generieren.
TeslaConnection zeigt nun nach einem erneuten login "connected" an.
Allerdings aktualisiert sich bei mir TeslaCar nicht mehr.
Wenn ich
set myTeslaCar wakeUpCar
ausführe, erhalte ich einen Fehler:
{"error":"unsupported SSO app"}
Hallo baeda,
genauso verhält es sich bei mir.
Hallo beada und Decki,
welchen Wert zeigt bei Euch das Reading 'tokenExpiry' bei 'TeslaConnection' ?
Hallo mrmops,
das hier: tokenExpiry Wed Mar 3 19:59:25 2021
Hallo Decki,
wenn ich das richtig verstehe hast Du die Anpassung von TimoD in Verwendung welche bei ihm funktioniert. Ich habe seine Lösung bislang nicht im Einsatz. Bei mir funktioniert sowohl das senden von Commands wie 'wakeUpCar' als auch das Update der Readings soweit problemlos mit folgender Anpassung in der Funktion 'sub TeslaConnection_Define($$)' des Moduls '49_TeslaConnection.pm':
sub TeslaConnection_Define($$)
{
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
my $u = "wrong syntax: define <conn-name> TeslaConnection [client_id] [redirect_uri] [simulator]";
# return $u if(int(@a) < 4);
### DEBUG mrmops
my $name = $hash->{NAME};
Log3 $name, 1, "### TeslaConnection_Define";
$hash->{api_uri} = "https://owner-api.teslamotors.com";
# if(int(@a) >= 4) {
# $hash->{client_id} = $a[2];
# $hash->{redirect_uri} = $a[3];
# }
# else {
$hash->{client_id} = "81527cff06843c8634fdc09e8ac0abefb46ac849f38fe1e431c2ef2106796384";
$hash->{client_secret} = "c7257eb71a564034f9419ee651c7d0e5f7aa6bfbd18bafb5c5c033b093bb2fa3";
# mrmops hack !!!
setKeyValue($hash->{NAME}."_accessToken","qts-XXXXXXXXX");
setKeyValue($hash->{NAME}."_refreshToken", "eyJhbGciOiJSUzI1NXXXXXXXX");
$hash->{created_at} = 1612611361;
$hash->{expires_at} = $hash->{created_at};
$hash->{expires_at} += 3888000;
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "tokenCreated", scalar localtime $hash->{created_at});
readingsBulkUpdate($hash, "tokenExpiry", scalar localtime $hash->{expires_at});
readingsEndUpdate($hash, 1);
# END Hack
# }
###### mrmops hack !!!
#$hash->{STATE} = "Login necessary";
$hash->{STATE} = "Connected";
# start with a delayed refresh
#setKeyValue($hash->{NAME}."_accessToken",undef);
##### END Hack
InternalTimer(gettimeofday()+10, "TeslaConnection_RefreshToken", $hash, 0);
return;
}
In den folgenen Zeilen habe ich die jeweiligen Werte, welche bei der Erzeugung des Tokens ausgeben werden eingetragen:
setKeyValue($hash->{NAME}."_accessToken","qts-XXXXXXXXX"); <--- Wert von ["access_token"]
setKeyValue($hash->{NAME}."_refreshToken", "eyJhbGciOiJSUzI1NXXXXXXXX"); <--- Wert von ["refresh_token"]
$hash->{created_at} = 1612611361; <--- Wert von ["created_at"]
$hash->{expires_at} += 3888000; <--- Wert von ["expires_in"]
Meine ursprüngliche Anpassung in 'TeslaConnection_Set' in meinem Beitrag « Antwort #168 am: 06 Februar 2021, 17:06:28 » hatte tatsächlich das Problem das Commands gesendet werden konnten, aber die Readings nicht aktualisiert wurden.
Bei mir läuft es nun mit obigem Hack seit einer Woche einwandfrei. Ich hoffe dies funktioniert auch bei Euch.
Danke, mit dem Hack hat es gleich automatisch nach einem Neustart wieder funktioniert.
Jetzt habe ich meine "Teslana" wieder (auf dem Bildschirm) :-)
Eins ist mir noch aufgefallen:
2021.02.15 11:58:40 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/49_TeslaConnection.pm line 49, <$fh> line 4613.
In der _Inititalize - Routine ist der NAME des Objektes natürlich nicht bekannt und es macht keinen Sinn das attr zu setzen.
Unter debian - buster musste ich folgendes nachinstallieren:
apt-get install php-curl php7.3-xml
Ah, jetzt habe ich aber noch das hier im log:
2021.02.15 12:08:49 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/49_TeslaConnection.pm line 435.
Muss man jetzt das AccessToken einmal im Monat erneuern?
Elektrolurch
Hallo Elektrolurch,
schön das es nun wieder bei Dir läuft.
1) Die von Dir angeführten PERL-Warnings habe ich nicht im log - habe aber auch im "Initialize" nichts geändert.
2) "Muss man jetzt das AccessToken einmal im Monat erneuern?".
Der Hack ist nur ein schneller Workaround - 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.
Hallo mrmops,
Danke für deine Anleitung. Habe es streng danach durchgeführt und es funktioniert. Warum ist das Refreshtoken um soviel länger als das Accesstoken?
Komisch ist, dass nicht alle Readings aktualisiert werden.
Aber ich bekomme den Ladezustand des Akkus, was für mich wichtig ist.
Nochmals danke
Andy
Hallo Decki,
freut mich das es bei Dir ebenfalls funktioniert hat.
Das nicht immer alle Readings aktualisiert werden ist an sich normal - versuch mal ein 'requestSettings' beim 'TesclaCar' - Device. Meiner Erfahrung nach werden dabei die meisten Readings aktualisert (wenn das Auto online ist).
Beste Grüße,
Ebenfalls Andi
Hallo mrmops,
ich habe die 49_TeslaConnection.pm nach Deiner Vorlage angepasst - nun wird alles wieder aktualisiert.
Vielen Dank für den Tipp!
Grüße,
Baeda
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
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
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.
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
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
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 (https://forum.fhem.de/index.php/topic,74341.msg1041052.html#msg1041052). Ist vielleicht ein alternativer Ansatz für Die Anzeige von Recihweite und Ladezeit.
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 descriptorKann das nicht jemand mit HttpUtils-Ahnung anhand https://tesla-api.timdorr.com/api-basics/authentication#step-1-obtain-the-login-page (https://tesla-api.timdorr.com/api-basics/authentication#step-1-obtain-the-login-page) hinkriegen?
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...
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?
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.
Hallo, schau dir mal das an, dort wurde das Problem schon gelöst: https://github.com/adriankumpf/teslamate/issues/1398
Wäre die Nutzung hiervon vielleicht eine Lösung:
https://github.com/tomhollander/TeslaAuth (https://github.com/tomhollander/TeslaAuth)
-------
btw. Das Php Skript funktioniert nicht mehr
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.
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 (https://tesla-api.timdorr.com/api-basics/authentication)
Funktioniert das PHP Script bei jemanden?
Ja, Anfang März meinen Token damit generiert.
Folgendes ausgeführt:
apt-get install php-curl php7.3-xml
Set Acces Token in:
attr NAME AccessToken by
Getting AccessToken from PHPSkript "PHPScriptTeslaLogin",
1. Adding Name and Passwort in last row of script
2. Run with: php -f PHPScriptTeslaLogin.php
3. Paste Token "qts-*******" in fhem attr.
4. set teslaconn Login
5. set TeslaCar init
vor Ablauf der Gültigkeit nun manuell mit 'set refreshToken' angeforderte Original-Token-Refresh auch geklappt
https://github.com/BAngel87/FHEM-Tesla
Gruß
Elektrolurch
Hallo Elektrolurch,
vielen Dank für die schnelle Antwort!
Bei mir kommt leider immer folgende Meldung.
PHP Notice: Undefined offset: 1 in /home/pi/Desktop/FHEM-Tesla-master (2)/FHEM-Tesla-master/PHPScriptTeslaLogin on line 317
PHP Notice: Undefined index: access_token in /home/pi/Desktop/FHEM-Tesla-master (2)/FHEM-Tesla-master/PHPScriptTeslaLogin on line 369
array(2) {
["response"]=>
string(17) "invalid_sso_token"
["refresh_token"]=>
NULL
}
Keine Ahnung was ich falsch mache.
Lg
Techno
Zitat von: TechnoTron am 19 März 2021, 14:54:54
Hallo Elektrolurch,
vielen Dank für die schnelle Antwort!
Bei mir kommt leider immer folgende Meldung.
PHP Notice: Undefined offset: 1 in /home/pi/Desktop/FHEM-Tesla-master (2)/FHEM-Tesla-master/PHPScriptTeslaLogin on line 317
PHP Notice: Undefined index: access_token in /home/pi/Desktop/FHEM-Tesla-master (2)/FHEM-Tesla-master/PHPScriptTeslaLogin on line 369
array(2) {
["response"]=>
string(17) "invalid_sso_token"
["refresh_token"]=>
NULL
}
Keine Ahnung was ich falsch mache.
Lg
Techno
Funktioniert nicht mehr, muss angepasst werden. Am einfachsten einen Token über Teslafi generieren und den eintragen. geht auch ohne zahlenden Account,..
Vielen Dank Timo!
Jetzt funktioniert wieder alles :D
Hallo zusammen,
ich habe das Modul nocht nicht installiert. Welcher Weg ist aktuell der beste um das zum Laufen zu bekommen?
Vielen Dank
Zitat von: herman am 26 März 2021, 20:14:26
Hallo zusammen,
ich habe das Modul nocht nicht installiert. Welcher Weg ist aktuell der beste um das zum Laufen zu bekommen?
Vielen Dank
- Modul installieren
- Auf Teslafi Token erstellen lassen
- per "attr XXX AccessToken TOKEN " einfügen
- per "set XXX Name Passwort" einloggen
- zu guter Letzt "set XXX scanCars
Zitat von: TechnoTron am 29 März 2021, 07:46:54
- Modul installieren
- Auf Teslafi Token erstellen lassen
- per "attr XXX AccessToken TOKEN " einfügen
- per "set XXX Name Passwort" einloggen
- zu guter Letzt "set XXX scanCars
Vielen Dank. Ich finde kein Attribut AccessToken. Ich habe das Originalmodul installiert:
https://github.com/sw-home/FHEM-Tesla
Muss ich ein anderes installieren?
Zitat von: herman am 29 März 2021, 21:55:07
Vielen Dank. Ich finde kein Attribut AccessToken. Ich habe das Originalmodul installiert:
https://github.com/sw-home/FHEM-Tesla
Muss ich ein anderes installieren?
Einfach mal hier ein paar Seiten zurück lesen,...
Zitat von: TimoD am 29 März 2021, 23:21:42
Einfach mal hier ein paar Seiten zurück lesen,...
Ist nicht so ganz durchsichtig mit den diversen Modulen und Workarounds...
Ist das hier das richtige Modul, das mit dem Workaround funktioniert? https://github.com/BAngel87/FHEM-Tesla
Beim Versuch der Installation mittels "update all" direkt in FHEM bekomme ich auch die besagte Fehlermeldung:
2021.03.29 23:44:40 1 : UPD FHEM/49_TeslaCar.pm
2021.03.29 23:44:40 1 : Got 24864 bytes for FHEM/49_TeslaCar.pm, expected 14910
2021.03.29 23:44:40 1 : aborting.
Zitat von: herman am 29 März 2021, 23:28:32
Ist nicht so ganz durchsichtig mit den diversen Modulen und Workarounds...
Ist das hier das richtige Modul, das mit dem Workaround funktioniert? https://github.com/BAngel87/FHEM-Tesla
Beim Versuch der Installation mittels "update all" direkt in FHEM bekomme ich auch die besagte Fehlermeldung:
2021.03.29 23:44:40 1 : UPD FHEM/49_TeslaCar.pm
2021.03.29 23:44:40 1 : Got 24864 bytes for FHEM/49_TeslaCar.pm, expected 14910
2021.03.29 23:44:40 1 : aborting.
Versuch es nochmal, zur Not die Dateien in fhem/FHEM händisch anpassen oder einfügen,.... (Achtung als FHEM User wegen Berechtigungen,....)
Ich hoffe das Modul bekommt bald ein ordentliches Update :-9 @swhome
Zitat von: TimoD am 30 März 2021, 11:05:32
Versuch es nochmal, zur Not die Dateien in fhem/FHEM händisch anpassen oder einfügen,.... (Achtung als FHEM User wegen Berechtigungen,....)
Ich hoffe das Modul bekommt bald ein ordentliches Update :-9 @swhome
Alles klar. Habe die Dateien manuell getausch und es damit zum laufen bekommen.
Habt ihr eine Empfehlung, damit der Tesla nicht unnötig wach gehalten wird?
Ich habe nach der Einbindung in FHEM das logging in teslafi deaktiviert und in FHEM die attribute wie folgt gesetzt:
dataRequest data
pollingTimer 60
streamingTimer 5
updateTimer 1200
Seit der Inbetriebnahme des Moduls geht das Auto nicht mehr in den Sleep-Modus.
Hallo Liste,
ich habe da nicht so genau hingeschaut, da ich dachte, es gibt im teslaconn - Modul einen Befehl "RefreshToken".
Den gibt es wohl nicht, ein logout / login setzt das Reading
2021-03-29 21:50:28 tokenExpiry Thu Apr 1 12:17:19 2021
wohl auch nicht.
Ignorieren des Ablaufdatums oder das php - Script erneut verwenden? Teslavi ist mir doch ser suspekt.... Da gebe ich den Schlüssel zu meinem Auto weg.
Elektrolurch
Zitat von: herman am 30 März 2021, 19:22:22
Alles klar. Habe die Dateien manuell getausch und es damit zum laufen bekommen.
Habt ihr eine Empfehlung, damit der Tesla nicht unnötig wach gehalten wird?
Ich habe nach der Einbindung in FHEM das logging in teslafi deaktiviert und in FHEM die attribute wie folgt gesetzt:
dataRequest data
pollingTimer 60
streamingTimer 5
updateTimer 1200
Seit der Inbetriebnahme des Moduls geht das Auto nicht mehr in den Sleep-Modus.
Hast du ein Model S mit MCU1 zu MCU2 Update? (Falls nein, müssten die Einstellungen passen. Du kannst ja z.B. im Logging sehen wie viel das Auto schläft)
Ich benutze folgendes userReading:
Status {if(ReadingsVal("HIERVINEINFÜGEN","state","0") eq "asleep"){"6"}elsif(ReadingsVal("HIERVINEINFÜGEN","state","0") eq "offline"){"6"}elsif(ReadingsVal("HIERVINEINFÜGEN","sentry_mode","0") eq "1"){"7"}elsif(ReadingsVal("HIERVINEINFÜGEN","state","0") eq "online" && InternalVal("HIERVINEINFÜGEN","skipFull","0") eq "0"){"5"}elsif(ReadingsVal("HIERVINEINFÜGEN","state","0") eq "online" && InternalVal("HIERVINEINFÜGEN","skipFull","0") > 0){"8"}else{ReadingsVal("HIERVINEINFÜGEN","state","0")}},
Status gibt dann folgendes aus:
5 --> Fahrzeug wach +
Polling vom Modul aktiv6 --> Fahrzeug schläft / bzw. Offline
7 --> SentryMode aktiv
8 --> Fahrzeug wach +
kein Polling Fahrzeug versucht einzuschlafenIn FTUI sieht es dann wie folgt aus:
<div class="normal" data-type="switch" data-device="HIERVINEINFÜGEN" data-get="Status" data-background-color="none" data-background-icon="none" data-warn-background-color="none"
data-set-states='["requestSettings","requestSettings","wakeUpCar","requestSettings","requestSettings"]'
data-states='["0","5","6","7","8"]'
data-icons='["fa-automobile","fa-automobile","oa-scene_sleeping","mi-switch_video","fa-automobile"]'
data-colors='["#00e069","#00e069","#003dd6","#ff0000","#003dd6"]'
></div>
--> Es muss natürlich noch der Name des Fahrzeugs geändert werden "HIERVINEINFÜGEN"
Zitat von: TimoD am 31 März 2021, 09:33:15
Hast du ein Model S mit MCU1 zu MCU2 Update? (Falls nein, müssten die Einstellungen passen. Du kannst ja z.B. im Logging sehen wie viel das Auto schläft)
Danke Timo! Ich baue das mal gleich ein.
Ich habe ein Model 3. Nachdem er gestern wirklich den ganzen Tag nicht mehr eingeschlafen ist - egal wie hoch ich die Timer gedreht habe - bin ich noch Mal eine Runde gefahren. Ich wollte ohnehin noch Mal die Enhanced Autopilot Funktionen testen, die Tesla vielen für 14 Tage freigeschaltet hat. Danach war mein Adrenalinspiegel hoch - ist echt eine Mutprobe die Kiste die Autobahn wechseln zu lassen...
Irgendwann eine Stunde später ist er dann wieder eingeschlafen. Heute habe ich die Werte wie folgt angepasst und auch einmal über die App das Auto geweckt. Der Status wurde in FHEM korrekt angezeigt und das Auto ist irgendwann auch wieder eingeschlafen.
pollingTimer 60
streamingTimer 2400
updateTimer 1200
Nur das ich die Werte richtig interpretiere:
Alle Werte in Sekunden.
PollingTimer: Anfrage gegen den Tesla-Server, ob das Auto online ist
UpdateTime: Anfrage der Werte, falls das auto online ist. Jede Anfrage verhindert das einschlafen
StreamingTimer: Nur relevant, wenn DataRequest auch auf "stream" steht. Falls ja werden in diesem Intervall die Werte während der Fahrt abgefragt.
In meinem Verständnis kann nur eine zu einem unnötigen "wach halten" kommen, wenn UpdateTime zu niedrig eingestellt ist, richtig?
Fast,
pollingTimer 60 Zeit in Sekunden in dem die Daten vom Server abgefragt werden wenn das Auto fährt
streamingTimer 2400 irrelevant wenn Streaming aus (Streaming funktioniert nicht bzw. nur bedingt)
updateTimer 1200 Diese Anzahl an Sekunden wird gewartet, wenn das Fahrzeug steht und dann alle Werte abgefragt, wenn zu klein kann dies das Einschlafen verhindern
Ob das Fahrzeug Online ist oder Schläft, bekommt das Modul immer direkt mit, da das von Tesla zur Verfügung gestellt wird, ohne das eine Request stattfindet.
Grüße
Zitat von: herman am 30 März 2021, 19:22:22
Alles klar. Habe die Dateien manuell getausch und es damit zum laufen bekommen.
Habt ihr eine Empfehlung, damit der Tesla nicht unnötig wach gehalten wird?
Ich habe nach der Einbindung in FHEM das logging in teslafi deaktiviert und in FHEM die attribute wie folgt gesetzt:
dataRequest data
pollingTimer 60
streamingTimer 5
updateTimer 1200
Seit der Inbetriebnahme des Moduls geht das Auto nicht mehr in den Sleep-Modus.
ich habe das gleiche Problem.
wie funktioniert das mit dem manuellen Dateitausch genau?
Zitat von: Florian_ad am 01 April 2021, 13:46:12
ich habe das gleiche Problem.
wie funktioniert das mit dem manuellen Dateitausch genau?
Ich habe prakmatisch die folgende Dateien im Texteditor geöffnet und mit den Inhalten aus github überschrieben:
49_TeslaCar.pm
49_TeslaConnection.pm
Es gibt sicherlich auch einen Befehl um die Dateien aus github zu laden - aber das war für mich am einfachsten.
Hallo,
mein manuell erzeugter Token ist nun abgelaufen. Leider habe ich verschlafen, diesen vor dem expirationDate zu erneuern.
Deshalb wollte ich ihn neu erzeugen mit dem gleichen Script wie beim letzten Mal.
Im Script sind Loginname und Passwort angepasst (hat ja schon funktioniert vor 6 Wochen)
Nun bekomme ich folgende Meldung:
php -f PHPScriptTeslaLogin.php
PHP Notice: Undefined offset: 1 in /tmp/PHPScriptTeslaLogin.php on line 317
PHP Notice: Undefined index: access_token in /tmp/PHPScriptTeslaLogin.php on line 369
array(2) {
["response"]=>
string(17) "invalid_sso_token"
["refresh_token"]=>
NULL
}
Was stimmt da nicht mehr?
Ich musste jetzt auch meinen AccessToken verlängern (1.4. Ablauf), den ich schon eimal mit dem php - Skript erzeugt hatte.
Gleiches Resultat, wie im Beitrag davor....
Ziemlich ärgerlich, da ich jetzt nicht mehr auf die Daten von meiner "Teslana" (M3) zugreifen kann. Hatte einige nette Erweiterungen, wie Fahrtenbuch, Klartetxt - Adressen ... ins Modul programmiert.
Den Weg über "teslavie" ein AccessToken zu generieren, halte ich für sehr bedenklich.
Welche Interessen sollte so eine Webseite haben, einen solchen Service kostenlos anzubieten? Worin liegt deren Geschäftsmodell? Was machen die dann mit den Daten von meiner "Teslana"?
Wäre schön, wenn es noch eine andere Lösung für den Token geben würde.
Elektrolurch
Zitat von: Elektrolurch am 05 April 2021, 13:10:39
Ich musste jetzt auch meinen AccessToken verlängern (1.4. Ablauf), den ich schon eimal mit dem php - Skript erzeugt hatte.
Gleiches Resultat, wie im Beitrag davor....
Ziemlich ärgerlich, da ich jetzt nicht mehr auf die Daten von meiner "Teslana" (M3) zugreifen kann. Hatte einige nette Erweiterungen, wie Fahrtenbuch, Klartetxt - Adressen ... ins Modul programmiert.
Den Weg über "teslavie" ein AccessToken zu generieren, halte ich für sehr bedenklich.
Welche Interessen sollte so eine Webseite haben, einen solchen Service kostenlos anzubieten? Worin liegt deren Geschäftsmodell? Was machen die dann mit den Daten von meiner "Teslana"?
Wäre schön, wenn es noch eine andere Lösung für den Token geben würde.
Elektrolurch
d.h. es gibt aktuell keine Möglichkeit einen Token ohne einen Drittanbieter zu erzeugen?
Ich denke, dass Teslafi sein Geld mit Abos verdient. Man kann das System testweise 14 Tage ohne Abo verwenden und offensichtlich geht die Tokengenerierung auch ohne das Abo. Obwohl ich Teslafi nichts unterstelle, fühle ich mich auch nicht wohl dabei meine Zugangsdaten dort zu hinterlegen, da diese in einer Datenbank gespeichert werden.
Gibt es denn aktuell Aktivitäten, die Authentifizierung umzusetzen? Leider gibt es weder hier, noch auf github Infos dazu.
Hallo zusammen,
ich als Nichtprogrammierer stelle mich die Frage, wie das denn mit der Handy (Android) -App geht. Diese funktioniert bei mir immer. Kann man denn nicht dort den aktuellen Token herausziehen? Dort muss doch auch irgendwie der Token aktualisiert werden.
Gruß Andi
Zitat von: herman am 01 April 2021, 21:40:41
Ich habe prakmatisch die folgende Dateien im Texteditor geöffnet und mit den Inhalten aus github überschrieben:
49_TeslaCar.pm
49_TeslaConnection.pm
Es gibt sicherlich auch einen Befehl um die Dateien aus github zu laden - aber das war für mich am einfachsten.
Ich verstehe nicht ganz dein Vorgehen:
Du hast die Dateien (49_TeslaCar.pm, 49_TeslaConnection.pm) im Editor geöffnet und mit welchen Inhalten aus Github überschrieben?
Und wie hast du diese Dateien dann in Fhem bekommen?
Verzeiht mir, dass ich hier so schwer von Begriff bin.
Zitat von: Florian_ad am 07 April 2021, 08:41:58
Ich verstehe nicht ganz dein Vorgehen:
Du hast die Dateien (49_TeslaCar.pm, 49_TeslaConnection.pm) im Editor geöffnet und mit welchen Inhalten aus Github überschrieben?
Und wie hast du diese Dateien dann in Fhem bekommen?
Verzeiht mir, dass ich hier so schwer von Begriff bin.
okay hab das mittlerweile hinbekommen, sodass ich den Token als Attribut eingeben kann.
Nun bekomme ich folgende Fehlermeldung:
lastError
Endpoint deprecated: Please update your App.
kann mir da jemand weiterhelfen?
ach ja und zum token gehört "qts-" dazu nicht wahr?
Zitat von: Florian_ad am 07 April 2021, 14:54:14
okay hab das mittlerweile hinbekommen, sodass ich den Token als Attribut eingeben kann.
Nun bekomme ich folgende Fehlermeldung:
lastError
Endpoint deprecated: Please update your App.
kann mir da jemand weiterhelfen?
ach ja und zum token gehört "qts-" dazu nicht wahr?
Genau vor dem Token muss "qts-" stehen. Danach kannst Du auf der Verbindung "teslaconn set login" aufrufen. Der STATE sollte dann auf "Connected" gehen
Zitat von: herman am 07 April 2021, 15:42:59
Genau vor dem Token muss "qts-" stehen. Danach kannst Du auf der Verbindung "teslaconn set login" aufrufen. Der STATE sollte dann auf "Connected" gehen
Okay ich habe...
... die update-dateien im Editor geöffnet und über Edit files -> myUtilsTemplate.pm eingefügt und einen restart gemacht
... das Modul TeslaConnection definiert
... bei Teslafi den Token erzeugt und als Attribut eingefügt
... den Befehl "set teslaconn login <TeslaMail> <Passwort>" gegben
Ergebnis immer noch:
Error
Endpoint deprecated: Please update your App.
Was mache ich falsch?
Zitat von: Florian_ad am 08 April 2021, 10:49:15
Okay ich habe...
... die update-dateien im Editor geöffnet und über Edit files -> myUtilsTemplate.pm eingefügt und einen restart gemacht
... das Modul TeslaConnection definiert
... bei Teslafi den Token erzeugt und als Attribut eingefügt
... den Befehl "set teslaconn login <TeslaMail> <Passwort>" gegben
Ergebnis immer noch:
Error
Endpoint deprecated: Please update your App.
Was mache ich falsch?
Starte mal bitte fhem neu. Darüber hinaus benötigt man bei der angepassten Variante mit dem Token bei der connection keine Zugangsdaten bei. Bei mir genügte "set tesla login". Es könnte sein, dass noch das alte Modul geladen ist. Deshalb der Neustarte von FHEM
Zitat von: herman am 08 April 2021, 12:23:40
Starte mal bitte fhem neu. Darüber hinaus benötigt man bei der angepassten Variante mit dem Token bei der connection keine Zugangsdaten bei. Bei mir genügte "set tesla login". Es könnte sein, dass noch das alte Modul geladen ist. Deshalb der Neustarte von FHEM
Okay wenn ich shutdown restart mache weiß fhem nichts mehr vom geuploadeten modul, sodass ich erneut updaten muss.
set teslaconn login liefert dann auch den oben genannten Fehler
übrigens: reload TeslaConnection updated das Modul ebenso so wie ich das sehe (ganz ohne den "Dateitransport" aus Github)
Zitat von: Florian_ad am 08 April 2021, 13:54:20
Okay wenn ich shutdown restart mache weiß fhem nichts mehr vom geuploadeten modul, sodass ich erneut updaten muss.
set teslaconn login liefert dann auch den oben genannten Fehler
übrigens: reload TeslaConnection updated das Modul ebenso so wie ich das sehe (ganz ohne den "Dateitransport" aus Github)
Ich habe die Dateien direkt über die SSH Konsole auf meinem raspi mit dem Texteditor nano bearbeitet. Der Dateitransport von Github kennt ja vermutlich nur den Link zum "Originalen" Github. Somit hast Du die Änderungen vermutlich wieder mit dem Original überschrieben.
So würde ich vorgehen:
- via SSH Konsole anmelden (mit einem user der Rechte hat die Dateien zu bearbeiten
- in das FHEM Verzeichnis wechseln (bei mir:
cd /opt/fhem/FHEM
- die beiden Dateien zur Sicherung weg verschieben (Pfad für backup anpassen)
mv 49_TeslaCar.pm /opt/backup
mv 49_TeslaConnection.pm /opt/backup
- Dann die Dateien jeweils mit nano leer neu erstellen
nano 49_TeslaCar.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm)
- Inhalt in die Datei kopieren (Ich verwende putty - da geht das in Verbindung mit nana mit Rechtsklick)
- Speichern "Strg + O" und mit Enter bestätigen und Beenden "Strg + X"
- Dann das ganze für die nächste Datei wiederholen
49_TeslaConnection.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm)
- dann FHEM neustarten
Nach dem Neustart sollte dieser Teil der Anleitung funktionieren:
Paste Token "qts-*******" in fhem attr.
set teslaconn Login
set TeslaCar init
Okay erstmal vielen Dank für die ausführliche Antwort.
Leider bekomme ich immernoch den selben Fehler.
hier mal das Log dazu:
2021.04.09 10:19:23 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/49_TeslaConnection.pm line 40.
2021.04.09 10:20:20 2: teslaconn AuthTokenResponse {"response":null,"error":"Endpoint deprecated: Please update your App.","error_description":""}
Ich versteh einfach nicht an was es liegt!
Wenn der Token mit dem PHP Skript erzeugt wurde, funktioniert das nicht mehr.
Zitat von: Elektrolurch am 09 April 2021, 16:39:22
Wenn der Token mit dem PHP Skript erzeugt wurde, funktioniert das nicht mehr.
Ich habe meinen Token mit Teslafi erzeugt. Was ist eigentlich der beste Weg um diesen zu erneuern bzw. verlängern?
Ich habe meinen Token auch über Testlafi erzeugt
Hallo,
so wie das aussieht, geht die neuste Version des php-Skriptes zur Generierung des AccessTokens wieder. Ich füge es mal hier an.
Allerdings wurde im Object "teslaconn" das Ausstellungs- und Ablaufdatum nicht aktualisiert, es steht nur als long int in der vom php-Skript generierten Daten.
Ich habe den generierten Token in das Attribut kopiert, ein "set teslaconn login" ausgeführt und dann ein "set Auto init" und schon ging es wieder.
Weiß jemand, wie man mit dem "refresh_token" verfährt?
Elektrolurch
Hallo zusammen,
mit dem neuen php Script habe ich auch nun einen neuen Token generieren können.
set teslaconn login geht. Vorher accesstoken noch als Attribut gesetzt.
Status connected.
Aber set set 5YJ3E7EBXXX7XXXXX init erzeugt:
2021.04.15 20:30:19 4: 5YJ3E7EBXXXXXX request: https://owner-api.teslamotors.com/api/1/vehicles
2021.04.15 20:30:19 4: 5YJ3E7EBXXXXXXX: no token to be refreshed
2021.04.15 20:30:20 4: 5YJ3E7EBXXXXXXX response:
Was stimmt da nun wieder nicht?
Andi
Bei mir lautet die Meldung nach einem Neustart etwas anders: Can not refreshRefreshToken...
Folgendes hat dann geholfen:
set teslaconn logout
set teslaconn login username passwort
set Auto init
Und dann war der Stromer wieder korrekt online.
Muss ich allerdings nun nach jedem fhem-Neustart machen.
Leider hat mir noch niemand die Frage beantwortet, was ich mit dem zweiten generierten Token "RefeshToken" aus dem php-Skript machen muss....
Elektrolurch
Ich habe immer noch das Problem, dass das Auto häufig nicht einschläft. Loge ich die teslaconnection aus, ist das Auto innerhalb von 10 bis 15 Minuten eingeschlafen.
Das sind meine Einstellungen:
pollingTimer 600
updateTimer 1800
Habt ihr auch das Problem? Welche Werte habt ihr gesetzt?
pollingTimer 60
positionAddress Adresse
room Tesla
timestamp-on-change-reading .*
trace ein
traceFile %L/$NAME-trace-%Y-%m-%d.txt
updateTimer 1800
Schläft regulär ein, ich habe allerdings das Modul erweitert und setze den pollingTimer, wenn das Auto eine längere Zeit nicht mehr in Bewegung ist und sich niemand mehr im Auto befindet.
Elektrolurch
Bei mir schläft M3 regelmäßig sowohl angestöpselt oder auch so mit den nie geänderten Werten polling 60 und uodate 1250. Habe keinerlei andere Logger oder Zugriffsapps am Laufen.
Zitat von: Elektrolurch am 19 April 2021, 11:44:40
Schläft regulär ein, ich habe allerdings das Modul erweitert und setze den pollingTimer, wenn das Auto eine längere Zeit nicht mehr in Bewegung ist und sich niemand mehr im Auto befindet.
Elektrolurch
Viellicht sollte ich das auch machen. Wenn ich den Pollingtime hochsetze auf 1200 schläft das Auto ein. Ansonsten definitiv gar nicht mehr. Ich habe alle meine Änderungen (User readings etc.) wieder rückgängig gemacht und auch den raspi komplett neu gestartet. Hat alles nichts gebracht.
Was hast Du gemacht um den PollingTimer anzupassen?
Mal so ne blöde Frage zwischendurch, weil ich seit dem 2.2. nun auf einen schlafenden Tesla in FHEM schaue und es irgendwie nicht hin bekomme.
Irgendwie bin ich auch nicht bereit einer fremden Internetseite meine Tesla Zugangsdaten zu geben, um mir einen Auth-Key zu erstellen. Das Modul-Update wird von FHEM auch abgebrochen, weil die Dateien eine falsche Größe haben sollen. Es ist auch ziemlich schwierig durch die wechselnden Forum-Kommentare zu steigen.
Gibt es irgendwo eine (aktualisierte) Anleitung, wo Schritt für Schritt beschrieben steht, wie ich mit FHEM wieder den Batteriestand eines Teslas anzeigen lassen kann?
Zitat von: gotmoon am 16 Mai 2021, 15:39:29
Mal so ne blöde Frage zwischendurch, weil ich seit dem 2.2. nun auf einen schlafenden Tesla in FHEM schaue und es irgendwie nicht hin bekomme.
Irgendwie bin ich auch nicht bereit einer fremden Internetseite meine Tesla Zugangsdaten zu geben, um mir einen Auth-Key zu erstellen. Das Modul-Update wird von FHEM auch abgebrochen, weil die Dateien eine falsche Größe haben sollen. Es ist auch ziemlich schwierig durch die wechselnden Forum-Kommentare zu steigen.
Gibt es irgendwo eine (aktualisierte) Anleitung, wo Schritt für Schritt beschrieben steht, wie ich mit FHEM wieder den Batteriestand eines Teslas anzeigen lassen kann?
Geht mir ganz genauso, eine aktualisierte Anleitung wäre der Hammer!
Jetzt ist mein Token wieder abgelaufen. Das php-Skript funktioniert auch nicht mehr.
Die letzte Meldung bzgl. des Skripts ist so von Mitte Mai. Sie besagte, dass Tesla für die Token-Generierung mehr als ein Cookie überträgt und es gab, so weit ich den Änderungsvorschlag verstehe, auch eine Änderung die bei mehreren Cookies den angeblich passenden auswählt, den man dann in dem nächsten Schritt für die Tokengenerierung wieder an Tesla senden muss.
Leider geht bei mir das php-Skript trotzdem nicht mehr...
Kennt jemand noch eine funktionierende Lösung für den Token ohne einen Drittanbieter?
Elektrolurch
Leider nicht. Mein Modul ist nun auch schon eine Weile tot. Sehr schade :'(
Meine Lösung war/ist Teslafi.
- Account erstellen.
- Token generieren.
- Account löschen.
Bei Bedarf wiederholen.
LG
Ggf interessant: LutzB aus dem OpenWB Forum hat hierfür eine (ohne tiefer eingestiegen zu sein -> Anwendersicht) praktikable Lösung entwickelt. Bei der Anlage des Objekts wird das Captcha entsprechend an den Benutzer weitergegeben.
https://openwb.de/forum/viewtopic.php?p=35795#p35795
Vielleicht kann es ja jmd inspirieren.
Hallo Liste,
jetzt habe ich mal das php - Skript nach perl übertragen. Bis zu den Cookies (s.o.) bin ich dann auch gekommen. Dann kommt beim Aufruf der Seite, an die u.a. Benutzername / Kennwort überttragen wird und einen Code zurückliefern soll, die Fehlermeldung: Access denied.
Wenn ich mir die return Seite ansehe, ist da nun ein Capcha drauf, was natürlich nur ein "human" ausfüllen kann. Damit ist das php - Skript erst einmal tot. In dem Forum zu dem Skript ist mann auch zum gleichen Ergebnis gekommen, was ich erst leider gestern gesehen habe.
Allerdings habe ich noch eine andere Lösung gefunden:
Auf der Teslafi - Seite unter "registrieren" findet man verschiedene Hinweise zur Generierung des Tokens, u.a. ja auch das php - Skript.
Dort ist allerdings auch die IOS - App "TeslaToken" aufgeführt.
Der Programmierer hat wohl sogar den Code veröffentlicht und sagt, dass die credentials nur auf dem iPhone gespeichert werden. Die App kostet 1,09 €.
Ich habe sie gestern ausgeführt und mal die DNS - Zugriffe protokolliert.
Da sind nur Zugriffe auf die Tesla-Seite vorhanden. Natürlich kann man nicht 100 $ ausschliessen, dass die App doch noch woanders hin "telefoniert", aber das gleiche gilt ja auch für die Teslafi - Seite.
Der durch die App generierte Token funktioniert.
Es gibt auch einen Refresh-Token, wie ich diesen dann aber anwenden muss, ist mir noch nicht klar.
Elektrolurch
Zitat von: herman am 08 April 2021, 21:21:04
Ich habe die Dateien direkt über die SSH Konsole auf meinem raspi mit dem Texteditor nano bearbeitet. Der Dateitransport von Github kennt ja vermutlich nur den Link zum "Originalen" Github. Somit hast Du die Änderungen vermutlich wieder mit dem Original überschrieben.
So würde ich vorgehen:
- via SSH Konsole anmelden (mit einem user der Rechte hat die Dateien zu bearbeiten
- in das FHEM Verzeichnis wechseln (bei mir: cd /opt/fhem/FHEM
- die beiden Dateien zur Sicherung weg verschieben (Pfad für backup anpassen)
mv 49_TeslaCar.pm /opt/backup
mv 49_TeslaConnection.pm /opt/backup
- Dann die Dateien jeweils mit nano leer neu erstellen
nano 49_TeslaCar.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm)
- Inhalt in die Datei kopieren (Ich verwende putty - da geht das in Verbindung mit nana mit Rechtsklick)
- Speichern "Strg + O" und mit Enter bestätigen und Beenden "Strg + X"
- Dann das ganze für die nächste Datei wiederholen
49_TeslaConnection.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm)
- dann FHEM neustarten
Nach dem Neustart sollte dieser Teil der Anleitung funktionieren:
Paste Token "qts-*******" in fhem attr.
set teslaconn Login
set TeslaCar init
Hi, ich habe mich an diese Anleitung gehalten und scheitere beim Anlegen des Tokens.
Wenn ich
attr teslaconn AccessToken qts-********
absetze, sagt fhem:
Unknown attribute AccessToken
:o
Was mache ich falsch?
Zitat von: aski71 am 09 Juni 2021, 17:40:35
Hi, ich habe mich an diese Anleitung gehalten und scheitere beim Anlegen des Tokens.
Wenn ich
attr teslaconn AccessToken qts-********
absetze, sagt fhem:
Unknown attribute AccessToken
:o
Was mache ich falsch?
Die Meldung deutet darauf hin, dass das nicht die modifizierten Dateien sind. Hast Du FHEM danach neu gestartet? Am besten sicherstellen, dass die Dateien getauscht wurden und nach dem Tausch FHEM neu starten
Hallo alle zusammen,
ich habe eine einfache und praktikable Möglichkeit gefunden.
Unter ios gibt es die App
AuthAppForTesla. Sie ist gratis und funktioniert bestens.
- App downloaden
- Anmelden
- Token kopieren und bei Bedarf erneuern
Lg
T
So, nachdem nun Nero seit ein paar Tagen keine Daten mehr gesendet hat, habe ich versucht "RefreshToken" zu machen und prompt gibt es einen "Refresh Error" zurück. Natürlich geht jetzt gar nichts mehr, habe auch keinen Überblick mehr was zu tun ist, da das Modul die letzten 1,5a problemlos gelaufen ist...
Zitat von: TechnoTron am 10 August 2021, 09:33:38
Unter ios gibt es die App AuthAppForTesla. Sie ist gratis und funktioniert bestens.
Dieser ganze Apple-Mist ist natürlich mal wieder völlig unbrauchbar, da:
- keine Version für Android verfügbar
- keine VM für iOS verfügbar
- auf dem alten iPad, das hier noch rumliegt läuft es nicht (benötigt iOS >=14.0)
- ich werde nicht losziehen wegen dem Mist und mir für >1kEUR ein Telefon kaufen
>:(
Stattdessen gibt es für Android die App
Tesla Tokens, die scheinbar auch erstmal ihren Dienst tut.
Dann noch den ganzen Code updaten:
:~# cd /opt/fhem/FHEM
:/opt/fhem/FHEM# mv 49_TeslaConnection.pm 49_TeslaConnection.pm.bak
:/opt/fhem/FHEM# mv 49_TeslaCar.pm 49_TeslaCar.pm.bak
:/opt/fhem/FHEM# wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
:/opt/fhem/FHEM# wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
Danach shutdown restart in FHEM und den Token bekannt machen: attr teslaconn AccessToken qts-********
Nach Login sagt er auch connected, aber bei set 5YJSA7E21GFxxxxxx init gibt es noch einen Fehler:
Failed to connect to TeslaCar API, see log for details
Also attr 5YJSA7E21GFxxxxxx verbose 5 und dann erscheint im log folgendes:
2021.09.08 09:05:19 2: set command: init
2021.09.08 09:05:19 4: 5YJSA7E21GFxxxxxx request: https://owner-api.teslamotors.com/api/1/vehicles
2021.09.08 09:05:19 4: 5YJSA7E21GFxxxxxx: no token to be refreshed
2021.09.08 09:05:21 4: 5YJSA7E21GFxxxxxx response:
Und beim Versuch des ScanCars ist FHEM dann komplett gecrasht:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/49_TeslaConnection.pm line 319.
Tja, das ist irgendwie alles wenig hilfreich... Daher geht es weiterhin erstmal nicht mehr. :(
OK, Fehler gefunden. der neue AccessToken beginnt nicht mehr mit qts-*** , sondern mit eu-*** . Jetzt gibt es (endlich) auch wieder Daten.
Hallo zusammen,
ich bin hier Neuling zu teslaconn und habe
1. mir die neuesten 49_TeslaConnection.pm und 49_TeslaCar.pm geholt
2. define teslaconn TeslaConnection
attr teslaconn room Auto
attr teslaconn AccessToken eu-xxxxxxxx
3. testlaconn gibt mir als Status "Login necessary"
4. ich mache ein set teslaconn xxx@xxxx.de xxxxxxx
5. ERFOLG: testlaconn gibt mir als Status "Connected"
ABER: sobald ich ein "set teslaconn scanCars" mache stürzt FHEM komplett ab.
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/49_TeslaConnection.pm line 319.
ein vorheriges "set teslaconn scanDevices" bring auch nichts.....
ein vorherigeds "define TeslaM3 TeslaCar teslaconn LRW3xxxxxxxxxxx" bringt auch nicht....
WAS mache ich denn falsch mit dem Modul?
Ich habe folgende Schritte erfolgreich durchgeführt:
FHEM:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
(kann man möglicherweise überspringen)
Kommandozeile:
cd /opt/fhem/FHEM
rm 49_TeslaConnection.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
rm 49_TeslaCar.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
FHEM:
shutdown restart
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
FHEM:
defmod MeinModel3 TeslaConnection <API ACCESS TOKEN von oben> (geht möglicherweise auch ohne den API Key, müsste dann in der Doku in eckige Klammern)
attr MeinModel3 AccessToken qts-..... << den API Access Token von oben hier eintragen
attr MeinModel3 room tesla
set MeinModel3 login <teslabenutzername> <teslapasswort>
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
daraufhin legt FHEM ein device an, welches meine FIN als Namen hat.
Kurz warten, dann erscheinen auch die Readings.
Hoffe das hilft, wenn ich hier feedback bekomme, stell ichs auch gern ins Wiki rein...
Grüße,
Stephan
PS: grad gesehen, oben war die Frage nach dem Batteriestand:
Device <VIN>, Reading battery_level (vermutlich prozent) battery_range (vermutlich km)
Leider aktualisiert sich mein Tesla nicht automatisch, ich muss das immer manuell antriggern.
Jemand eine Idee, wie ich das automatisieren kann?
Sonst muss ich ein DOIF setzen, was automatisch alle x Sekunden einen requestSettings durchführt...
Grüße,
Stephan
Zitat von: abc2006 am 28 September 2021, 13:03:28
Ich habe folgende Schritte erfolgreich durchgeführt:
FHEM:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
(kann man möglicherweise überspringen)
Kommandozeile:
cd /opt/fhem/FHEM
rm 49_TeslaConnection.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
rm 49_TeslaCar.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
FHEM:
shutdown restart
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
FHEM:
defmod MeinModel3 TeslaConnection <API ACCESS TOKEN von oben> (geht möglicherweise auch ohne den API Key, müsste dann in der Doku in eckige Klammern)
attr MeinModel3 AccessToken qts-..... << den API Access Token von oben hier eintragen
attr MeinModel3 room tesla
set MeinModel3 login <teslabenutzername> <teslapasswort>
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
daraufhin legt FHEM ein device an, welches meine FIN als Namen hat.
Kurz warten, dann erscheinen auch die Readings.
Hoffe das hilft, wenn ich hier feedback bekomme, stell ichs auch gern ins Wiki rein...
Grüße,
Stephan
PS: grad gesehen, oben war die Frage nach dem Batteriestand:
Device <VIN>, Reading battery_level (vermutlich prozent) battery_range (vermutlich km)
Hallo.
Frage zu den readings bzgl. Ladudestatus.
Bei mir zeigt die Anzahl der Phasen, trotz 11kW Ladung, nur 2 an.
kann doch nicht stimmen, oder?
Zitat von: satprofi am 11 Oktober 2021, 17:33:28
Hallo.
Frage zu den readings bzgl. Ladudestatus.
Bei mir zeigt die Anzahl der Phasen, trotz 11kW Ladung, nur 2 an.
kann doch nicht stimmen, oder?
Vermutlich eher nicht. Soweit ich das auf dem Schirm habe, gibts kein Auto, was mit 2 Phasen lädt - entweder 1 oder 3.
evtl zählt da jemand falsch (0-1-2)
Aber da gibts noch ein paar mehr readings, die nicht so ganz plausibel sind... ganz zu schweigen vom dauernden logout.
Hatte noch keine Zeit, da mal rein zu schauen, muss jetzt erstmal ein Modul für die Wallbox bauen xD
Grüße,
Stephan
@swhome hat auf Seite 2 folgendes für eine GoogleMaps-Karte beschrieben:
define teslamap weblink htmlCode {'<div style="width: 400; overflow: hidden; height: 300px;"><iframe src="https://www.google.com/maps/embed/v1/place?key=XXXXXXXXX&q='.ReadingsVal('XXXXXXX','position','').' " width="480" height="480" frameborder="0" style="pointer-events:none; border:0; margin-top: -100px; margin-left: -30px;"></iframe></div>'}
Leider bekomme ich nur Fehlermeldungen
ZitatUnknown command overflow:, try help.
Unknown command height:, try help.
Unknown command "><iframe, try help.
Unknown command border:0, try help.
Unknown command margin-top:, try help.
Unknown command margin-left:, try help.
Unknown command "></iframe></div>'}, try help.
Wenn ich es mit iframes versuche, klappt die dynamische Zuweisung der Position nicht, da er ".ReadingsVal...." als Text interpretiert.
define TeslaKarte weblink iframe "{'https://www.google.com/maps/embed/v1/place?key=XXXXXXX&q='.ReadingsVal('XXXXXXXXXXX','position','')}"
Wie bekomme ich denn meine Position für meinen Tesla angezeigt?
Hallo Stephan abc2006,
hat super funktioniert. Ist sicher reif für's Wiki. Mein Token beginnt mit "eu-". Zudem hat scancars bei mir FHEM zum Absturz gebracht. Beim 2ten Versuch hat es geklappt.
Vielen Dank und Gruß
Bernd
Zitat von: abc2006 am 28 September 2021, 13:03:28
FHEM:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
(kann man möglicherweise überspringen)
Kommandozeile:
cd /opt/fhem/FHEM
rm 49_TeslaConnection.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
rm 49_TeslaCar.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
FHEM:
shutdown restart
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
FHEM:
defmod MeinModel3 TeslaConnection <API ACCESS TOKEN von oben> (geht möglicherweise auch ohne den API Key, müsste dann in der Doku in eckige Klammern)
attr MeinModel3 AccessToken qts-..... << den API Access Token von oben hier eintragen
attr MeinModel3 room tesla
set MeinModel3 login <teslabenutzername> <teslapasswort>
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
daraufhin legt FHEM ein device an, welches meine FIN als Namen hat.
Kurz warten, dann erscheinen auch die Readings.
Hallo zusammen,
ich habe es mal wieder nach Monaten versucht, meinen Tesla zu verbinden. Alles wie oben durchgeführt.
Login funktioniert, aber teslaconn scancars liefert:
2021.10.28 11:33:43 4: teslaconn request: https://owner-api.teslamotors.com/api/1/vehicles
2021.10.28 11:33:43 4: teslaconn: no token to be refreshed
2021.10.28 11:33:43 4: teslaconn response: {"response":null,"error":"not found","error_description":""}
Ich habe das Model3 noch als Device in fhem. Muss ich das vorher löschen oder wird das aktualisiert?
Kleines Update zu meinem vorherigen Post.
Wenn ich das vor Monaten funktionierende Model 3 Device das Kommando "set init" starte, kommt: Specified car with VIN 5XXXXXXXXXXX not found.
Teslaconn sagt connected. Mit meinem Handy kann ich das Auto steuern. Ich bin nicht der Besitzer, sondern nur der Fahrer (Firmenauto).
Logge ich mich mit meinem Account bei Tesla.com ein, sehe ich kein Model 3. Das ganze hat vor Monaten super funktioniert und ich hatte alle Daten in Fhem.
Muss ich mit meinem Tesla Account bei Tesla das Auto sehen?
Zitat von: abc2006 am 08 Oktober 2021, 12:34:11
Leider aktualisiert sich mein Tesla nicht automatisch, ich muss das immer manuell antriggern.
Jemand eine Idee, wie ich das automatisieren kann?
Sonst muss ich ein DOIF setzen, was automatisch alle x Sekunden einen requestSettings durchführt...
Bist du da irgendwie weitergekommen? Habe dasselbe Problem.
Zitat von: herman am 08 April 2021, 21:21:04
Ich habe die Dateien direkt über die SSH Konsole auf meinem raspi mit dem Texteditor nano bearbeitet. Der Dateitransport von Github kennt ja vermutlich nur den Link zum "Originalen" Github. Somit hast Du die Änderungen vermutlich wieder mit dem Original überschrieben.
So würde ich vorgehen:
- via SSH Konsole anmelden (mit einem user der Rechte hat die Dateien zu bearbeiten
- in das FHEM Verzeichnis wechseln (bei mir: cd /opt/fhem/FHEM
- die beiden Dateien zur Sicherung weg verschieben (Pfad für backup anpassen)
mv 49_TeslaCar.pm /opt/backup
mv 49_TeslaConnection.pm /opt/backup
- Dann die Dateien jeweils mit nano leer neu erstellen
nano 49_TeslaCar.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaCar.pm)
- Inhalt in die Datei kopieren (Ich verwende putty - da geht das in Verbindung mit nana mit Rechtsklick)
- Speichern "Strg + O" und mit Enter bestätigen und Beenden "Strg + X"
- Dann das ganze für die nächste Datei wiederholen
49_TeslaConnection.pm
- In Github die Datei öffnen und den Inhalt rauskopieren https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm (https://github.com/BAngel87/FHEM-Tesla/blob/master/FHEM/49_TeslaConnection.pm)
- dann FHEM neustarten
(...)
Statt den Schritten leere Datei erzeugen und Inhalt aus dem Git kopieren und einfügen kann man auch gleich ein
wget https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm
wget https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm
machen.
Ggf. mit
sudo -u fhem
davor.
Jetzt geht gar nichts mehr.
Nach 8 Stunden kann man wieder einen neuen Token in Fhem importieren.
Hat das noch Jemand?
Lg
Zitat von: speedAmaster am 01 November 2021, 23:56:18
Bist du da irgendwie weitergekommen?
Nein,
habe jetzt ein DOIF. Hat gut funktioniert, bis neulich ein Update (vom Tesla?) kam. Seitdem bekomm ich irgendwie nicht mehr zuverlässig die Werte abgerufen.. muss mal suchen, woran das liegen könnte...
hallo.
seit letztem teslamate uodate empfängt fhem nichts mehr. seir 14.11. stillstand.
muss man etwas aktualusieren?
Ich habe meinen Access-Token aktualisiert. Seitdem läuft es wieder einigermaßen
Zitat von: satprofi am 17 November 2021, 18:01:07
hallo.
seit letztem teslamate uodate empfängt fhem nichts mehr. seir 14.11. stillstand.
muss man etwas aktualusieren?
gelöst. es wurde neue device angelegt, mit autocreate. wsrum auch immer
Hallo Forum und Spezialisten
kann ich mich hier mal mit anhängen?
Gibt es irgend wo eine "aktuelle Quelle" wie man jetzt ganz neu zu dem richtigen Ablauf für das Einrichten der Verbindung zum Tesla Model Y (was ja hoffentlich die gleiche Sprache wie das Model 3 spricht) bekommt?
Es wäre schön wenn mich da jemand in die richtige Spur bringen könnte.
Schöne E- Grüße
NewRasPi
Hallo Zusammen,
ich könnte auch etwas Hilfe gebrauchen...
Teslaconnection ist eingerichtet und Verbunden.
Der AccessToken ist eingetragen.
ScanCars findet leider mein Auto nicht. Manuelle Einrichtung über die FIN habe ich auch schon probiert, aber ich bekomme keine Verbindung zum Wagen.
Verbose auf 5 zeigt folgende Eintrage bei der Fahrzeugsuche:
2021.11.28 20:12:11 4: MeinModel3 request: https://owner-api.teslamotors.com/api/1/vehicles
2021.11.28 20:12:11 4: MeinModel3: no token to be refreshed
2021.11.28 20:12:12 4: MeinModel3 response: {"error":"unsupported SSO app"}
Kann mit Jemand bitte helfen?
Viele Grüße
Stefan
Erledigt, ModelY ist verbunden.
@stebo1970
könntest Du bitte kurz schreiben nach welcher Anleitung Du es geschafft hast?
im Netz war ein Blog vom November 2019
Seit dem hat sich bestimmt einiges verändert.
Schöne Grüße und vielen Dank
NewRasPi
Hallo,
ich habe es nach Anleitung von ABC2006 gemacht.
Wichtig ist, den Accesstoken zu nehmen und nicht den Refreshtoken (so wie ich!). Vor dem Token kommt auch kein eu-... davor, einfach so aus der App kopieren und einfügen.
Jetzt konfiguriere ich eben einen Opple Aqara Zigbee Schalter und starte damit dann die Klimaanlage 10 Minuten vor Abfahrt. Ausserdem kann man damit den Ladeanschluss entriegeln, was ich sinnvoll finde, denn der Tesla entriegelt den Anschluss leider nicht mit öffnen des Fahrzeuges.
Wenn ich dir helfen kann, dann melde dich.
Gruss
Stefan
Zitat von: stebo1970 am 29 November 2021, 09:35:20
Hallo,
ich habe es nach Anleitung von ABC2006 gemacht.
Wichtig ist, den Accesstoken zu nehmen und nicht den Refreshtoken (so wie ich!). Vor dem Token kommt auch kein eu-... davor, einfach so aus der App kopieren und einfügen.
Jetzt konfiguriere ich eben einen Opple Aqara Zigbee Schalter und starte damit dann die Klimaanlage 10 Minuten vor Abfahrt. Ausserdem kann man damit den Ladeanschluss entriegeln, was ich sinnvoll finde, denn der Tesla entriegelt den Anschluss leider nicht mit öffnen des Fahrzeuges.
Wenn ich dir helfen kann, dann melde dich.
Gruss
Stefan
Hallo stebo1970
vielen Dank für Dein Angebot der Hilfe.
Bei mir muss was grundsätzliches falsch laufen.
Eine Anleitung von ABC2006 hat die Suchfunktion (auch Tante Google) nichts brauchbares bei mir gezeigt.
Bei der define Eingabe: "define teslaconn TeslaConnection"
kommt schon:
"Unknown module TeslaConnection"
Wer kann mir da den Weg mitteilen?
Der hier: "https://www.meintechblog.de/2019/11/tesla-model-3-in-fhem-einbinden-praktische-szenarien-fuer-den-alltag/"
endet mit dem "Unknown module TeslaConnection"
Schöne Grüße
NewRasPi
Der hier: "https://www.meintechblog.de/2019/11/tesla-model-3-in-fhem-einbinden-praktische-szenarien-fuer-den-alltag/" funktionierte bei mir auch nicht.
geh mal so vor: (Kopiert vom User ABC)
Ich habe folgende Schritte erfolgreich durchgeführt:
FHEM:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
(kann man möglicherweise überspringen)
Kommandozeile (nicht FHEM!):
cd /opt/fhem/FHEM
rm 49_TeslaConnection.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
rm 49_TeslaCar.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
FHEM:
shutdown restart
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
FHEM:
defmod MeinModel3 TeslaConnection <API ACCESS TOKEN von oben> (geht möglicherweise auch ohne den API Key, müsste dann in der Doku in eckige Klammern) => Ja, geht auch ohne Access Token!
attr MeinModel3 AccessToken qts-..... << den API Access Token von oben hier eintragen
attr MeinModel3 room tesla
set MeinModel3 login <teslabenutzername> <teslapasswort>
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
daraufhin legt FHEM ein device an, welches meine FIN als Namen hat.
Kurz warten, dann erscheinen auch die Readings.
Hoffe das hilft, wenn ich hier feedback bekomme, stell ichs auch gern ins Wiki rein...
Grüße,
Stephan
PS: grad gesehen, oben war die Frage nach dem Batteriestand:
Device <VIN>, Reading battery_level (vermutlich prozent) battery_range (vermutlich km)
Viel Erfolg
Stefan
PS:Allerdings habe ich noch das Problem, dass der Zugang nach ein paar Stunden weg ist und ich den Token erneut eintragen muss. Hat da Jemand noch eine Info für mich, was ich vergessen habe?
Hallo stebo1970
vielen vielen Dank. Damit funktioniert es.
Die Redings füllen sich dann irgend wann von allein, oder muss man noch irgend wo angeben was abgefragt werden soll?
Schöne dankbare Grüße
NewRasPi
P.S. Ich habs gefunden. Auf die Fahrzeugidentnummer die als verknüpftes Modul das TeslaCar Device aufruft klicken, dann sieht man die Readings. Klasse - DANKE
Dann sag mal ob es bei dir morgen auch noch geht. Bei mir läuft immer der AccessToken ab.
also bei mir läufts seit den letzten Problemen stabil mit dem neuen Token.
Den Token hab ich bei dem TeslaConnection-Modul eingetragen, mit dem Attribut AccessToken. Er fängt bei mir mit "eu-" an.
Und womit hast Du den Token ausgelesen?
Und sonst hast Du nichts gemacht? Keine manuelle Anpassungen? Einfach nur Attribut AccessToken?
Bei mir fängt der Token nicht mit eu- an. Fängt immer immer mit eyjhb... an.
Und der Accesstoken soll doch nur eine Gültigkeit von 8 Stunden haben. Und den Refreshtoken nimmt er nicht.
Hat Jemand eine Idee?
Ja, einfach nur Attribut Access-Token. Übrigens: Ich hab die Anleitung geschrieben, weil es genau so bei mir funktioniert hat. Und ich habe nicht einfach sachen weggelassen, die ich gemacht haben.
Vielleicht stell ich die bei Gelegenheit mal ins Wiki...
Ich habe diese App verwendet:
https://play.google.com/store/apps/details?id=net.leveugle.teslatokens
ZitatBei mir fängt der Token nicht mit eu- an. Fängt immer immer mit eyjhb... an.
Du hast den SSO Refresh Token. Das ist der falsche. Du brauchst den Owner Access Token.
ZitatUnd der Accesstoken soll doch nur eine Gültigkeit von 8 Stunden haben. Und den Refreshtoken nimmt er nicht.
sagt wer?
Hallo,
ja ich weiß, dass du die Anleitung geschrieben hast. Und damit habe ich ja auch zumindest eine Verbindung hinbekommen (danke!). Hatte ich auch in meinem Beitrag geschrieben, dass die von Dir ist.
Ich habe nur ein iPhone und da die App "Auth for Tesla". Die zeigt mit zwei Token an:
1. Refresh Token
2. Access Token
Bei AccessToken steht 8 Stunden gültig und da läuft auch ein Timer ab. Bei RefreshToken steht : Recommended
Ich komme irgendwie nicht weiter...
Funktioniert es denn (wenigstens 8h) wenn du den Access-Token nimmst?
Komisch, weil es ja eigentlich nicht vom Betriebssystem abhängen dürfte, wie lange Tesla den Token akzeptiert ...
Ja, 8 Stunden ging es.
aber jetzt hab ich es. Dein Hinweis, dass der Token falsch ist hat geholfen.
Ich habe jetzt auf der Website Teslafi den Token ausgelesen. Der fängt auch mit qts-... an und ist deutlich kürzer.
Alles nochmal neu eingerichtet und Verbindung ist da.
Jetzt stellt sich mir nur eine Frage:
Nun habe ich in diversen App meine Daten für den Token eingeben müssen. Kann ich jetzt mein Tesla Passwort ändern, oder funktioniert der Token dann nicht mehr?
Danke für Deine Hilfe und Grüße vom Niederrhein
Stefan
Freut mich, dass es jetzt geht. Bin gespannt, ob es dann jetzt auch länger als 8h geht.
Ob du dein Passwort ändern kannst, weiss ich ehrlich gesagt nicht - ich habe von anfang an ein starkes verwendet.
Ich würde mal die These aufstellen, dass der Token mit dem Passwort nichts zu tun hat - weiss es aber nicht.
Grüße,
stephan
Hallo Ihr echten Spezialisten
bis jetzt (seit gestern) geht die Verbindung super.
Bei der "Tesla Tokens" App habe ich auch den "Owener API Access Token" genommen. Fängt mit "eu- ...... an (ewig lange Zeichen Kombination die ich mir als Mail vom Handy an den PC zum Drag and Drop geschickt habe.)
Mein nächstes Ziel ist es jetzt auf dem TeslaCar Device als STATE (in die Titelzeile) den Ladezustand der Batterie anzuzeigen. Jetzt steht da nur das er "Online" ist.
>> userReading battery_level:.* << oder ähnlich. Diese Anzeige (für mich die wichtigste) könnte ich dann einfach in einem Floorplan anzeigen.
Nochmal vielen Dank für Eure Mühe und Zeit die Ihr in so ein geniales Modul steckt.
Vielleicht sollte man den Betreff dieses Threads um das Model Y erweitern?
Freundliche Grüße aus der Rhön
NewRasPi
Gefunden: mit "attr <VIN> stateFormat battery_level %
zeigt es in der Titelzeile den Ladestand der Batterie in Prozent an. ;-)
Aktueller Stand bei mir ist, dass die Verbindung auch heute noch funktioniert. Mein Problem scheint also geklärt.
Auch von meiner Seite vielen Dank für die Hilfe und die viele Arbeit die in das Projekt eingeflossen ist.
Mein Projekt ist nun die Verbindung mit einem Taster, damit die Ladung auf Tastendruck beim rausgehen beendet wird und der Ladeanschluss freigegeben wird. Denn das macht der Tesla beim Öffnen des Fahrzeugs ja nicht automatisch. Ausserdem noch eine 2. Tastenbelegung zum Start der Klimatisierung. Wenn das funktioniert, bin ich glücklich.
PS: Das mit dem State ist auch eine gute Idee. Eventuell lasse ich mir dann um 22:00 eine Message auf den Fernseher Beamen, falls ich vergessen habe den Stecker einzustecken.
Gruss
Stefan
Zitat von: stebo1970 am 02 Dezember 2021, 10:57:36
damit die Ladung auf Tastendruck beim rausgehen beendet wird und der Ladeanschluss freigegeben wird. Denn das macht der Tesla beim Öffnen des Fahrzeugs ja nicht automatisch.
Da kann ich nur das hier empfehlen:
https://www.evchargeking.com/en/tesla-retrofit-button-kit
oder einen Stecker direkt mit Button. Sowohl beim Anschließen als auch beim Abstecken eine große Hilfe. Die Klima startet es natürlich nicht :)
Ok, aber da muss ich an den Stecker bzw. Anschluss der Wallbox und verliere die Gewährleistung. Der Zigbee Taster kostet 13 €:
https://de.aliexpress.com/item/4000817535438.html?spm=a2g0o.productlist.0.0.5932a6b4X1ctTi&algo_pvid=fac2fe78-d96b-46f2-8d47-ae6758341f99&aem_p4p_detail=202112021009063049123509407550001383902&algo_exp_id=fac2fe78-d96b-46f2-8d47-ae6758341f99-20&pdp_ext_f=%7B%22sku_id%22%3A%2212000021839006916%22%7D
Und sollte das Gleiche hinbekommen und ich muss nichts basteln. Eventuell klebe ich den auf die Wallbox.
Verrätst du mir, wie du den Tesla steuerst, dass er den Ladestecker entriegelt?
Ist mir (noch) kein Kommando bekannt ...
Danke und Grüße,
Stephan
set "VIN" charge_port_door_open
Habe ich gerade ausprobiert und scheint zu funktionieren. Ich konnte bei verriegeltem Tesla den Stecker abziehen.
Gruss
Stefan
Hallo Stefan,
es gibt das reading "charge_port_door_open", aber einen gleichnamigen Befehl habe ich nicht gefunden.
Unknown argument ?, choose one of init requestSettings wakeUpCar startCharging stopCharging flashLights honkHorn startHvacSystem stopHvacSystem startDefrost startSentryMode stopSentryMode address display charge_limit_soc temperature
Elektrolurch
Hallo Elektrolurch,
hier ist eine Übersicht der Api Commands:
https://www.teslaapi.io/vehicles/commands
Da ist sowohl der Befehl open, als auch Close dabei:
https://owner-api.teslamotors.com
/api/1/vehicles/:id/command/charge_port_door_open
Open Charge Port
https://owner-api.teslamotors.com
/api/1/vehicles/:id/command/charge_port_door_close
Close Charge Port
Gruss
Stefan
Ok, habe ich mal ins Modul übernommen.
Hallo Forum
haben schon einige die "Befehle" getestet und Lust die funktionierenden hier im Thread einzustellen?
Es wäre dann leichter diese auch einzusetzen.
Mein erster Plan wird: Auf Tastendruck (egal ob ZigBee Taster oder GPIO-Taster) die Vorwärmung, die Sitzheizung und die Lenkradheizung zu aktivieren.
Das serienmässige Vorwärmen nach viertelstunden Zeiteinheiten aus der App ist mir zu unflexibel. Da läuft die Vorwärmung unnötig lange.
Wenn das aus dem TFF Forum stimmt, dass die Batterievorwärmung nicht mehr mit dem Vorwärmen gleich geschaltet wird, ist ein Befehl für diese Funktion
bestimmt auch noch sinnvoll. Die Rekuperation wäre mit einer "kalten Batterie" nur sehr sehr gering.
Sobald ich erste Erfolge habe schreibe ich die gerne hier rein.
Vielen Dank
NewRasPi
Zitat von: stebo1970 am 30 November 2021, 11:28:08
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
Viel Erfolg
Stefan
PS:Allerdings habe ich noch das Problem, dass der Zugang nach ein paar Stunden weg ist und ich den Token erneut eintragen muss. Hat da Jemand noch eine Info für mich, was ich vergessen habe?
meiner fängt mit eu- an, und endet am 1.1.2022 18:11 .....
muss mann dann wieder neu definieren?
Zitat von: stebo1970 am 30 November 2021, 11:28:08
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
bei mir jedesmal :-(
obwohl connected
Hallo Tesla-Gemeinde,
zwei Fragen:
1.) Funktioniert das Modul auch mit dem Model Y?
2.) Wo finde ich eine Anleitung um das Teslamodul in Betrieb zu nehmen? Weder im Wiki noch in der Commandref habe ich etwas gefunden.
Danke und viele Grüße
Gunther
Hallo @Gunther
Ja, das Funktioniert super mit dem Model Y.
Ich habe die Lösung auch von hier, ein paar Posts weiter oben übernommen.
Schöne Grüße und ein glückliches neues Jahr
Zitat von: Gunther am 31 Dezember 2021, 00:42:48
Weder im Wiki noch in der Commandref habe ich etwas gefunden.
lies mal den ganzen thread :)
Zitat von: Elektrolurch am 04 Dezember 2021, 13:43:31
Ok, habe ich mal ins Modul übernommen.
Wo findet man das denn?
Wenn ich die bisherigen Repos angucke sehe ich keine aktuellen Änderungen.
Zitat von: stebo1970 am 30 November 2021, 11:28:08
Der hier: "https://www.meintechblog.de/2019/11/tesla-model-3-in-fhem-einbinden-praktische-szenarien-fuer-den-alltag/" funktionierte bei mir auch nicht.
geh mal so vor: (Kopiert vom User ABC)
Ich habe folgende Schritte erfolgreich durchgeführt:
FHEM:
update all https://raw.githubusercontent.com/sw-home/FHEM-Tesla/master/controls_tesla.txt
(kann man möglicherweise überspringen)
Kommandozeile (nicht FHEM!):
cd /opt/fhem/FHEM
rm 49_TeslaConnection.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaConnection.pm"
rm 49_TeslaCar.pm
wget "https://raw.githubusercontent.com/BAngel87/FHEM-Tesla/master/FHEM/49_TeslaCar.pm"
FHEM:
shutdown restart
Handy (Android)
App Tesla Tokens installieren
einloggen mit Username/Passwort
Den Owner API Access Token kopieren (fängt mit qts- an)
FHEM:
defmod MeinModel3 TeslaConnection <API ACCESS TOKEN von oben> (geht möglicherweise auch ohne den API Key, müsste dann in der Doku in eckige Klammern) => Ja, geht auch ohne Access Token!
attr MeinModel3 AccessToken qts-..... << den API Access Token von oben hier eintragen
attr MeinModel3 room tesla
set MeinModel3 login <teslabenutzername> <teslapasswort>
set MeinModel3 scanCars (Beim ersten mal ist es hier abgestürzt, aber das lag evtl am fehlenden AccessToken)
daraufhin legt FHEM ein device an, welches meine FIN als Namen hat.
Kurz warten, dann erscheinen auch die Readings.
Hoffe das hilft, wenn ich hier feedback bekomme, stell ichs auch gern ins Wiki rein...
Grüße,
Stephan
PS: grad gesehen, oben war die Frage nach dem Batteriestand:
Device <VIN>, Reading battery_level (vermutlich prozent) battery_range (vermutlich km)
Viel Erfolg
Stefan
PS:Allerdings habe ich noch das Problem, dass der Zugang nach ein paar Stunden weg ist und ich den Token erneut eintragen muss. Hat da Jemand noch eine Info für mich, was ich vergessen habe?
Danke für die Anleitung.
Ich bin der Anleitung mal gefolgt. Da es kein AccessToken Attribut gibt, habe ich das über die Definition des Devices mitgegeben.
set login ... geht nicht, wenn man nicht eingeloggt war.
Also über die Kommandozeile eingegeben.
Das Modul steht auf connceted. Super!
Leider schmiert mir immer FHEM beim Scan nach meinem Model Y ab.Was kann ich tun?
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
Noch eine Frage zu dem neu erschienenen Device (Vin?)
Kann ich das umbenennen oder funktioniert das dann nicht mehr?
Zitat von: Gunther am 19 Januar 2022, 22:38:58
Noch eine Frage zu dem neu erschienenen Device (Vin?)
Kann ich das umbenennen oder funktioniert das dann nicht mehr?
Hallo Gunther
willkommen im Kreis.
Ich würde es statt mit Umbenennen lieber mit dem Allias Befehl machen. Das sollte auf jeden Fall ohne Fehler funktionieren.
Aber - was spricht für Dich gegen die FIN als Devicenamen?
Grüße Model Y Fahrer
Danke für die Aufnahme hier!
Im Grunde spricht nichts gegen die VIN.
D. h. ich kann auch den Namen meines Tesla nehmen? Seht ja darüber. Oder meinst DU einen FHEM-Alias?
Ich habe das Gefühl, dass die Befehle aus der API nicht gehen. Muss dafür noch etwas gebaut werden?
Habe das mit der Ladeklappe nicht hinbekommen.
Habe dazu
set VIN charge_port_door_open
benutzt. Klappt leider nicht.
Befehle mit "on" oder "off" ebenso.
(getestet nur vom Sofa mit Prüfung der Readings.
Zitat von: Gunther am 19 Januar 2022, 23:30:01
Danke für die Aufnahme hier!
Im Grunde spricht nichts gegen die VIN.
D. h. ich kann auch den Namen meines Tesla nehmen? Seht ja darüber. Oder meinst DU einen FHEM-Alias?
Ich habe das Gefühl, dass die Befehle aus der API nicht gehen. Muss dafür noch etwas gebaut werden?
Habe das mit der Ladeklappe nicht hinbekommen.
Habe dazu
set VIN charge_port_door_open
benutzt. Klappt leider nicht.
Befehle mit "on" oder "off" ebenso.
(getestet nur vom Sofa mit Prüfung der Readings.
Hallo Gunther
in den Readings steht bei geöffneten Ladeport Anschluss eine "1" (die Zahl 1) Vermutlich ist dann wohl die 0 für geschlossen.
charge_port_door_open 1
Ich bin bei diesen Befehlen und deren Möglichkeiten auch noch ganz am Anfang.
Grüße
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.
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
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...
Hast Du erfolgreichen Login UND AccessToken vor dem Scan erledigt?
@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...... :-(
@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.
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
Das klingt ja schon sehr vielversprechend! Danke für Deine Arbeit!
Bin gespannt.
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... :-)
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
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
Hi,
sowas habe ich schon befürchtet.
Danke!
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}) {
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}) {
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.
Danke!!!!!
httpversion => "1.1",
habe ich jetzt in der sub TeslaConnection_Request bei den Parametern für den Web-Aufruf ergänzt und es funktioniert wieder!
Woher hast Du die Info? Im Web habe ich dazu nichts gefunden....
Danke, nochmmals.
Elektrolurch
Ich habe mit Dumper (habe ich irgendwo gesehen für Debugausgaben) verwendet und mir alle möglichen Objekte ausgegeben. Dann stand das irgendwo im Log.
Schöner wäre es natürlich, wenn der HTTP-Code im Fal eines Fehlers generell irgendwo protokolliert werden würde.
Was haltet ihr davon, in Zeile 71 von TeslaConnection noch zu prüfen, ob der Accesstoken bereits gesetzt wurde, und wenn nicht, einen Fehler herauszugeben?
Das Modul meldet nämlich auch ohne den Token "connected", allerdings kann TeslaCar dann keine Verbindung herstellen.
btw: nachdem ich eingeloggt bin, ist der State weiterhin auf "login necessary", obwohl er das meiner Meinung nach nicht sein sollte (Zeile 73, $hash->{STATE} = "Connected";)
lg, stephan
edit: Es geht aber wieder, vielen Dank an Jaykoert ;)
Vielen Dank Jaykoert für die Korrekturen. Bei mir funktioniert das Modul jetzt auch wieder.
Danke Jaykoert !
Jetzt funktioniert die PV Regelung wieder ;D
Hallo,
habe in der Version:
Zitat von: Jaykoert am 05 Februar 2022, 12:10:08
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.
eine Ergänzung eingebaut, mit der man die maximale Ampere Zahl des Ladevorgangs setzen kann.
/opt/fhem/FHEM# diff -u 49_TeslaCar_ori.pm 49_TeslaCar.pm
--- 49_TeslaCar_ori.pm 2022-02-07 14:47:28.767476300 +0100
+++ 49_TeslaCar.pm 2022-02-07 14:24:18.992204681 +0100
@@ -67,7 +67,7 @@
$availableCmds = "not logged in";
}
else {
- $availableCmds = "init requestSettings wakeUpCar charge_limit_soc startCharging stopCharging flashLights honkHorn temperature unlock lock openChargePort startHvacSystem stopHvacSystem startDefrost openTrunk openFrunk";
+ $availableCmds = "init requestSettings wakeUpCar charge_limit_soc startCharging stopCharging charge_amps flashLights honkHorn temperature unlock lock openChargePort startHvacSystem stopHvacSystem startDefrost openTrunk openFrunk";
}
return "no set value specified" if (int(@a) < 2);
@@ -98,6 +98,14 @@
my $URL = "/api/1/vehicles/$carId/command/charge_stop";
$rc = TeslaConnection_postrequest($hash, $URL);
}
+ if ($command eq "charge_amps") {
+ my $min = 5;
+ my $max = ReadingsVal($hash->{NAME}, "charge_current_request_max", 16);
+ return "Need the new temperature as numeric argument between $min-$max"
+ if (int(@a) < 1 || $a[0] < $min || $a[0] > $max);
+ my $URL = "/api/1/vehicles/$carId/command/set_charging_amps";
+ $rc = TeslaConnection_postdatarequest($hash, $URL, "{\"charging_amps\": $a[0]}");
+ }
if ($command eq "startHvacSystem") {
my $URL = "/api/1/vehicles/$carId/command/auto_conditioning_start";
$rc = TeslaConnection_postrequest($hash, $URL);
@@ -149,7 +157,7 @@
}
## Request Car settings
if ($command eq "requestSettings") {
- TeslaCar_UpdateStatus($hash, 1);
+ TeslaCar_UpdateStatus($hash);
}
return $rc;
}
@@ -542,7 +550,10 @@
If the car is in state 'online' and a charger is attached, it will start charging
</li>
<li>stopCharging<br>
- If the car is in state 'online' a charging, it will stop charging
+ If the car is in state 'online' and charging, it will stop charging
+ </li>
+ <li>charge_amps<br>
+ If the car is in state 'online' and charging, set the charging amper limit
</li>
<li>startHvacSystem<br>
If the car is in state 'online', it will start the air conditioning system
Dabei habe ich eine neues Kommando "charge_amps" eingebaut, einen Schreibfehler in der Doku und einen Fehler im Aufruf der Funktion TeslaCar_UpdateStatus ausgebaut.
Für Leute mit PV Anlage bietet sich damit eine verbesserte Steuerung des Überschussladens. Im Anhang findet ihr die angepasste Datei.
Hallo zusammen,
und ich habe es dahingegen wieder ergänzt, das Request_Settings wieder immer funktioniert. (Ich starte das Logging direkt nach Fahrtbeginn über ein notify von Spotify)
@Elektrolurch, wie weit bist du denn mit dem AutoReNew des Tokens?
Mir ist gerade bei einem Shutdown Restart folgende Fehlermeldung ins auge gesprungen:
2022.03.01 11:50:14.184 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^{ <-- HERE .*}$/ at ./FHEM/49_TeslaConnection.pm line 194, <$fh> line 6608.
sowie:
2022.03.01 11:50:14.187 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/49_TeslaConnection.pm line 46, <$fh> line 6608.
2022.03.01 11:50:14.187 1: stacktrace:
2022.03.01 11:50:14.187 1: main::__ANON__ called by ./FHEM/49_TeslaConnection.pm (46)
2022.03.01 11:50:14.187 1: main::TeslaConnection_Initialize called by fhem.pl (2725)
2022.03.01 11:50:14.187 1: (eval) called by fhem.pl (2708)
2022.03.01 11:50:14.187 1: main::CommandReload called by fhem.pl (2038)
2022.03.01 11:50:14.187 1: main::LoadModule called by fhem.pl (2103)
2022.03.01 11:50:14.187 1: main::CommandDefine called by fhem.pl (1265)
2022.03.01 11:50:14.187 1: main::AnalyzeCommand called by fhem.pl (1116)
2022.03.01 11:50:14.187 1: main::AnalyzeCommandChain called by fhem.pl (1403)
2022.03.01 11:50:14.187 1: main::CommandInclude called by fhem.pl (618)
2022.03.01 11:50:14.187 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/49_TeslaConnection.pm line 46, <$fh> line 6608.
2022.03.01 11:50:14.187 1: stacktrace:
2022.03.01 11:50:14.187 1: main::__ANON__ called by ./FHEM/49_TeslaConnection.pm (46)
2022.03.01 11:50:14.187 1: main::TeslaConnection_Initialize called by fhem.pl (2725)
2022.03.01 11:50:14.187 1: (eval) called by fhem.pl (2708)
2022.03.01 11:50:14.187 1: main::CommandReload called by fhem.pl (2038)
2022.03.01 11:50:14.187 1: main::LoadModule called by fhem.pl (2103)
2022.03.01 11:50:14.187 1: main::CommandDefine called by fhem.pl (1265)
2022.03.01 11:50:14.187 1: main::AnalyzeCommand called by fhem.pl (1116)
2022.03.01 11:50:14.187 1: main::AnalyzeCommandChain called by fhem.pl (1403)
2022.03.01 11:50:14.187 1: main::CommandInclude called by fhem.pl (618)
Kann gerade leider nciht genauer suchen, habe anderweitig stress. Vielleicht kann jemand was damit anfangen ;)
lg,
stephan
Mit dem Thema Auth for Tesla auf macOS oder iOS gibts noch nix neues zum Token-Login?
Also bei einem 'reload 49_TeslaCar.pm' aus den letzten angehängten Dateien meckert FHEM bei mir rum:
Not enough arguments for main::TeslaCar_UpdateStatus at ./FHEM/49_TeslaCar.pm line 188, near "$hash)"
Not enough arguments for main::TeslaCar_UpdateStatus at ./FHEM/49_TeslaCar.pm line 253, near "$hash)"
Ratschläge?
Hallo zusammen,
ich habe gerade mal versucht so ein paar Fehler zu finden/fixen. Leider stehe ich weiterhin mit dem Modul auf Kriegsfuß und habe den halben Abend damit verbracht meine eigene Installation wieder zum Laufen zu bekommen. Ich bin mir nicht sicher wo die Probleme genau liegen, ob in der TeslaConnection oder im TeslaCar Modul. Ich hatte auch wieder mehrfach das Problem, dass die carId nicht gesetzt war.
@abc2006:
Hast du denn das Attribut AccessToken gesetzt? Ich habe bei mir Zeile 46 in der TeslaConnection mal rausgeschmissen, vielleicht hilft das.
Ansonsten habe ich auch versucht die Perl-Warnung zu entfernen, wenn ich in Zeile 194:
if( $err ) {
durch
if(defined $err) {
ersetze geht überhaupt nichts mehr. Erst dachte ich, dass if ( $err ) ähnlich JavaScript prüft, ob es truthy ist, aber ein Leerstring wäre ebenfalls false. Also habe ich das erstmal wieder gelassen.
@AriGato: Ich denke nicht, dass sich da was tut.
@TimoD: Ich habe gesehen, dass du eine neue NUpdate eingefügt hast. Kannst du kurz den Hintergrund erklären? Brauchen wir da wirklich zwei Funktionen? Muss das pollingEnable dann nicht auch in die $hash->{AttrList} mit rein? Irgendwie müsste man die 27-fache Verschachtelungstiefe mal refactoren. Schön ist das nicht. Da bei mir die Verbindung zum Auto dabei auch immer wieder kaputt geht, scheue ich meine Zeit dadrauf zu verwenden.
Gruß
Jaykoert
Hallo zusammen,
sehe ich es anhand der letzten Seiten dieses Thread richtig, dass das Modul derzeit nicht funktioniert?
Ich hatte das Modul "TeslaConnection" erfolgreich auf "Connected" stehen, hatte auch meinen AccesToken & Login eingetragen, konnte aber mittels "set MeinTeslaModul scanCars" gar nichts erreichen.
Zitat von: Dracolein am 06 März 2022, 10:43:24
sehe ich es anhand der letzten Seiten dieses Thread richtig, dass das Modul derzeit nicht funktioniert?
Also bei mir funktioniert es, auch wenn es etwas zickig ist.
Stelle bei dir mal verbose auf 5 ein und schau was sich so im Log befindet.
ich frage mich, ob es an meinem Token liegt, den ich mit der iOS App "Auth for Tesla" genertiert habe. Der beginnt mit "eu...."
edit:
nochmal alle Devices gelöscht und neu begonnen.... beim 1. scanCars = FHEM Absturz wie hier beschrieben. Beim 2. scanCars wurde das Fahrzeug gefunden. Also erstmal bin ich einen Schritt weiter.
edit2:
TeslaCar-Device wurde angelegt, state=online", attr dataRequest=data, aber Readings fehlen bisher...
Ich habe auch "Auth for Tesla" drauf, hatte aber auch das Gefühl, dass es nicht funktioniert. Mit "Tesla Token" geht es bei mir. Das Token ist bei Tesla Token auch irgendwie kürzer als bei Auth for Tesla. Mit eu anfangen ist richtig.
Zitat von: Jaykoert am 06 März 2022, 15:33:34
Ich habe auch "Auth for Tesla" drauf, hatte aber auch das Gefühl, dass es nicht funktioniert. Mit "Tesla Token" geht es bei mir. Das Token ist bei Tesla Token auch irgendwie kürzer als bei Auth for Tesla. Mit eu anfangen ist richtig.
Ist die App vertrauenswürdig?
Mit diesem Tool ( https://github.com/adriankumpf/tesla_auth ) habe ich nun einen Token generiert und selbigen in das TeslaConnection Device eingefügt. Logout --> Login --> state=connected --> scanCars -->
- Es wird ein neues TeslaCar Device angelegt
- es enthält die korrekte FIN
- es enthält den korrekten Fahrzeug-Alias
- "state=online"
... aber weiter keine Readings. :-[
Noch eine anschliessende Info: die Access-Tokens sind nun nur noch 48h gültig anstelle von 8 Wochen?
Zitat von: Dracolein am 07 März 2022, 09:37:36
Noch eine anschliessende Info: die Access-Tokens sind nun nur noch 48h gültig anstelle von 8 Wochen?
Nicht dass ich wüsste. Man muss zumindest nicht alle 48h ein neues Token eingeben.
Funktioniert das Abrufe von Readings denn jetzt? Ich hatte dir noch eine PM geschrieben.
Habe ich gesehen deine PN. Ich muss Deine Files heute abend mal bei mir einbauen und ausprobieren.
Bisher ist alles noch wie oben beschrieben, sprich alles ist "online", aber keine Readings.
Tag zusammen,
ich kriege neuerdings immer code 404. Bin ich damit alleine?
Hallo,
bei mir funktioniert es ohne Probleme.
Hast du eine der neueren Versionen hier aus dem Thread im Einsatz?
Stell mal TeslaConnection und TeslaCar auf verbose 5 und schau mal im Log nach.
Gruß
Jaykoert
Zitat von: Jaykoert am 21 März 2022, 18:49:49
Hast du eine der neueren Versionen hier aus dem Thread im Einsatz?
Jupp. Hab die Version vom 26.Februar.
Zitat von: Jaykoert am 21 März 2022, 18:49:49
Stell mal TeslaConnection und TeslaCar auf verbose 5 und schau mal im Log nach.
Da kommt dann sowas:
2022.03.22 09:02:06 5: LRWYGCEK7MCxxxxxx response: {"response":null,"error":"not found","error_description":""} and params: $VAR1 = {
'hu_port' => 443,
'conn' => undef,
'sslargs' => {},
'NAME' => '',
'hu_portSfx' => '',
'path' => '/api/1/vehicles',
'code' => '404',
'noshutdown' => 1,
'loglevel' => 4,
'hu_filecount' => 1,
'auth' => 0,
'displayurl' => 'https://owner-api.teslamotors.com/api/1/vehicles',
'timeout' => 3,
'compress' => 1,
'callback' => sub { "DUMMY" },
'protocol' => 'https',
'url' => 'https://owner-api.teslamotors.com/api/1/vehicles',
'addr' => 'https://owner-api.teslamotors.com:443',
'hash' => {...
oder sowas:
2022.03.22 09:01:06 5: LRWYGCEK7MCxxxxx response: {"response":null,"error":"not found","error_description":""} and params: $VAR1 = {
'hu_filecount' => 1,
'loglevel' => 4,
'noshutdown' => 1,
'code' => '404',
'hu_portSfx' => '',
'path' => '/api/1/vehicles',
'NAME' => '',
'sslargs' => {},
'conn' => undef,
'hu_port' => 443,
'host' => 'owner-api.teslamotors.com',
'redirects' => 0,
'header' => 'Accept: application/json
Authorization: Bearer qts-5a6...',
'httpheader' => 'HTTP/1.1 404 Not Found
x-xss-protection: 1; mode=block
x-txid: e69d6273442a2c9490df5992e8ddf72e
x-accel-redirect-region: eu
content-type: application/json; charset=utf-8
x-request-id: 38f8b9ba-360e-4737-a4dc-84025f933f85
content-length: 60
x-envoy-upstream-service-time: 160
x-envoy-upstream-cluster: owner-api
date: Tue, 22 Mar 2022 08:01:06 GMT
server: envoy
x-frame-options: DENY
x-content-type-options: nosniff
strict-transport-security: max-age=31536000; includeSubDomains
cache-control: no-cache, no-store, private, s-max-age=0',
'httpversion' => '1.1',
'buf' => '',
'hash' => {...
Interessant ist auch, dass ich mich in der App Tesla Tokens auch nicht mehr anmelden kann. Logindaten funktionieren aber in der Tesla App und auf der Webseite.
Kann es sein, dass Tesla da was geblockt hat? 2FA ist übrigens aus.
Zitat von: mnl1234 am 22 März 2022, 10:18:42
Da kommt dann sowas:
'path' => '/api/1/vehicles',
Ist das richtig, dasss der die ganze Zeit "/api/1/vehicles" anfragt?
Ja, das ist richtig. Mach doch auf der TeslaConnection mal ein set scanCars. Ich denke er legt dann ein neues TeslaCar Device an. Vielleicht ist bei dem bestehenden etwas durcheinander gekommen.
Ich habe letztens aber auch gelesen, dass Teslascope Probleme hat, weil Tesla die IDs der Fahrzeuge ändert. Vielleicht bist du da ebenfalls von betroffen. Dann würde löschen des TeslaCars und neu scannen evtl. helfen.
Zitat von: Jaykoert am 22 März 2022, 10:48:08
Ja, das ist richtig. Mach doch auf der TeslaConnection mal ein set scanCars. Ich denke er legt dann ein neues TeslaCar Device an. Vielleicht ist bei dem bestehenden etwas durcheinander gekommen.
Hmm... Nein, das Problem liegt weiter vorn.
Wenn ich ein curl absetze kommt auch keine Antwort vom Server:
curl -H "Authorization: Bearer qts-5a[...]" https://owner-api.teslamotors.com/api/1/vehicles
{"response":null,"error":"not found","error_description":""}
Laut teslaapi.io müsste das halt die Autos auflisten. Da gehts also schon schief.
Kann es sein, dass mein Token ungültig ist? Dummerweise kann ich mit der App ja aktuell keinen neuen erstellen. Gibts noch na andere QUelle, um einen zu erzeugen?
Zitat von: mnl1234 am 22 März 2022, 12:20:37
Kann es sein, dass mein Token ungültig ist? Dummerweise kann ich mit der App ja aktuell keinen neuen erstellen. Gibts noch na andere QUelle, um einen zu erzeugen?
Probier mal das Github hier. Hat bei mir geklappt mit den Tokens:
https://github.com/adriankumpf/tesla_auth
Der AccessToken über das Tool von TESLA hat nur mehr eine Gültigkeit von 8h und das Modul 49_TeslaConnection (Version Feb) kann keinen RefreshToken mehr über das API ziehen, da scheinbar jetzt ein Chapta notwendig ist. Ist das so richtig interpretiert, oder habe ich ein anderes Problem mit meiner Instanz?
Zitat von: Oliver Vallant am 31 März 2022, 17:16:11
Der AccessToken über das Tool von TESLA hat nur mehr eine Gültigkeit von 8h und das Modul 49_TeslaConnection (Version Feb) kann keinen RefreshToken mehr über das API ziehen, da scheinbar jetzt ein Chapta notwendig ist. Ist das so richtig interpretiert, oder habe ich ein anderes Problem mit meiner Instanz?
Das ist korrekt so.
Einfach den Owner Token nehmen und gut ists.
-
T
letzter RefreshToken:
2022-03-14 12:06:16 tokenExpiry Thu Apr 28 13:06:16
Zitat von: TechnoTron am 01 April 2022, 14:25:24
Das ist korrekt so.
Einfach den Owner Token nehmen und gut ists.
Danke für dein Feedback. Soweit ich gesehen habe liefern die Tesla Token Apps allesamt zwei Tokens, den AccessToken und den RefreshToken. Einen OwnerToken gibt's da nicht - meinst du mit OwnerToken den RefreshToken?
Wenn ja, wo im Modul 49_TeslaConnection ist der RefreshToken anzugeben, ein Attribut gibt es nur für den AccessToken
Wenn nein, mit welcher App kann man einen OwnerToken generieren?
LG Oliver
Hatte gestern (ebenfalls in ermangelung eines Owner-Token) den neuen Access-Token gesetzt. Jetzt habe ich die Meldung
2022.04.03 08:19:25.784 5: car status response {"error":"invalid bearer token"}
Vermutlich ist der AccessToken nach seinen 8h abgelaufen
Laut hier
https://github.com/timdorr/tesla-api/issues/548
gibts keine Owner-Token mehr ...
Nach meinem Wissenstand meine ich den OwnerToken (eu-*******). Der sollte auch nie ablaufen.
Das Problem ist, dass ich damals einige Seiten durchforstet habe um fündig zu werden. Dummerweise habe ich mir die Seite nicht notiert.
Ich werde mich die Tage kurz hinsetzen und meinen Verlauf durchsuchen. Eventuell finde ich die Seite nochmal.
Update:
Ich konnte leider in meinem Verlauf nicht mehr die Seite finden wo ich den token generieren konnte. Sry
Habe das geänderte TokenRefresh-Verfahren in den geforken Code des Jaykoert eingearbeitet und würde bitte die beiden Module nun zu testen.
Änderungen im Überblick:
49_TelsaConnection.pm
- RefrehToken mit einer Tesla Token App generieren und im Attribut "RefreshToken" einfügen.
- Habe die Stati "connected" und "Login necessary" geändert in "connected" und "disconnected".
- Entsprechend die Sets in "connect" und "disconnect". Disconnected deaktiviert nun die Verbindung zum Telsa API. Connect verwirft auch nicht automatisch den aktuellen AccessToken, sondern versucht mit dem aktuellen zu verbinden. Somit fungieren die beiden Sets als Ein-/Ausschalter.
- refreshAccessToken holt nun einen neuen AccessToken mittels angegebenden RefreshToken unanhängig ob dieser bereits abgelaufen ist. Naturgemäß wird weiterhin ein neier AccessToken geholt, bevor dieser ausläuft.
49_TelsaCar.pm
- Set init führt einen fullUpdate mit Frischdaten durch, egal in welchem Zustand das Fahrzeug ist.
Hallo Oliver,
funktioniert bei mir prima, vielen Dank für die Anpassung.
Habe in 49_TeslaCar.pm noch das Kommando charge_amps mit aufgenommen, siehe auch https://forum.fhem.de/index.php/topic,74341.msg1206557.html#msg1206557 (https://forum.fhem.de/index.php/topic,74341.msg1206557.html#msg1206557). Da meine Wallbox keine direkte Steuerung unterstützt, benötige ich das um den Ladestrom beim PV Überschussladen zu begrenzen.
Hallo Oliver, hallo mahil,
vielen Dank für eure Änderungen. Das charge_amps kann ich auch gut gebrauchen.
Ich habe beide Dateien heruntergeladen und sieht auf den ersten Blick gut aus. Ich werde berichten, wenn ich irgendwelche Auffälligkeiten feststelle.
Gruß
Jaykoert
Hallo Oliver,
verstehe ich das richtig:
1. Eigentlich wird nicht mehr zwischen "AccessToken" und "RrefreshToken" unterschieden, d.h. um den aktuellen Token zu aktualisieren, muss man diesen verwenden und erhält einen neuen zurück.
2. Daraus folgt: Läuft der Token ab, hat man Pech gehabt und muss sich anderweitig einen neuen Token für die Startsequenz besorgen. Hierzu hatte ich bislang die App "TeslaToken" verwandt, die nun aber beim Starten eine Fehlermeldung anzeigt... etwas mit ungültigem Login ?ß??? Hiermnach konnte fhem auch nicht mehr auf das Fahrzeug zugreifen. Abhilfe schaffte dann aber über FHEM ein RefreshToken auszzulösen. Mal sehen, in 6 Tagen läuft mein Token ab.
3. Warum speicherst Du den AccesToken als Attribut? Da kann ja "jeder" den Token auslesen. Wäre es nicht sicherer hierzu "getKeyValue" und "setKeyValue" zu verwenden?
Um das Setzen eines Attributes "AccersToken" für den ersten Aufruf zu vermeiden, habe ich dafür einen set - Befehl definiert.
4. In meinem Code steht für die uri ein anderes Kontrukt, als bei Dir. Hat sich die uri geändert?
Ich habe es derzeit noch blocking:
my($err,$data) = HttpUtils_BlockingGet({
url => "$hash->{api_uri}/oauth/token",
timeout => 10,
noshutdown => 1,
httpversion => "1.1",
data => {
grant_type => 'refresh_token',
client_id => $hash->{client_id},
client_secret => $hash->{client_secret},
refresh_token => $refreshToken,
}
bei Dir steht für die uri:
my $param = {
url => "$conn->{auth_uri}",
timeout => 10,
noshutdown => 1,
httpversion => "1.1",
hash => $conn,
callback => \&TeslaConnection_RefreshToken_Callback,
data => {
grant_type => 'refresh_token',
client_id => $conn->{client_id},
refresh_token => $refreshToken
}
5. Ich habe mir den Call-Back bei Dir für den Refresh-Token angesehen.
Das json, was da zurück kommt, scheint ja nur noch das Feld "AccessToken" zu haben:
if( $json->{access_token} ) {
setKeyValue($conn->{NAME}."_accessToken", $json->{access_token});
$conn->{STATE} = "connected";
$conn->{expires_at} = round(gettimeofday() + $json->{expires_in}, 0);
$conn->{accessToken} = TeslaConnection_TokenInShort($json->{access_token});
$conn->{refreshed_at} = strftime("%F %X", localtime(gettimeofday()));
undef $conn->{lastError};
undef $conn->{refreshFailCount};
readingsBeginUpdate($conn);
readingsBulkUpdate($conn, "tokenExpiry", strftime("%F %X", localtime($conn->{expires_at})));
readingsBulkUpdate($conn, "state", $conn->{STATE});
readingsEndUpdate($conn, 1);
Log3 $name, 4 , "$name got new accessToken: " . TeslaConnection_TokenInShort($json->{access_token});
Da wird m.M.n. das Attribut "RefreshToken" nicht gesetzt.
In der sub TeslaConnection_RefreshToken frägts Du es jedoch ab:
my $name = $conn->{NAME};
my $refreshToken = AttrVal($conn->{NAME}, "RefreshToken", "");
$refreshToken =~ s/ //g;
if ($refreshToken eq "") {
Log3 $name, 4, "$name: no refreshToken to get new accessToken";
readingsBeginUpdate($conn);
readingsBulkUpdate($conn, "state", "refreshToken missing");
readingsEndUpdate($conn, 1);
return undef;
} else {
Log3 $name, 4 , "$name current refreshToken: " . TeslaConnection_TokenInShort($refreshToken);
}
Bei mir steht da noch das speichern des RefreshToken... ich bin verwirrt:
setKeyValue($name."_accessToken", $json->{access_token});
setKeyValue($name."_refreshToken", $json->{refresh_token});
Mache ich da einen Denkfehler?
a) Um einen Request an die API zu senden, benötige ich einen gültigen "AccesToken".
b) Um den "AccesToken" zu erneuern, benötige ich einen "RefreshToken".
c) Wo kommt der "RefreshToken" her und wo wird dieser in Deinem Code gesetzt?
Elektrolurch
Hallo Elektrolurch,
vielen Dank für dein review.
ad 1) Eigentlich wird nicht mehr zwischen "AccessToken" und "RrefreshToken" unterschieden
Doch sehr wohl. Die Lebensdauer des AccessTokens wurde auf 8h reduziert un die des RefreshTokens auf 6 Wochen.
Tesla hat jetzt folgende Security-Strategie im Access Management des APIs:
- Die Kunden/Fahrer/User haben einen Account mittels Login/Passwort am Tesla Portal. Tesla hält den Kunden User an Zweifaktor-Autenthifizierung zu verwenden.
- Mit diesem Account kann über ein neues OAuth 2.0 Gateway ein RefreshToken für die nächsten 6 Wochen erzeugt werden. Um das abzusichern, wurde aber ein Captcha eingeführt. Dh. ein automatisiertes Abholen von neuen RefrehTokens ist ab sofort meines Kentnissstandes zufolge nicht mehr möglich, sodass die User mittels Dritt-Apps wie Tesla Tokens alle 6 Wochen händisch einen RefreshToken generieren werden müssen.
- Mittels OAuth 2.0 Gateway kann dann in einem automatisierbaren Schritt mittels RefreshToken ein AccessToken generiert werden, welcher dann den Zugriff auf das Tesla API für 8h jeweils ermöglicht.
Priv.Anm.: Ein wenig wird für meinen Geschmack die Security-Strategie ad absurdum geführt, da Tesla den RefreshToken nicht selbst innerhalb der PKI-Infrastruktur auf eigenem Portal anbietet, sondern es durch Dritt-Apps erlaubt, welche die Login/Passwörter der User nach Eingabe ja "verarbeiten" können/müssen. Möchte aber hier niemanden etwas unterstellen.
ad 2) Läuft der Token ab, hat man Pech gehabt
Das ist mir nicht bekannt, RefreshToken wurde meiner für 6 Wochen gültig (erste Frist bisher noch nicht abgelaufen) ausgestellt und AccessToken läuft sicher nach 8h ab.
Eben das derzeit mögliche hab im Modul 49_TeslaConnection.pm ergänzt. User gibt alle 6 Wochen einen gernerieten RefreshToken ein, und die AccessTokens refreshed das Modul.
ad 3) Warum speicherst Du den AccesToken als Attribut?
Das musst du überlesen haben. Nur der RefreshToken wird in einem Attribute gespeichert und dort bei Generierung eines AccessTokens ausgelesen.
Der AccessToken wird in Zeile 193 mit setKeyValue gespeichert:
setKeyValue($conn->{NAME}."_accessToken", $json->{access_token});
und angezeigt wird der AccessToken nur unter Internals, verkürzt mit ersten und letzten 25 Zeichen.
ad 4) Hat sich die uri geändert
Ja genau. Hab zur ursprünglichen URI für den API Zugriff ein weiteres URI für den OAuth 2.0 Zugriff hinzugefügt.
$hash->{api_uri} = "https://owner-api.teslamotors.com";
$hash->{auth_uri} = "https://auth.tesla.com/oauth2/v3/token";
Nonblocking wäre irgendwie dienlicher. client_secret gibt es nicht mehr, führt zu einen Fehler, wenn angegeben.
ad 5) nur noch das Feld "AccessToken" zu haben
Ja das ist richtig, hat sich geändert, da OAuth 2.0 Schlüssel-Management nun vom API strikt getrennt abläuft.
ad 5) Da wird m.M.n. das Attribut "RefreshToken" nicht gesetzt. In der sub TeslaConnection_RefreshToken frägts Du es jedoch ab
Wie oben beschrieben, setzt der User den RefrehToken als Attribute und dieser wird bei jedem Refreshment des AccessToken ausgelesen.
ad 5) Bei mir steht da noch das speichern des RefreshCodes... ich bin verwirrt
Früher wurde ja mittels Login/Passwort direkt über das API die Tokens erzeugt und du hast diese mit SetKeyValue temporär verspeichert. Jetzt gibt es nur mehr den temporären AccessToken, der automatisch erzeugt werden kann.
ad a) Um einen Request an die API zu senden, beötige ich einen gültigen "AccesToken". ....richtig
ad b) Um den "AccesToken" zu erneuern, bernötige ich einen "RefreshToken". ...richtig
ad c) Wo kommt der "RefreshToken" her und wo wird dieser in Deinem Code gesetzt? ... muss leider manuell mit Captcha in einer Dritt-App erstellt und in einem Attribute gespeichert werden
Vielen Dank für deine Mühe,
LG Oliver
Hallo Oliver,
vielen Dank für Deine ausführliche Beschreibung.
Daraufhin habe ich mir noch einmal den Code angesehen und verstehe nun, um was es da geht.
Bleiben da noch allerdings einige Fragen:
1. Wenn ich mich auf der Webseite von Tesla auf mein Konto einlooge und auf die Kontoeinstellungen gehe, gibt es dort die Option für MFA.
Derzeit sieht es für mich so aus, als wäre dies noch keine zwingende Option.
Tesla spricht dort von "Authentificator App", ohne eine konkrete zu nennen. Ich habe bislang die "Tesla Token" verwendet, die wurde Anfang März aktualisiert, wohl aber nicht wegen einer geänderten Autenthification.
Wenn ich die Aufrufe, meldet die nun einen Fehler beim login.
a) Welche App verwendest Du?
b) Über die Webseite von Tesla kann man wohl den refreshToken nicht generieren, das schriebst Du ja.
c) Die von Dir vorgenommenen Änderungen: gelten die nur für MFA? Oder gibt es dies zukünftig nicht mehr?
Ich hatte eben beim Aufruf der Webseite -> login einen merkwürdigen Effekt:
Habe Mailadresse und Kennwort eingegeben -> Die Seite wurde mit leerem Passwortfeld und einem Chapka angezeigt.
Nach "Aktualisieren" (F5 des Browsers) war ich jedoch eingeloggt. MFA ist bei mir noch nicht aktiviert.
Mein accessToken ist noch 4 Tage gültig. Wenn ich versuche, ihn zu erneuern, bekomme ich:
2022.04.23 17:20:09 1: teslaconn: RefreshTokenResponse {"error":"unauthorized_client","error_description":"Unauthorized client","error_uri":"https://auth.tesla.com/error/reference/xyz..."}
Da muss es wohl ein refreshCode sein, der über das Chapka und einer "Authentificator App" generiert wurde.
Alle 6 Wochen... na ja - ging ja noch.
Elektrolurch
Hallo Elektrolurch,
ad a)
Ich verwende eine Applikation unter Linux von adriankumpf:
https://github.com/adriankumpf/tesla_auth
Ist dort als bin für Linux/mac/Windows herunterladbar. Angeführt ist, dass es mit MFA auch funktioniert, obschon ich MFA bei meinem Account nicht aktiviert habe und in concreto noch nicht getestet habe.
Sollte aber mit jeder anderen Tesla Token App auch gehen, welche mit dem neuen Verfahren einen gültigen RefreshToken generieren kann.
ad c)
MFA hat mit meinen Ergänzungen nichts zu tun. MFA kommt ja nur beim Einloggen mit Login/Passwort in das Tesla Portal und beim Generieren eines RefrehTokens mittels einer App oder dem unter a) genannten bin zum Einsatz. Alle 6 Wochen wird man mit oder ohne MFA einen RefrehToken leider manuell erstellen müssen und in das gleichnamige Attribut des gegenständlichen Moduls speichern müssen. Ab dann holt sich das Modul für jeweils 8h einen neuen AccessToken.
ad login einen merkwürdigen Effekt)
Klingt merkwürdig. Vielleicht stand dem Browser noch ein gültiges Session-Cookie zur Verfügung und hat es beim Refresh zur auth verwendet?
ad Mein accessToken ist noch 4 Tage gültig)
Der RefreshToken ist nicht gültig.
ad Da muss es wohl ein refreshCode sein)
ja
LG Oliver
Hallo Oliver,
Zitat:
MFA hat mit meinen Ergänzungen nichts zu tun.
...
Ok, das hatte ich falsch verstanden....
Diese Aussage hilft mir sehr.
Ich hatte mich schon gewundert, dass die Apps, die es da gibt, keinen Kamera-Modus für ein Chapka haben....
Die App "TeslaToken" liefert mir nun wieder gültige Daten. Der AT ist 8 Stunden nun gültig nach Angabe der App.
Die App hat einen "Playground" damit kann man den Token testen und sieht auch, was da zurück kommt. M3 kann ich mit dem AT aufwecken.
Habe AT und RT nun in fhem hinterlegt, der AT funktioniert dort auch.
Nun bin ich gespannt, ob die Aktualisierung mit Hilfe des RT nun auch funktioniert.
Danke für die Unterstützung....
Elektrolurch
Hallo Oliver und Tesla-Gemeinde,
bei mir funktionierte der refresh des Access-Tokens zunächst einmal nicht mehr.
Es hat sich dann foldendes herausgestellt (damit andere nicht auch so lange danach suchen müssen):
Für die client_id, die bei dem Refesh übergeben werden muss, ist zwingend:
"ownerapi"
erforderlich.
Aus älteren Zeiten hatte ich da eine Nummer und auch noch ein secret im Hash des teslaconn - Objektes hinterlegt.
Steht im Request nicht "ownerapi", so erfolgt die Fehlermeldung:
"unauthorized client"
Elektrolurch
Hallo Elektrolurch,
das ist richtig, deshalb in Zeile 105 in 49_TeslaConnection.pm so eingebaut:
$hash->{client_id} = "ownerapi";
LG Oliver
Zitat von: Oliver Vallant am 24 April 2022, 12:19:06
Angeführt ist, dass es mit MFA auch funktioniert, obschon ich MFA bei meinem Account nicht aktiviert habe und in concreto noch nicht getestet habe.
Kann bestätigen dass es auch mit mfa funktioniert. Vielen Dank für die Weiterentwicklung an alle Beteiligten!
Habe die aktuelle Version von Oliver ins github repository übernommen.
Beste Grüße, Stefan
Hallo, ich würde gerne bei meinem Model 3 die Ladung über FHEM ein- und ausschalten. Geht das über das Modul?
Warum findet man nichts mehr in der Commandref?
Hallo tPlus,
habe das Modul zwar nicht geschrieben, aber das API stellt die Funktionen startCharging und stopCharging zur Verfügung, dh. mit
- set <tesla-device> startCharging
- set <tesla-device> stopCharging
müsste sich der Ladeprozesse steuer lassen. Es gibt auch einen Parameter charge_limit_soc, mit welchem sich die max.Ladung einstellen lässt. Wenn diese erreicht wurde oder der aktuelle Ladestand schon darüber liegt, wird sich wahrscheinlich mit startCharing nichts mehr tun.
Oliver
Danke, die commandref wäre hilfreich...
Hallo Ihr Tesla und FHEM Spezialisten
ich möchte gerne diesen Thread noch mal nach vorne holen und fragen, wie den der aktuelle Stand ist. (ja, der neue Tesla MY ist jetzt da)
Sind die "accessToken" und "RefreshToken" so weit eingebaut, das auch ein nicht Informatiker/ Programmierer das Modul verwenden kann?
Vor knapp einem Jahr war es einfach super auf dem Flurplan den Ladezustand anzuzeigen.
Seit dem hat Tesla wohl immer wieder die Zugriffe besser abgesichert und das ältere Modul ausgesperrt.
Es wäre super wenn mir jemand einen entscheidenden Tipp geben könnte.
Vielen Dank
Hallo NewRasPi,
ich möchte mit meiner Antwort dem Modul-Owner nicht vorgreifen, aber bei mir funktioniert die aktuell Version mit der neuen Access-Key Abwicklung vom 20.4.2022 ohne Probleme. Im April wurde in Tesla-Foren zu externer App-Nutzung berichtet, dass der RefrehKey für 6 Wochen gültig sein wird, sodass man manuell sich dann wieder einen mit Login/Passwort generieren wird müssen.
Interessanter Weise ist aber mein im April generierter RefreshKey noch heute gültig, sodass ich davon ausgehe, dass diese eine Gültigkeit von zumindest 6 Monaten haben. Für mich ist das auch zumutbar und im Gegenteil, da die Keys doch einen Zugriff auf ein Invest von 50k bis 120k EUR ermöglichen, ohnedies sinnvoll regemäßig zu ändern.
Aus meiner Sicht sind zwei Dinge noch offen:
- API-Calls Handshake: Mein Fahrzeug lässt sich oft nur schwer und zeitverzögert (5 Min keine Seltenheit) aufwecken, sodass man mehrmals ein Kommando absetzen muss. Das Modul meldet zwar das Ergebnis des API-Calls retour und zeigt dieses auch an, aber eigentlich sollte das Modul - bis zu einem einstellbaren Timeout, oder maximale Anzahl von Versuchen - das Kommando wiederholen, bis das Fahrzeug munter ist und bestätigt. Dies könnte man natürlich auch wieder mit zusätzlichen FHEM-Devices (at, notify) lösen, aber sauberer wäre es schon, denn dies das Modul selbst erledigt.
- CommandRef-Eintrag
Oliver
Frage @swhome, weshalb kann ich denn im Modul nicht ein event-on-change-reading setzen?
(Kann ich dies irgendwie aktivieren /weshalb wird dieses nicht angeboten?)
Das Modul produziert ja doch ziemlich viele Readings
--> und läuft bei mir top und ohne Problem :-)
hallo.
wollte gerade installieren, wegen steuerung der Ladeströme. Aber bekomme diese fehlermeldungen in über 100Zeilen
2023.06.05 09:16:49 1 : main::CallFn called by fhem.pl (844)
2023.06.05 09:16:49 0 : Strange call for nonexistent HomematicUARTLGW:keepAlive: ReadyFn
So, Modul online.
Aber mehr readings bekomme ich nicht? tokenexpired mit gestern, einziges reading.
Token erneuert, aber nur 8h gültig?
Zeig mal dein Device.
Bei mir läuft Teslamate und dessen Einbindung via MQTT seit Monaten ungestört, zuverlässig und problemlos.
hallo.
teslamate läuft auch bei mir, nur dieses modul macht mixh stutzig. läuft zwar, aber token läuft nur 8h. was dann? würde gerne den ladestrom damit regel, geht ja bei teslamate nicht
lg
Mach doch einfach eine MQTT-Verbindung in FHEM und binde Deine TeslaMate Instanz darüber ein, welches die relevanten Daten bereits aus der Tesla-API herausgezogen hat.
(hatte mich anfangs verlesen sorry, dies Modul hier nutze ich nicht!).
https://docs.teslamate.org/docs/integrations/mqtt
siehe auch hier:
https://forum.fhem.de/index.php?topic=128737.msg1231255#msg1231255
danke. beides läuft jetzt sauber. wobei dieses modul ja mehr ausliest als teslamate. zum steuern des ladestroms verwende ich jetzt dueses moduls.
lg
Hallo,
ich hab nach Anleitung in diesem Thread meinen ModelY angelegt, dh. die 49_Tesla*.pm vom BAngel87 fork gezogen (sind das die richtigen?)
Nach Token setzen und login bin ich jetzt im State CONNECTED. Aber leider erscheinen keine Readings.
Habt ihr eine Idee, woran das liegen kann?
lg, Stefan
auto kurz aufwecken über app
Hallo satprofi,
hilft leider nicht. Egal was ich mache, es erscheinen keine Readings. Welche Version der 49_Tesla*.pm verwendest du?
lg, Stefan
teslacar, teslaconnection.
ja schon, aber da gibt es am github 4 forks. Ich hab den von BAngel87, wie weiter vorne in diesem Thread beschrieben. https://github.com/BAngel87/FHEM-Tesla
Ist der noch aktuell?
LG, Stefan
ich hab das jetzt mit einem dirty workaround hingekriegt. (hartcodierter DNS Server in HttpUtils.pm)
Allerdings hab ich jetzt das Problem, dass der Token immer abläuft. Was mach ich da noch falsch, bzw. wie wird der Token refreshed?
danke Stefan
Leider geht seit dem neusten Tesla Update auf 2023.38.6 mein Garagentor nicht mehr auf, wenn ich nach Hause komme... :o
Er sendet den aktuellen Standort nicht mehr, vllt. habt ihr eine Idee oder Lösung(Garagentoröffner von Tesla einbauen lassen zählt nicht... ;) ).
Zitat von: Bigsonic1 am 16 November 2023, 19:33:06Er sendet den aktuellen Standort nicht mehr, vllt. habt ihr eine Idee oder Lösung(Garagentoröffner von Tesla einbauen lassen zählt nicht... ;) ).
Selbes bei mir. Version 2023.38.6 - zeitl. Zusammenhang mit dem Update kann ich nicht sicher bestätigen.
Alle relevanten readings werden aktualisiert, mit Ausnahme von "native_latitude" und "native_longitude". Diese haben letzten Stand 12.11.2023 00:43
Das habe ich im Tesla Forum gefunden:
ZitatIn der 38er Version werden unter vehicle_data keine GPS Daten mehr übermittelt.
Dazu brauchst ne zusätzliche neue Datenabfrage mit ?endpoints=location_data
Sonst hat sich nichts weiter geändert, gibt auch keine weiteren Nachteile finde ich (auf die API bezogen)
Kann das in dem Modul geändert werden, oder kann mir jemand sagen, wo und was ich in dem Modul einfügen muss?
ich hab im Modul "49_TeslaCar.pm" in der Function " TeslaCar_UpdateVehicleStatus" bei Zeile 430 noch einen 2. API-Call hinzugefügt
Klasse, vielen Dank!!
Es funktioniert...
Immer wieder schön, wie schnell einem hier im Forum geholfen wird.
Ist es geplant, dass das Modul an die neue API angepasst wird?
Lg
Techno
bin zwar connected, aber letzte fahrt, etc. fehlt. SOC passt auch nicht mehr.
Im Januar 2024 ist Ende laut Ankündigung:
https://developer.tesla.com/docs/fleet-api#announcements-amp-api-changelog
:
:
:
January 2024 All vehicles* will require Tesla Vehicle Command protocol. The REST API will be fully deprecated
TeslaConnection geht noch, TeslaCar liefert seit heute keine neue Readings mehr (außer "tokenExpiry")
VG Tobias
ich bekomme auch schon seit 22.1. 18:05 keine Readings.
Gibt es evtl. schon Pläne zur Umstellung auf die neue API?
Bei mir sind auch keine Readings mehr da. Ich habe gesehen, dass die TeslaMate Entwickler den Endpoint getauscht haben: https://github.com/teslamate-org/teslamate/pull/3630/files
Das könnte man mal in der TeslaCar.pm ziemlich weit am Ende testen. Ich bin mir nicht sicher, ob ich die Tage dazu komme.
Das würde vielleicht wieder Daten anzeigen, aber mit Umstellung auf das neue Command SDK werden die Schreibenden Zugriffe wohl alle nicht mehr funktionieren.
Ich habe mir parallel mal TeslaSolarCharger als Alternative für PV-Laden angeschaut.
Damit geht es wohl erstmal wieder, aber Tesla meldet sich auch netterweise mit dem erwarteten Inhalt, wenn man etwas zum Fahrzeug schicken möchte:
2024.01.26 17:22:06.158 5: TeslaModel3 car status response {"response":null,"error":"Tesla Vehicle Command Protocol required, please refer to the documentation here: https://developer.tesla.com/docs/fleet-api#2023-10-09-rest-api-vehicle-commands-endpoint-deprecation-warning","error_description":""}
Top, das ging ja fix!
Readings gehen alle wieder perfekt und charge_amps setzen funktioniert auch.
VG Tobias
Zitat von: Jaykoert am 26 Januar 2024, 17:25:32Damit geht es wohl erstmal wieder, aber Tesla meldet sich auch netterweise mit dem erwarteten Inhalt, wenn man etwas zum Fahrzeug schicken möchte:
2024.01.26 17:22:06.158 5: TeslaModel3 car status response {"response":null,"error":"Tesla Vehicle Command Protocol required, please refer to the documentation here: https://developer.tesla.com/docs/fleet-api#2023-10-09-rest-api-vehicle-commands-endpoint-deprecation-warning","error_description":""}
hmmm.
vorerst danke , aber connecten tut es sich nicht.
TeslaConnection ist connected, aber TeslaCar nicht.
Zitat von: satprofi am 27 Januar 2024, 08:45:51hmmm.
vorerst danke , aber connecten tut es sich nicht.
TeslaConnection ist connected, aber TeslaCar nicht.
Hast du ein neueren Tesla? Die neue API ist bei neueren Fahrzeugen jetzt schon per default eingeschaltet.
2021
teslalogger klappt auch erst nach update
bei mir klappt die Datenabfrage nur dann, wenn das Auto "wach" ist.
damit kann ich vorerst leben....
Zitat von: didi-fritz am 27 Januar 2024, 18:56:28bei mir klappt die Datenabfrage nur dann, wenn das Auto "wach" ist.
damit kann ich vorerst leben....
danke, du hast recht. Wagen dürfte gestern connected gewesen sein, nach fahrtende hab ich die readings aktualisiert empfangen.
Hallo,
bei mir war am 23.1. auch erst einmal Schuß und ich habe ein wenig Ursachenvorschung betrieben.
1. Aus meiner Sicht ist die Funktion TeslaCar_UpdateStatus
überflüssig. Geändert hatte sich ja ein Teil der uri von "vehickles" auf "products".
Sie ermittlet die carId, die gleich der vin ist. Das kann man sich ja schon mal sparen, ich habe die carId = vin mir in einem Attribut gespeichert.
2. Die sub ermittelt auch den Status online, offline oder asllep.
2. Ich habe festgestellt, dass man den state des Autos auch in der "($)" feststellen kann. Ist das Auto offline oder asleep, so steht in der Antwort kein json, sondern eine Fehlermeldung, die die Worte offline und asleep enthalten.
Ich habe ein M3 2020 und SW 23 44 laufen und das Auto wird nun auch NICHT mehr aufgeweckt, wenn man Daten auslesen möchte. Das scheint Tesla geändert zu haben, so dass der ganze Hazel mit den update_timer und polling_timer in der
TeslaCar_UpdateStatus sowieso nun überflüssig ist.
Teste das seit einigen Tagen und trotz der 1 x minütigen calls von ($) wacht das Auto nicht auf.
Hier meine Lösung, da ist aber noch etwas mehr drin, da ich das Modul auch über an einigen Stellen erweitert habe, wie z.B. das automatische Schreiben eines Fahrtenbuches und die Generierung von Ereignissen, wenn das Fahrzeug bestimmte Orte erreicht.
sub TeslaCar_UpdateVehicleCallback($)
{
my ($param, $err, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
my %readings = ();
my $JSON = JSON->new->utf8(0)->allow_nonref;
Log3($name,4,"Teslacar_UpdateVechicleCallback: err $err\ndata: $data");
if($err ne "")
{
Log3 ($name,1,"TeslaCar_UpdateVehicleCallback: error <$err> while requesting $param->{url}");
return undef;
}
if($data ne "")
{
# data contains info about state -> 'offline' or 'asleep'
if($data =~m/response.:null/)
{
if(readingsval($hash,'state','') eq 'online')
{
readingsSingleUpdate($hash,'state','asleep',1);
Log3($name,2,"TeslaCar_UpdateVehicleCallback: car asleep data:\n$data");
# Overwrite Timer and set to update_imer
RemoveInternalTimer($hash);
InternalTimer(gettimeofday()+
AttrVal($name,'updateTimer',240), "TeslaCar_Timer", $hash, 0);
# check for ending trip
if(exists($hash->{Trip})
)
# stop trip -> finish entry in logBook
{
TeslaCar_EndNewTrip($hash);
} # end new trip and close logBook
} # state has changed
return undef;
} # offline
# token expired
elsif($data =~m/token expired/)
{
Log3($name,1,"TeslaCar_UpdateVehicleCallback: error - token expired");
DoSet($name,'AccessToken');
return undef;
} # if no valid token
else
# online
{
my $parsed = eval {$JSON->decode ($data)};
if($@)
{
Log3 $name, 1, "TeslaCar_UpdateVechicleCallback: $name - JSON error requesting data: $@";
return undef;
} # parse error
foreach my $reading (sort keys %{$parsed->{response}})
{
# skip unused readings
....
Elektrolurch
Hallo,
ich habe bei mir im Modul TeslaCar und TeslaConnection die API Aufrufe entsprechend auf /api/1/products angepasst. Mein Wagen ist danach auch wieder in FHEM erreichbar. Die "Internals" Daten sind ok. Aber die Readings sind unvollständig. Ich bekomme nur den "state" übermittelt. Die restlichen fehlen alle.
Bei Verbose Level 5 sehe ich aber, dass die Daten von Tesla kommen.
Habt ihr dazu noch Ideen? Den Wagen habe ich in fhem gelöscht und schon neu angelegt.
vehicle_config' => {
'rear_seat_type' => 0,
'can_accept_navigation_requests' => $VAR1->
'driver_assist' => 'TeslaAP3',
'default_charge_to_max' => $VAR1->
- {'ble_autopair_enrolled'},
'supports_qr_pairing' => $VAR1->
- {'ble_autopair_enrolled'},
'roof_color' => 'RoofColorGlass',
'wheel_type' => 'PinwheelRefresh18',
'has_air_suspension' => $VAR1->
- {'ble_autopair_enrolled'},
... usw.
ich habe meinen pollingTimer auf 300 und den updateTimer auf 0 gestellt. Dadurch wird die Logik in TeslaCar_UpdateStatus ausgetrickst.
Werte bekomme ich nur, wenn das Auto wach ist (laden oder fahren)
Hoi Zusammen
Ich bin neu hier im Forum. Verwende FHEM schon seit längerer Zeit und die Module TeslaConnection & TeslaCar seit etwa einem Jahr.
Das Phänomen was hier beschrieben wird, ist seit 23.01.2024 bei mir auch so.
Leider kommt bei mir die Fehlermeldung:
response from Tesla API: {"error":"invalid bearer token"}
Ich habe ein neues refreshToken von "Tesla Tokens" in das Attribut RefreshToken von TeslaConnection geladen. Kein Erfolg, immer noch die Fehlermeldung {"error":"invalid bearer token"}
Du musst sowohl das AccessToken, als auch den RefreshToken übernehmen.
Danke,
aber wie übernehme ich das AccessToken?
Es gibt nur ein Attribut RefreshToken im Modul TeslaConnection.
Ich habe auch etwas gesucht.
Den Refresh Token musst Du dir z.B. mit der Android APP Tesla Token neu generieren. Der Token ist nur kurz gültig. Den generierten Refresh Token entsprechend im Device teslacon als RefreshToken eintragen. Anschließend set teslaconn connect senden. Damit sollte der STATE auf connected wechseln.
Wichtig die folgenden Eintäge sollten da sein.
api_uri https://owner-api.teslamotors.com
auth_uri https://auth.tesla.com/oauth2/v3/token
client_id ownerapi
Nicht auf https://fleet-api.prd.eu.vn.cloud.tesla.com umstellen. Das war mein Fehler, Damit habe ich nicht alle readings bekommen und lange am Fehler gesucht.
In der Datei 49_TeslaCar.pm auf:
#### Read list of cars, find my carId
von my $URL = "/api/1/vehicles"; (bei mir Zeile 273).
auf my $URL = "/api/1/products";
umstellen und ein Modul reload machen.
Anschließend set teslaconn scanCars ausführen. Dein Wagen sollte danach mit neuen Daten wieder da sein. Wichtig der Wagen muss online sein.
Leider funktionieren ein Großteil der Befehle nicht mehr. Diese gehen nur über die fleet-api.
Gruß
Danke, jetzt funktioniert es bei mir wieder.
Ich habe eben als erstes die api_uri auf https://fleet-api.prd.eu.vn.cloud.tesla.com umgestellt. Ich dachte https://owner-api.teslamotors.com geht nicht mehr...
Hallo Leute,
danke für den schnelle Fix. Leider funktionierts bei mir noch nicht. Hab die neue 49_TeslaCar.pm von Jaykoert eingespielt, die api/vehicles in 49_TeslaConn.pm auf api/products geändert und fhem neu gestartet. Neues Refresh Token generiert und im attr gesetzt. Bekomme trotzdem die Meldung RefreshToken invalid.
Hat wer eine Idee, was da noch falsch ist?
danke,
Stefan
Interessant, bei mir werden nach aktueller Anpassung alle Readings aktualisiert bis auf die Positionsdaten:
- position
- native_latitude
- native_longitude
- native_location_supported
Wie schaut das bei euch aus?
LG Oliver
Zitat von: Oliver Vallant am 01 Februar 2024, 19:26:51Interessant, bei mir werden nach aktueller Anpassung alle Readings aktualisiert bis auf die Positionsdaten:
- position
- native_latitude
- native_longitude
- native_location_supported
Wie schaut das bei euch aus?
LG Oliver
Bei mir ist das Verhalten gleich - erhalte leider auch keine Positionsdaten.
Aber Danke an alle, die zum Update beitragen.
das problem besteht seit 11.11., dies sind meine letzten readings. da kam von tesla ja das neue feature wo du im display siehst ob ext. Software aufs auto zugreift
Bei mir waren seit letzter Woche auch keine Daten mehr in Fhem und nun nutze ich nur noch TeslaMate zum Auslesen der Daten von Tesla. Das habe ich eh schon seit ein paar Jahren im Einsatz.
Mein selbstgebautes Überschussladen habe ich weggeschmissen und nutze nun den Tesla Solar Charger, den man direkt in das Docker Compose mit einbinden kann. Ging eigentlich sehr schnell und einfach.
Um mein Tablet UI weiter zu versorgen, schicke ich die Daten per MQTT von TeslaMate ab Fhem. Auf der TeslaMate-Seite ist alles mit Mosquitto vorbereitet, Fhem war etwas fummelig, geht jetzt aber auch wieder.
ich krieg das nicht mehr zu Laufen. Bekomme ständig "refreshToken invalid" auch mit neu generiertem Refresh Token.
Hat jemand eine Idee?
Habt ihr in 49_TeslaConnection.pm auch /api/1/vehicles auf /api/1/products geändert? (Hab beides probiert, macht bei mir keinen Unterschied)
Die 49_TeslaCars.pm verwende ich dzt. von Jaykoert, scheinbar bringt ein Module update noch nicht die geänderte Version.
LG Stefan
kann mir da keiner helfen?
Zitat von: stst am 18 Februar 2024, 12:19:45kann mir da keiner helfen?
TeslaCars.pm ist nicht offiziell. zumindest bei erstinstallation nicht im direktory.
bist du mit teslaconnection verbunden?
Hallo satprofi,
nein, das ist ja das Problem.
Die Connection meldet nur "invalid RefreshToken", auch wenn das Token frisch generiert ist. Deshalb die Frage ob sich die TeslaConn auch geändert hat.
Hallo Satprofi,
wie hast du den Refresh Token generiert? Beim Eintragen in das Attribut RefrehToken musst du aufpassen nicht versehentlich Formatierungen (copy/past aus Web-Site mit Browser zb.) mit zu kopieren. Sicherheitshalber kopierst zuerst in einen Texteditor und dann weiter in das Fehm-Feld. Nachdem du connected hast, was steht im Internal "accessToken"? Müsste aussehen wie in dem ScreenShot anbei.
LG Oliver
Hallo Oliver,
kopiert hab ich das schon richtig. Hat ja immerhin schon funktioniert vor der Umstellung und da hab ich es gleich gemacht.
Stell mir bitte einmal deine 49_TeslaConnection.pm rein.
lg, Stefan
Hallo Satprofi,
anbei meine aktuellen Versionen der Module.
LG Oliver
Hallo satprofi.
Stst ist der leidtragende, bei satprofi klappt ja
Zitat von: Oliver Vallant am 27 Februar 2024, 08:17:30anbei meine aktuellen Versionen der Module.
danke Oliver, hilft aber leider auch nicht. Ich bekomme noch immer die Meldung "Refresh Token invalid".
Kann das an der Tesla-API liegen? Kann ich den Token irgendwie testen?
lg, Stefan
Hallo stst,
du könntest es mit einer der vielen Tesla-Apps aus dem Android oder Apple Store ausprobieren. Wenn die App dich mit dem Token anmelden lässt funktioniert er.
LG Oliver
Wie erstellst du deinen RefreshToken? Ich vertraue hierfür keiner Web-Site oder App mein Passwort an, sondern verwende das Tool tesla_auth von adriankumpf:
https://github.com/adriankumpf/tesla_auth?tab=readme-ov-file (https://github.com/adriankumpf/tesla_auth?tab=readme-ov-file)
Source ist somit einsehbar und es wird auf deinem Client ausgeführt. Es liegen auch drei Binaries für Mac/Linux/Win zum Download bereit, falls du nicht kompilieren willst.
LG Oliver
Hallo Oliver,
ja genau das Tool verwende ich auch. Damit hats ja zuvor schon funktioniert, deshalb glaub ich nicht, dass es am Token liegt. Habs dann auch einmal testweise mit der iphone App Auth for Tesla probiert, aber auch ohne Erfolg.
Im log steht nur:
2024-03-02 08:37:48.673 TeslaConnection TeslaConn tokenExpiry:
2024-03-02 08:37:48.676 TeslaConnection TeslaConn refreshToken invalid
In irgendeinem Beitrag hab ich gelesen, dass bei neueren Teslas was anders ist. Weiß da wer was Genaueres darüber? Was ist "neuer"? Meiner ist jetzt ein Jahr alt.
LG, Stefan
Hallo Stefan,
mein Tesla ist drei Jahre, fällt also leider nicht mehr unter "die Neuen". Ausschließen, dass dein Token funktioniert, kannst du mittels anderer Tesla-App. Vielleicht hast du einen Freund/Kollegen mit Tesla, der mit dir zusammen zum Ausprobieren für sein Fahrzeug einen Token generiert. Modul neuladen, durchstarten, Devices neu anlegen wirst du ja schon probiert haben.
LG Oliver
Müsste man nicht mit update vom jänner den Datenzugriff erneut erlauben? Man sieht ja dann dieses extra Symbol rechts oben, wenn 3rdparty Apps aufs Auto zugreifen