Scripts de secours ZE

Suite aux déboires actuels avec Renault, mon fils a trouvé un moyen pour récupérer quelques infos (Charge Batterie, et km range au minimum sur une Zoé !)
Tout d’abord, dans jeedom, il faut créer 3 variables:
« zoe_kamereon_id » à laisser vide
« zoe_token_gigya » à laisser vide
« zoe_vin » à renseigner avec votre n° de Vin

Il y a 2 scripts à renommer en .php :
« zoe_token » , à lancer toutes les heures à minima, (je n’ai pas essayé des temps plus longs!)

<?php
require_once "/var/www/html/core/php/core.inc.php";

// définitions
define("USERNAME",          "email_renault");
define("PASSWORD",          "passwork_renault");
define("GIGYA_APIKEY",      "3_4LKbCcMMcvjDm3X89LU4z4mNKYKdl_W0oD9w-Jvih21WqgJKtFZAnb9YdUgWT9_a");
define("GIGYA_ROOT",        "https://accounts.eu1.gigya.com");
 
// on se connecte au SAP de Gigya
$url = GIGYA_ROOT . "/accounts.login?ApiKey=" . urlencode(GIGYA_APIKEY) . "&loginID=" . urlencode(USERNAME) . "&password=" . urlencode(PASSWORD);
$curl = curl_init($url);
$aCurlOptions = array
    (
        CURLOPT_RETURNTRANSFER    => true
    );
curl_setopt_array($curl, $aCurlOptions);
$ret = curl_exec($curl);
curl_close($curl);
$gigya = json_decode($ret);
$cookie = $gigya->sessionInfo->cookieValue;

if(!$cookie)
{
    exit();
}
// on récupère les infos du compte
$url = GIGYA_ROOT . "/accounts.getAccountInfo?ApiKey=" . urlencode(GIGYA_APIKEY) . "&login_token=" . urlencode($cookie);
$curl = curl_init($url);
$aCurlOptions = array
    (
        CURLOPT_RETURNTRANSFER    => true
    );
curl_setopt_array($curl, $aCurlOptions);
$ret = curl_exec($curl);
curl_close($curl);
$person = json_decode($ret);
$personId = $person->data->personId;
echo "Id person Gigya : $personId<br>";

if(!$personId)
{
    exit();
}
// on récupère le token
$url = GIGYA_ROOT . "/accounts.getJWT?ApiKey=" . urlencode(GIGYA_APIKEY) . "&login_token=" . urlencode($cookie) . "&fields=data.personId,data.gigyaDataCenter&expiration=4000";
$curl = curl_init($url);
$aCurlOptions = array
    (
        CURLOPT_RETURNTRANSFER    => true
    );
curl_setopt_array($curl, $aCurlOptions);
$ret = curl_exec($curl);
curl_close($curl);
$token = json_decode($ret);
$idToken = $token->id_token;

if(!$idToken)
{
    exit();
}
// on écrit dans la variable
scenario::setData("zoe_token_gigya",$idToken);
scenario::setData("zoe_kamereon_id",$personId);

echo $idToken;
 ?>

et
« zoe_battery_status » , à lancer toutes les 5 mn

<?php
require_once "/var/www/html/core/php/core.inc.php";

$curl = curl_init("https://api-wired-prod-1-euw1.wrd-aws.com/commerce/v1/accounts/" . scenario::getData("zoe_kamereon_id") . "/kamereon/kca/car-adapter/v2/cars/" . scenario::getData("zoe_vin") . "/battery-status?country=FR");
$aCurlOptions = arrayc
    (
        CURLOPT_RETURNTRANSFER    => true,
        CURLOPT_HTTPHEADER        => array
        (
            "apiKey: YjkKtHmGfaceeuExUDKGxrLZGGvtVS0J", 
            "x-gigya-id_token: " . scenario::getData("zoe_token_gigya")
        )
    );
curl_setopt_array($curl, $aCurlOptions);
$ret = curl_exec($curl);
curl_close($curl);
$bat = json_decode($ret);

if(!$bat->data->attributes->batteryLevel)
{
  echo "erreur";
  exit(0);
}
// on écrit dans le virtuel
cmd::byString("#[Zoé][zoe_infos][battery_level]#")->event((int)$bat->data->attributes->batteryLevel);
$time = new DateTime($bat->data->attributes->timestamp);
cmd::byString("#[Zoé][zoe_infos][battery_time]#")->event($time->format("d/m/Y H:i:s"));
cmd::byString("#[Zoé][zoe_infos][battery_temp]#")->event((int)$bat->data->attributes->batteryTemperature);
cmd::byString("#[Zoé][zoe_infos][battery_km]#")->event((int)$bat->data->attributes->batteryAutonomy);
cmd::byString("#[Zoé][zoe_infos][plugged]#")->event((int)$bat->data->attributes->plugStatus);
$charging = (float)$bat->data->attributes->chargingStatus;
cmd::byString("#[Zoé][zoe_infos][charging]#")->event($charging);
// si on est en charge on récupère les autres infos
$remain = "";
$power = 0;

if($charging == 1.0)
{
  $remainMin = $bat->data->attributes->chargingRemainingTime;
  $remain = round($remainMin/60) . "h" . $remainMin%60;
  $power = $bat->data->attributes->chargingInstantaneousPower;
}
cmd::byString("#[Zoé][zoe_infos][charging_remain]#")->event($remain);
cmd::byString("#[Zoé][zoe_infos][charging_power]#")->event($power);

echo "Date dernière récup : " . $time->format("d/m/Y H:i:s");
?>

Pour celui-ci, il faut créer un virtuel qui reprends les commandes à remplir (à partir de la ligne 25)
Je fourni ces scripts (avec l’accord de mon fils qui n’a pas le temps) sans aucune assistance, pour usage en dépannage pour ceux qui maîtrisent les script et leurs usages.
ça tourne depuis plusieurs jours chez moi, et me permet de piloter la charge.
Mais ça serait mieux qu’ @anto35 fasse un correctif à son plugin !
Bonne journée !

4 « J'aime »

Merci beaucoup à toi.

Je viens de pousser deux mises à jour du plugin pour beta et stable.

J’étais persuadé que Renault avait totalement désactivé les anciennes API. Ils avaient en fait juste supprimé un service dans lequel le plugin venait récupérer les API Keys.

J’ai quand même l’impression que c’est de plus en plus hasardeux leur travail chez Renault. J’ai du mal à comprendre où ils vont.

3 « J'aime »

Génial, ça fonctionne à nouveau ! Un très grand merci ! :clap: :pray:

Tout le mérite en revient à @ach65 et son fils !

3 « J'aime »

Hello
Testé vite fait après maj stable : Ca remonte de nouveau pour Megane EV60 :ok_hand:
Bravo à vous 3 :clap:

Bonjour,
Pas possible d’installer le plugin, j’ai le message suivant sur le Market:
Ce plugin est pour le moment privé ou exclusivement en beta. Vous devez attendre qu’il devienne public pour y accèder

Bonjour,
Trés content qu’@anto35 ait pu mettre a jour son plugin !
Mais visiblement, il y a une dégradation du service de Renault : je suis resté longtemps (en juin) sans la remontée % de charge, et maintenant, le rythme des remontées d’info peut être de plusieurs heures aprés usage de la voiture, en charge, ça a l’air de remonter toutes les 5mn (avec le script), donc on peut arrêter la charge (pour moi j’arrête à 95% )
Mon fils a trouvé des infos sur ce lien :
https://renault-api.readthedocs.io/en/latest/endpoints.html#battery-status

Bonjour,
Vous indiquez que vous arrivez à arrêter la charge de votre VE à 95%.
Comment procédez vous, moi avec une Zoé 2 je n’arrive pas à stopper la charge.
Le commande Charge Off ne fonctionne pas.
En vous remerciant par avance de votre aide.