Bonjour à tous,
J'ai trouvé comment renouveler automatiquement le token en exploitant une documentation de ENPHASE ici :
https://enphase.com/download/iq-gateway-local-apis-or-ui-access-using-tokenj'ai traduit le code python proposé dans la doc en PHP et intégré le code à la version 1.6 de envoy_metered
à la ligne 21, il suffit de commenter la ligne de Lecture du token depuis une variable eedomus
// $token = getArg('token');
Vers la ligne 264, juste avant le code :
$address_envoy = getArg('adress');
//https required
inserer le code ci-dessous et remplacez vos identifiants, mot de passe, Numero d'installation et durée de validité du token
Vous pouvez maintenant supprimer [VAR3] de tous les peripheriques Envoy_metered
Si vous essayez, merci de me faire un retour.
- Code : Tout sélectionner
// ***************************debut de modif renouvellement automatique du token *********************************************************
//entrer ci-dessous le nom d'utilisateur, le mot de passe et le numero de série de l'installation
$user='mon identifant';
$password='mon mot de passe';
$envoy_serial = 'mon numero de serie';
// entrez ci-dessous le nombre de jours de validité du token : 1 ou 365 suivant les cas
$validite = 365;
$expires_in = $validite*86400; // transformation en nombre de secondes pour coller au format de time
// test de la durée de validité du token
$expire_time = loadVariable('expire_time');
$token = loadVariable('token'); //chargement de la variable token
// ********** décommenter certaines des lignes ci-dessous pour tester la demande de token ************
// echo "expire_time : " .$expire_time , "\n";
// echo "token actuel : " .$token , "\n";
//die;
//$expire_time = time()-100 ; //expire_time dans le passé
//$token = NULL; //variable token nulle
// *******************************************************************
// si le token a expiré, ou s'il est vide
if (time() > $expire_time || $token == '') {
// ************************* demande d'un token **********************************
$header_recieved = array() ; // pour collecter les infos en cas d'erreur
$postdata = 'user[email]=' . $user .'&user[password]=' . $password;
// première requete pour le login
$response = httpQuery('http://enlighten.enphaseenergy.com/login/login.json?', 'POST', $postdata, FALSE, FALSE, FALSE, FALSE, &$header_received);
$params = sdk_json_decode($response);
if ($header_received['http_code']!= 200) //si la requete renvoie une erreur
{
die("Erreur lors du login , code: ".$header_received['http_code']. ", message : ".$params['message'] ); //identification de l'erreur et fin
}
$Session_ide = $params['session_id']; //on recupère le session ID pour la seconde requete
// les données de POST sont écrites directement au format json
$postdata = '{"session_id":"' .$Session_ide .'", "serial_num": "' .$envoy_serial .'", "username": "' .$user .'"}';
$header_recieved = array(); // pour collecter les infos en cas d'erreur
// seconde requete pour la demande du token
$token = httpQuery('http://entrez.enphaseenergy.com/tokens', $action = 'POST', $post = $postdata, $oauth_token = NULL, $headers = array('Content-type:application/json'), FALSE, FALSE, &$header_received);
// si pas d'erreur, la reponse ne contient que le token
if ($header_received['http_code']!= 200) //si la requete renvoie une erreur
{
$params = sdk_json_decode($token);
die("Erreur lors de la demande de token, code: ".$header_received['http_code']. ", message : ".$params['message'] ); //identification de l'erreur
}
//*************************************************************************************
}
// on sauvegarde le token pour les authentifications suivantes
saveVariable('token', $token);
saveVariable('expire_time', time() + $expires_in);
// **************************************** fin de modif **********************************************************************