API ZE. Services über Drittanwendungen (z.B. fhem) anzapfen
API ZE. Services über Drittanwendungen (z.B. fhem) anzapfen
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
Danach müssen ziemlich viele User-Attribute erstellt werden. Einfach mit viel Kopierpaste nach "userattr" kopieren:
Danach werden die Attribute mit Leben gefüllt:
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.
Mit
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
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
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
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
Nachdem das Device nun konfiguriert ist, kann man mitset storeKeyValue username <DeinUsername>
set storeKeyValue password <DeinPasswort>
den Akkustand, Reichweite, Ladezustand etc. abfragenget zoe batteryStatus
Mit
bekommt man Rückmeldung, wann das letzte Mal vorklimatisiert wurde.get zoe ac_last
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 einem Model 3 SR+
Anzeige
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 150
- Registriert: Mo 26. Sep 2016, 14:03
- Hat sich bedankt: 6 Mal
- Danke erhalten: 40 Mal
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 362
- Registriert: Mo 6. Feb 2017, 21:05
- Wohnort: St. Georgen im Attergau
- Hat sich bedankt: 22 Mal
- Danke erhalten: 87 Mal
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
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
ZOE Intens seit 2017, Enyaq iv80 seit 2021
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
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?
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?
Tesla S85 CPO seit August 2018 (ersetzt TM3-Reservierung) / Zoe R90 von 03/17 bis 09/18 / verbrennerfrei
Strom: Bürgerwerke
Strom: Bürgerwerke
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 950
- Registriert: Mo 10. Mär 2014, 16:37
- Wohnort: im heißen Süden
- Danke erhalten: 8 Mal
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.
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
07/2019 "alte ZOE mit 41 kWh Batterie
tango
___________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 ZOE Intens black
07/2019 "alte ZOE mit 41 kWh Batterie
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
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):
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
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]);
Bei Fragen einfach melden

Tesla S85 CPO seit August 2018 (ersetzt TM3-Reservierung) / Zoe R90 von 03/17 bis 09/18 / verbrennerfrei
Strom: Bürgerwerke
Strom: Bürgerwerke
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 950
- Registriert: Mo 10. Mär 2014, 16:37
- Wohnort: im heißen Süden
- Danke erhalten: 8 Mal
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.
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
07/2019 "alte ZOE mit 41 kWh Batterie
tango
___________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 ZOE Intens black
07/2019 "alte ZOE mit 41 kWh Batterie
Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 3726
- Registriert: Mi 16. Nov 2016, 20:14
- Hat sich bedankt: 304 Mal
- Danke erhalten: 760 Mal
Das geht nur mit Interpolation, da der Ladezustand nur zyklisch alle 30 Minuten während des Ladens (sowie zum Start und Ende) übermittelt wird.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.
Aber wozu sollte man das überhaupt tun? Wenn der Akku voll ist wird abgeschaltet.

Re: API ZE. Services über Drittanwendungen (z.B. fhem) anzap
- Profil
- Beiträge: 950
- Registriert: Mo 10. Mär 2014, 16:37
- Wohnort: im heißen Süden
- Danke erhalten: 8 Mal
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.
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
07/2019 "alte ZOE mit 41 kWh Batterie
tango
___________________________________
4/2014 - 12/2014 10.000 km Twizy
12/2014 ZOE Intens black
07/2019 "alte ZOE mit 41 kWh Batterie
Anzeige
-
- Vergleichbare Themen
-
-
Anleitung zur Bedienung der Easee Cloud API
von fischi » Di 10. Aug 2021, 12:26 » in Ladeequipment -
Letzter Beitrag von fischi
Do 14. Apr 2022, 06:33
-
Anleitung zur Bedienung der Easee Cloud API
-
-
go-e Charger Überschussladen mit V2 API und "amx" Befehl
von ecar23 » Fr 10. Sep 2021, 09:35 » in Ladeequipment -
Letzter Beitrag von C-zero75
Do 24. Mär 2022, 23:24
-
go-e Charger Überschussladen mit V2 API und "amx" Befehl
-
-
Go-e Charger - API Änderung in der Hardwareversion 3 - Parameter amx
von JLorenz86 » Fr 17. Sep 2021, 09:43 » in Private Lade-Infrastruktur -
Letzter Beitrag von ecar23
So 19. Sep 2021, 12:27
-
Go-e Charger - API Änderung in der Hardwareversion 3 - Parameter amx
-
-
go-ECharger API - Wie viele Phasen
von Schneemann2 » Do 4. Nov 2021, 23:27 » in Private Lade-Infrastruktur -
Letzter Beitrag von Schneemann2
Fr 5. Nov 2021, 19:31
-
go-ECharger API - Wie viele Phasen
-
-
Gibt es eine kostenlose offizielle globale API für EV-Ladestationen?
von sandros87 » So 28. Nov 2021, 22:23 » in Ladesäulen / Status -
Letzter Beitrag von GrillSgt
Di 28. Dez 2021, 12:18
-
Gibt es eine kostenlose offizielle globale API für EV-Ladestationen?