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