API ZE. Services über Drittanwendungen (z.B. fhem) anzapfen

Renault ZOE Themen, zu denen es kein eigenes Unterforum gibt

API ZE. Services über Drittanwendungen (z.B. fhem) anzapfen

Beitragvon marcus72 » Di 31. Jan 2017, 21:41

Hallo zusammen,

in den letzten Tagen bin ich auf einige Links gestoßen, die sich damit beschäftigen, die API der ZE-Services anzuzapfen und sie für eigene Zwecke bzw. Anwendungen zu verwenden:

Reverse Engineering der Schnittstellen API
https://shkspr.mobi/blog/2016/10/revers ... t-zoe-api/

Webanwendung
https://github.com/nabossha/ZEServices

Amazon Echo
https://blog.dantup.com/2016/12/using-a ... ry-status/

Um mir die Wartezeit auf meine 2. Zoe etwas versüßen, habe mal (wieder) versucht, die ZE-Schnittstelle für meine Haussteuerungssoftware http://fhem.de nutzbar zu machen.

Mein erster Versuch hatte ich gestartet, kurz bevor Renault die Apps bzw. Schnittstelle komplett umgebaut hatte:
vgl. https://github.com/mschlappa/fhem/blob/master/ze.pl

Aufgrund der Umstellung war das hierfür zum Einsatz gekommene Perl-Skript bald nicht mehr funktionsfähig, obwohl es recht zuverlässig funktionierte (Was man von den Renault Servern nicht unbedingt behaupten konnte).

Mein neuer Ansatz ist es, fhem Bordmittel (genauer: das Modul HTTPMOD) zu verwenden.
Anbei eine Kurzanleitung, wie man das Modul konfigurieren kann, damit der Zugriff klappt:

Zunächst das Device erstellen
Code: Alles auswählen
define zoe HTTPMOD https://www.services.renault-ze.com/api/user/login 3000


Danach müssen ziemlich viele User-Attribute erstellt werden. Einfach mit viel Kopierpaste nach "userattr" kopieren:
Code: Alles auswählen
   userattr   get01Header1 get01Name get01Replacement01Mode:reading,internal,text,expression,key get01Replacement01Regex get01Replacement01Value get01Replacement02Mode:reading,internal,text,expression,key get01Replacement02Regex get01Replacement02Value get01URL get02Header1 get02Name get02Replacement01Value get02Replacement02Value get02URL replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value requestData requestHeader1


Danach werden die Attribute mit Leben gefüllt:

Code: Alles auswählen
   enableControlSet 1
   extractAllJSON 1
   get01Header1 Authorization: Bearer %token%
   get01Name  batteryStatus
   get01Replacement01Value token
   get01Replacement02Value user_vehicle_details_VIN
   get01URL   https://www.services.renault-ze.com/api/vehicle/%user_vehicle_details_VIN%/battery
   get02Header1 Authorization: Bearer %token%
   get02Name  ac_last
   get02Replacement01Value token
   get02Replacement02Value user_vehicle_details_VIN
   get02URL   https://www.services.renault-ze.com/api/vehicle/%user_vehicle_details_VIN%/air-conditioning/last
   replacement01Mode reading
   replacement01Regex %token%
   replacement02Mode reading
   replacement02Regex %user_vehicle_details_VIN%
   replacement03Mode key
   replacement03Regex %%username%%
   replacement03Value username
   replacement04Mode key
   replacement04Regex %%password%%
   replacement04Value password
   requestData {"username":"%%username%%","password":"%%password%%"}
   requestHeader1 Content-Type: application/json


Damit username/password nicht im Klartext direkt im Device sichtbar sind kann man sie mit dem folgenden Befehlen ein wenig schützen. Die Ablage erfolgt dann im Filesystem.
set storeKeyValue username <DeinUsername>
set storeKeyValue password <DeinPasswort>


Nachdem das Device nun konfiguriert ist, kann man mit
get zoe batteryStatus

den Akkustand, Reichweite, Ladezustand etc. abfragen

Mit
get zoe ac_last


bekommt man Rückmeldung, wann das letzte Mal vorklimatisiert wurde.

Nach dem gleichen Schema können nach Belieben weitere Abfragen gebaut werden (vgl. obigen Blogeintrag).

Das Starten der Vorklimatisierung habe ich noch nicht eingebaut, da ich aktuell keine Zoe habe, bei der ich das ausprobieren könnte. Ich habe zwar noch Zugriff auf eine Zoe *hüstel*, möchte den aktuellen Besitzer jedoch nicht mit meiner Fernsteuerung erschrecken :-)

Details zum Modul HTTPMOD sind übrigens auch hier zu finden:
https://wiki.fhem.de/wiki/HTTPMOD

Vielleicht kann ja jemand damit etwas anfangen
Unterwegs mit einer Zoe Z.E. 40
marcus72
 
Beiträge: 158
Registriert: Mo 12. Okt 2015, 20:49
Wohnort: Dülmen

Anzeige

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon Lotzekov » Do 2. Feb 2017, 08:47

Oh yes, ich hatte das für ein nächstes Wochenende auf dem Plan … Wireshark und so … und nun hast du mir ein freies Wochenende verschafft :)

Top! Danke!
– Der obige Post kann Spuren von Ironie und/oder Sarkasmus enthalten –

- EV-Freak (chargEV)

12/16 – 12/19: Renault Zoe Intens Zirkonblau 20.000 km/Jahr
11/17 - 11/20: IONIQ Elektro Premium Phantom Black 30.000 km / Jahr
Sono Motors Sion reserviert
Benutzeravatar
Lotzekov
 
Beiträge: 126
Registriert: Mo 26. Sep 2016, 14:03

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon marcus72 » Do 2. Feb 2017, 19:11

Dann hat sich mein Posting ja schon gelohnt
Unterwegs mit einer Zoe Z.E. 40
marcus72
 
Beiträge: 158
Registriert: Mo 12. Okt 2015, 20:49
Wohnort: Dülmen

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon mcluki99 » Do 19. Jul 2018, 22:36

Hab mich da auch mal damit gespielt - aber dieser Bearer-Token, den ich aus der eingeloggten Browser-Session gestohlen habe, ändert sich ja täglich (?).


Das HTTPMOD modul macht ein komplettes Login und zieht danach die nötigen Attribute ab, seh' ich das richtig? :-/

Gibts sowas FHEM-Unabhängig auch? Zur Verwendung in C#, PHP, Python, ...irgendsowas
Benutzeravatar
mcluki99
 
Beiträge: 120
Registriert: Mo 6. Feb 2017, 22:05
Wohnort: Oberösterreich

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon sirprize » Sa 21. Jul 2018, 10:24

Das Bearer-Token ist im jwt-Format und hat eine Lebensdauer von 10 Stunden, kann aber über einen ganz simplen Aufruf erneuert werden. So mache ich es mit QuickZE.
Hier die API-Doku zum Refresh. Sie ist von Terence Eden, den marcus72 bereits verlinkt hat. Den Refresh-Teil habe ich selbst geschrieben.

Ich würde davon abraten, beim Ablauf des Tokens ein neues Login zu machen, denn Renault behält auch die abgelaufenen Logins in der User-Datenbank. Wenn man 20 bis 30 Logins "produziert" hat, mag das für Renault OK sein, aber was werden die bei über 1000 sagen?
Zoe R90 Bose seit März 2017 / TM3 vorbestellt / verbrennerfrei / Strom: SW Waldkirch MobilStrom / davor Bürgerwerke
Benutzeravatar
sirprize
 
Beiträge: 280
Registriert: So 4. Dez 2016, 14:52
Wohnort: Ulm

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon tango » Sa 21. Jul 2018, 11:27

Ich habe IP-Symcon im Einsatz, das man ganz wunderbar mit PHP programmieren kann.
Hat da schon jemand was gemacht? Für etwas Start-Code wäre ich sehr dankbar.

Insbesondere würde mich das im Zusammenspiel mit dem OpenWB-Projekt interessieren, bei dem man ja wunderbar die Ladeleistung für einen oder mehrere Ladeplätze zusammen mit der Ereugungs- und restlichen Verbrauchssituation managen kann. Die Kenntnis des Ladezustands wäre Gold wert, weil man dann bei Fräulen ZOE recht effektiv z.B. eine Ladung auf 80% programmieren könnte, was jetzt doch eher schwierig ist.
Gruß

tango

________________________________________________________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 - ? ZOE Intens black
Der Tag wird kommen mit 100% elektrischem Fuhrpark und es wird nicht mehr lange dauern.
Benutzeravatar
tango
 
Beiträge: 744
Registriert: Mo 10. Mär 2014, 17:37
Wohnort: im heißen Süden

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon sirprize » Sa 21. Jul 2018, 11:55

Hi tango,

am besten nimmst du eine PHP-Bibliothek, die solche REST-Anfragen unterstützt, beispielsweise https://github.com/tcdent/php-restclient

Der erste Login wäre etwa so (ohne Fehlerbehandlung):
Code: Alles auswählen
$username = "meinrenaultlogin@example.com";
$password = "supergeheim";
$api = new RestClient([
    'base_url' => "https://www.services.renault-ze.com/api",
    'format' => "json"
]);
$logindata = $api->post("user/login", ['username' => $username, 'password' => $password]);
// Notwendige Daten aus der Antwort lesen:
$token = $logindata['token'];
$refresh_token = $logindata['refresh_token'];
$vin = $logindata['user']['associated_vehicles'][0]['vin'];
// Token, Refresh_token und VIN (oder gleich die gesamte Antwort) an dieser
// Stelle unbedingt lokal abspeichern, da man diese Daten sonst nur
// über einen neuen Login wieder bekommt
// Bei allen weiteren Anfragen muss das Token mitgeschickt werden:
$api->set_option('headers', ['Authorization' => 'Bearer '.$token]);

Damit hast du bei Renault einen neuen Client für die Anfragen registriert. Der Token ist 10 Stunden gültig und kann mittels des refresh_token erneuert werden.

Bei Fragen einfach melden :)
Zoe R90 Bose seit März 2017 / TM3 vorbestellt / verbrennerfrei / Strom: SW Waldkirch MobilStrom / davor Bürgerwerke
Benutzeravatar
sirprize
 
Beiträge: 280
Registriert: So 4. Dez 2016, 14:52
Wohnort: Ulm

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon tango » Sa 21. Jul 2018, 12:33

Ja supi, danke. Damit werde ich mal loslaufen.

Ich werde auch im IP-Symcon Forum mal nch Leuten suchen, die da noch interesse dran haben, vielleicht ist das auch für das OpenWB-Team @snaptec und @UmalI interessant.
Gruß

tango

________________________________________________________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 - ? ZOE Intens black
Der Tag wird kommen mit 100% elektrischem Fuhrpark und es wird nicht mehr lange dauern.
Benutzeravatar
tango
 
Beiträge: 744
Registriert: Mo 10. Mär 2014, 17:37
Wohnort: im heißen Süden

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon UliZE40 » Sa 21. Jul 2018, 12:39

tango hat geschrieben:
Die Kenntnis des Ladezustands wäre Gold wert, weil man dann bei Fräulen ZOE recht effektiv z.B. eine Ladung auf 80% programmieren könnte, was jetzt doch eher schwierig ist.

Das geht nur mit Interpolation, da der Ladezustand nur zyklisch alle 30 Minuten während des Ladens (sowie zum Start und Ende) übermittelt wird.
Aber wozu sollte man das überhaupt tun? Wenn der Akku voll ist wird abgeschaltet. :roll:
UliZE40
 
Beiträge: 1112
Registriert: Mi 16. Nov 2016, 21:14

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap

Beitragvon tango » Sa 21. Jul 2018, 12:52

Richtig, über die Renault-api bekommt man nur einen "Startwert" und eine Aktualisierung alle 30 Minuten! Aber immerhin. Wenn man den Startwert nicht hat, weiß man auch nicht, bei welchem Ladestand man anfängt zu Laden. Auf 80% SoC zu kommen ist ja fast ein bisschen trivial, wenn man den Startwert des SoC hat.

80% SoC (oder irgendein anderer Wert unter 100%) ist deshalb interessant, weil es erstens als batterieschonend gilt, nicht vollzuladen (jetzt bitte keine Batteriemiete-Diskussion!), zweitens ein bestimmter SoC auch einen bestimmten Aktionsradius gewähleistet und es drittens einen gewissen Puffer gewährt, wenn man in mehreren Stufen Laden möchte. Z.B. SoCmin (bis zum Mindestradius), SoCnormal (schonend Laden, ohne Ballancing) und SoCmax (Vollladen, mit Ballancing).

Da ist der Phantasie fast keine Grenze gesetzt.

Mit der API wäre es vielleicht auch möglich, die ZOE aus dem Ladeschlaf zu wecken, ohne das Auto zu entriegeln. Das müßte man noch mal verifizieren. Denn es ist sehr ärgerlich, wenn man nachts heimkommt, dem Lademanagement sagt: "lade bis SoCmin sofort, dann bis SoCnormal, sobald genug PV-Strom da ist" und es wird nur der erste Befehl ausgeführt und der zweite wird von Fräulein ZOE tapfer verschafen.
Gruß

tango

________________________________________________________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 - ? ZOE Intens black
Der Tag wird kommen mit 100% elektrischem Fuhrpark und es wird nicht mehr lange dauern.
Benutzeravatar
tango
 
Beiträge: 744
Registriert: Mo 10. Mär 2014, 17:37
Wohnort: im heißen Süden

Anzeige

Nächste

Zurück zu ZOE - Allgemeine Themen

 
  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
  • Ähnliche Artikel im Blog

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste