Modul für Tesla Model S / 3 / X

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

Vorheriges Thema - Nächstes Thema

LR66

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...

Black7king

ich Kann mit Fahrzeug und Speicher dienen wenn ihr jemanden zum testen Braucht :-D

swhome

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  :)
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Black7king

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...

LR66

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 dokumentiert. Dürfte nicht viel anders aussehen als beim Auto.

Black7king

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 dokumentiert. Dürfte nicht viel anders aussehen als beim Auto.

zur powerwall auslesen gibts schon ein FHEM Modul

LR66

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.

Elektrolurch

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


configDB und Windows befreite Zone!

swhome

Das Kommando "scanCars" auf die TeslaConnection hast Du schon versucht? Was ist danach im Log zu sehen?
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

TimoD

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

Elektrolurch

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
configDB und Windows befreite Zone!

swhome

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
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Elektrolurch

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... :-)
configDB und Windows befreite Zone!

TimoD

#133
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

Elektrolurch

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
configDB und Windows befreite Zone!