NEWS
UNSOLVED Tesla script
-
Hallo Zusammen,
Hat jemand schon mal versucht die Tesla api einzubinden?
Ich würde gerne ein paar Daten wie z.b. Aktueller Ladezustand abfragen per Script.Die api ist dokumentiert, nur fehlt es mir leider an dem Wissen wie diese im JavaScript einzubinden wäre.
Ps. Leider habe ich ein solches Modul nur auf der fhem Seite gefunden....tesla Modul example
Bin über jeden Tipp dankbar !
Lg
Thomas -
@thomassch
Es gibt ein NPM-Modul, das in Javascript eingebunden werden kann (Konfiguration: Zusätzliche NPM-Module). -
Wow Danke für die schnelle Antwort - das test ich dann mal gleich.
Gruß
Thomas -
ich hab das script installiert bekommen, wie binde ich das denn jetzt in iobroker ein? Sorry, bin newbie auf dem Gebiet...
-
ich muss präzisieren, ich hab das NPM-Modul installiert bekommen, aber wie gehts dann weiter?
-
@UserN sagte:
hab das NPM-Modul installiert bekommen
Als "Zusätzliches NPM-Modul" in der Konfiguration der Javascript-Instanz eingetragen ?
@UserN sagte in Tesla script:
wie gehts dann weiter?
Mit einem Skript (siehe unter Library Usage Examples)
-
ja, in Konfiguration aufgenommen ("teslajs").
wie und wo führe ich das Skript dann aus, z.B. den wakeup Befehl?
-
Moin, würde mich gern anschließen, bin leider noch Recht neu in Sachen Javascript und weiß nicht wie ich damit Werte bekomme um sie zum Beispiel in Datenpunkte zu speichern.
MfG Marco
-
Ich hab mich gerade mal dran gemacht. Einbinden war Problemlos, Login auch, die "General API Calls" klappen auch ohne Probleme, aber die Fahrzeug-spezifischen gehen leider gar nicht...
Würde mich über jede Hilfe freuen.
MfG Marco -
@Marco-Laser
So wie ich es verstehe, wird vehicle.id_s erst in der Callback-Funktion von tjs.vehicle() bereitgestellt. Versuche es mal so:var options = { authToken: result.authToken }; tjs.vehicle(options, function (err, vehicle) { log("Vehicle " + vehicle.vin + " is: " + vehicle.state); options = { authToken: result.authToken, vehicleID: vehicle.id_s }; tjs.chargeState(options, function (err, chargeState) { log("Current charge level: " + chargeState.battery_level + '%'); }); // Ende chargeState }); // Ende vehicle }); // Ende login
-
@paul53 Fehler bleibt leider ...
Hab auch schon verschiedenste Konstellationen versucht, wie ich was aufrufe, nie wird was ausgegeben aus den Funktionen. -
@Marco-Laser Bin auch gerade dabei den Tesla einzubinden und war beim gleichen Fehler.
Es scheint so, als ob der Tesla erst aufgeweckt werden muss, er also nicht automatisch aufwacht wenn dinge abgefragt werden, die auf den Wagen zugreifen müssen.
Finde ich soweit ganz ok, damit hat man das ständige Aufwecken etwas im Griff (Wach zieht er einiges mehr an Strom), wäre nur besser wenn das klar in der Doku stehen würde.Nach dem Aufwecken klappt jedenfalls die Abfrage des Charge state, weiter bin ich noch grad nicht.
-
@Dominic-Blattmann Oh ja so klappt's. Hatte irgendwie erwartet er macht das selber oder zeigt den letzten an den er hatte aber gut, so gehts ja auch.
Nutzen konnte ich jetzt alle Funktionen die irgendwas starten also climateStart() oder chargeMaxRange().
Was auch geht ist :tjs.climateStart(options, function (err){; console.log(err);});
Wenn das Auto am Schlafen ist gibt er 408 zurück dann könnte man es mit tjs.wakeUp(options); aufwecken.
Nur wie ich bei Sachen wie driveState() die Infos bekomme weiß ich noch nicht.
Lass es mich gern wissen wenn du da weiter gekommen bist
Wenn alles klappt könnte man ja ein Script machen wo alles ausgelesen wird und in Dateipunkte geschrieben wird, mit Buttons zum Starten bestimmter Funktionen. Mir mangelt es dazu nur leider etwas an Know How -
Wollte eigentlich direkt einen Adapter machen, bin aber dann doch zurück zum script, muss wohl ioBroker erstmal noch etwas besser kennen lernen, bevor ich eigene adapter bastle. Aber werde das script dann auf jeden fall teilen.
-
Drive State habe ich z.B. so gemacht:
var options = { authToken: getState('javascript.0.tesla.auth.authToken').val, vehicleID: getState('javascript.0.tesla.vehicle.id').val }; tjs.driveState(options, function (err, driveState) { setState('javascript.0.tesla.vehicle.position', driveState.longitude + ';' + driveState.latitude); });
und dann über das Open Street map vis-Widget angezeigt
-
Werde morgen dann wohl doch einen Adapter entwickeln, scheint mir keine grosse Hexerei zu sein. Wenn du willst kannst du da ja dann mithelfen sobald ich das repo angelegt habe, oder zumindest "Betatester" spielen, denke sollte bis morgen abend was haben
Das wichtigste und komplizierteste wird wohl die Aufweckstrategie sein, will ja nicht jede Minute den Tesla aufwecken um die Daten abzufragen, das frisst die Batterie, trotzdem sollen die möglichst aktuell sein. Da muss ich mir noch was schlaues überlegen.
-
@Dominic-Blattmann klar, da bin ich gern dabei.
Hätte gesagt dass die Daten bei Knopfdruck abgerufen werden oder optional via cron. -
Werde das wohl konfigurierbar machen mit 3-4 modi. Der eine will ja ständig möglichst aktuell sein, der andere nur auf Knopfdruck um die Batterie zu schonen.
-
So, hab damit mal angefangen.
Hat aber wirklich noch "Alpha"-Status und stürzt auch gerne mal noch ab
Lese jetzt mal die Datenpunkte für das Vehicle und Charge-State.Git: https://github.com/dbweb-ch/iobroker.tesla-motors
Evtl. komm ich heute Abend noch dazu, das ganze weiter zu machen und zumindest schon mal alles einzulesen, schaltbare Datenpunkte folgen dann morgen. Musste heute leider zwischendurch noch arbeiten...
Das ist jetzt nur mal so vorab, weil ich doch gesagt hatte, ich hätte heute Abend schon was -
@Dominic-Blattmann so ein Mist aber auch diese normale Arbeit alles gut, ich komme eh erst morgen früh zum Testen und melde mich dann