Voici l'état de mon script actuel (plus un POC qu'autre chose
![Embarrassé :oops:](./images/smilies/icon_redface.gif)
) :
- Code : Tout sélectionner
<?
$url = "https://www.services.renault-ze.com/api/user/login";
$post = '{"username": "<MAIL_SERVICE_RENAULT>","password": "<PWD_SERVICE_RENAULT>"}';
//agent de mon navigateur pour faire moins louche :
$headers = array("Content-Type: application/json","User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36");
$response = httpQuery($url, 'POST', $post,NULL,$headers,true);
$json = sdk_json_decode($response);
$url = "https://www.services.renault-ze.com/api/vehicle/<NUM_VEHICULE_QUI_DEBUTE_PAR_VF>/battery";
$headers = array("Content-Type: application/json","User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36","authorization: Bearer ".$json['token']);
$response = httpQuery($url, 'GET', NULL,NULL,$headers,true);
$json = sdk_json_decode($response);
if ($json['charging']) {
$charge=1;}
else
{
$charge=0;}
if ($json['plugged'])
{$branche=1;}
else
{$branche=0;}
setValue(<NUM_PERIPH_NIV_CHARGE>,$json['charge_level']);
setValue(<NUM_PERIPH_NB_KM>,$json['remaining_range']);
setValue(<NUM_PERIPH_DATE_MAJ>,date('d/m/Y H:i:s',$json['last_update']/1000));
setValue(<NUM_PERIPH_ETAT_BRANCHEMENT>,$branche);
setValue(<NUM_PERIPH_ETAT_CHARGE>,$charge);
?>
les <BLABLABLA> sont à remplacer par vos données perso bien sûr...
Je lance le script depuis un périphérique http qui appelle l'API Renault (1 pour le moment)
Un autre périphérique d'état se charge de la demande de refresh et c'est celle ci qui est appellée à intervalle régulier par une règle.
Pour les métriques, j'ai 5 périphériques d'état :
les <BLABLABLA> sont à remplacer par vos données perso bien sûr...
Je lance le script depuis un périphérique http qui appelle l'API Renault (1 pour le moment)
Un autre périphérique d'état se charge de la demande de refresh et c'est celle ci qui est appellée à intervalle régulier par une règle.
Pour les métriques, j'ai 5 périphériques d'état :
PERIPH_NIV_CHARGE (nombre décimal)
PERIPH_NB_KM (nombre décimal)
PERIPH_DATE_MAJ (texte)
PERIPH_ETAT_BRANCHEMENT (liste de valeur 0=débranchée, 1=branchée)
PERIPH_ETAT_CHARGE (liste de valeur 0=pas en charge, 1=en charge)
La date correspond à la date réelle de remontée d'info de la voiture. J'ai d'ailleurs un peu galéré pour la convertir dans un format lisible.
Pistes d'améliorations :
- rendre générique en variabilisant les données en entrée,
- utiliser le numéro d'ordre du véhicule pour déterminer son numéro VFxxx (gestion multi),
- mettre en cache les tokens de session et se reconnecter qu'en cas de besoin,
- raffraîchir les périphériques qu'en cas de modification (de la date) => La date de maj eedomus se rapprochera en plus de celle de la maj de la voiture.
Pour finir, evitez de pilonner les serveurs de Renault si on veut profiter de ce hack quelques temps. Les mises à jours ne sont pas fréquentes de toutes façons (charge et déplacement de la voiture).