Script MyFox

Discussion et échanges de scripts pour la box eedomus

Re: Script MyFox

Messagepar thevret » 21 Déc 2022 17:18

re re re bonjour
Et bien j'ai trouvé la solution. Il ne faut pas utiliser un périphérique http actionneur mais un périphérique http capteur.
Donc, c'est un beau cadeau de Noel, tout fonctionne.
Une petite question, le logo Myfox n'est pas accessible pour personnaliser les périphérique alors qu'il apparait quand on utilise la création par le store?
Je vous souhaite de bonnes fêtes.
Cordialement
thevret
 
Messages : 67
Inscription : 05 Déc 2018

Re: Script MyFox

Messagepar thevret » 22 Déc 2022 20:46

Bonjour
Patatrac, je reviens au point de départ. Au bout d'une journée, mon identifiant a été blacklisté.
Je vous rappelle mon cheminement. J'ai créé un périphérique alarme qui lui a fonctionné 2 jours. J'ai ensuite créé deux périphérique température et au bout de deux heures, mon identifiant Myfox s'est bloqué.
J'ai donc l'impression que le probleme n'est pas lié à l'obligation de changer le jeton toutes les heures car avant la mise en oeuvre des périphériques temperature, il n'y a pas eu d'anomalie. Le problème est survenu des que j'ai mis en oeuvre les périphériques température.
Je vous joins la description de mes deux periphériques et la remontée d'erreur de l'api.
Je vous joins également le code que j'utilise et qui intègre vos correctifs.
Si vos lumières peuvent m'éclairer...
Bonnes fêtes
Cordialement

<?php
// scjavascript:exec();ript créé par Pierre Pollet pour eedomus
// librement inspiré du script netatmo écrit par Connected Object
// généré à partir des données Myfox récupérées via Oauth
// basé sur l'auth "Resource Owner Password Credentials Grant"
// une auth basée sur un "authorization code" serait mieux, mais ce n'est faisable
// que par Connected Objects (à cause de la callback)
// encodage iso-8859-1 pour les accents
// Version 1 / 22 mai 2014 / 1ère version disponible
// Correctif pour traiter l'erreur du grant
$access_token = ''; // Ajouté par MERGUEZ07
saveVariable('access_token', $access_token); // Ajouté par MERGUEZ07
$refresh_token = ''; // Ajouté par RAR69
saveVariable('refresh_token', $refresh_token); // Ajouté par RAR69
//fin du correctif
//
$GLOBALS['api_url'] = 'https://api.myfox.me:443/v2/';
$api_url = 'https://api.myfox.me:443/v2/';
$ClientId ='d1cc97a9a69214a923f37846fe8d8c6a';
$ClientSecret='';
$getToken_url = 'https://api.myfox.me';
$UserName ='janny.thevret@gmail.com' ;
$UserPassword='';
$access_token='';
// on reprend le dernier refresh_token seulement s'il correspond au même code
$refresh_token = loadVariable('refresh_token');
$expire_time = loadVariable('expire_time');
// s'il n'a pas expiré, on peut reprendre l'access_token
if (time() < $expire_time)
{
$access_token = loadVariable('access_token');
//echo "re-utilisation du token existant";
}
// on a déjà un token d'accés non expiré pour le code demandée
if ($access_token == '')
{
if (strlen($refresh_token) > 1)
{
// on peut juste rafraichir le token
$grant_type = 'refresh_token';
$postdata = 'client_id='.$ClientId.'&client_secret='.$ClientSecret.'&grant_type='.$grant_type.'&refresh_token='.$refresh_token;
$url=$getToken_url;
}
else
{
// 1ère utilisation aprés obtention du code
$grant_type = 'password';
$postdata = 'client_id='.$ClientId.'&client_secret='.$ClientSecret.'&username='.$UserName.'&password='.$UserPassword.'&grant_type='.$grant_type;
$url=$getToken_url;
}
$response = httpQuery($url.'/oauth2/token', 'POST', $postdata);
$params = sdk_json_decode($response);
//var_dump($params);


if ($params['error'] != '')
{
die("Erreur lors de l'authentification: <b>".$params['error'].'</b> (grant_type = '.$grant_type.')');
}
// on sauvegarde l'access_token et le refresh_token pour les authentifications suivantes
if (isset($params['refresh_token']))
{
$access_token = $params['access_token'];
saveVariable('access_token', $access_token);
saveVariable('refresh_token', $params['refresh_token']);
saveVariable('expire_time', time()+$params['expires_in']);
}
else if ($access_token == '')
{
die("Erreur lors de l'authentification");
}

//extraire le code du site
$siteId=loadVariable('siteId');
if ($siteId == '')
{
$request="client/site/items";
$response = httpQuery($api_url.$request."?access_token=".$access_token, 'GET');
$params2 = sdk_json_decode($response);
$siteId=$params2['siteId'];
saveVariable('siteId', $siteId);
}
}

function sdk_myfox_query($request, $method = 'GET', $post = NULL, $return_xml = true)
{
$access_token= loadVariable('access_token');
if ($post == '')
{
$response = httpQuery($GLOBALS['api_url'].$request."?access_token=".$access_token, 'GET');
//echo "GET: ". $GLOBALS['api_url'].$request."?access_token=".$access_token;
}
else
{
$response = httpQuery($GLOBALS['api_url'].$request, 'POST', $post);
echo "GET: ". $GLOBALS['api_url'].$request."?access_token=".$access_token;
}

$json = sdk_json_decode($response);

if ($return_xml)
{
// permet d'avoir une mise en forme plus lisible dans un browser
sdk_header('text/xml');
echo jsonToXML($response);
}
else
{
return $json;
}
}
switch($_GET['action'])
{
case 'api_get':
$query = getArg('query');
sdk_myfox_query($query,'');
break;
case 'api_set':
$query = getArg('query');
sdk_myfox_query($query,'POST',"access_token=".$access_token);
break;
}
?>
Pièces jointes
message d'erreur api.png
message d'erreur api.png (533.52 Kio) Consulté 1147 fois
alarme myfox 2.png
alarme myfox 2.png (278.78 Kio) Consulté 1147 fois
alarme Myfox 1.png
alarme Myfox 1.png (222.44 Kio) Consulté 1147 fois
periphérique temperature 2.png
periphérique temperature 2.png (284.95 Kio) Consulté 1147 fois
periphérique temperature 1.png
periphérique temperature 1.png (259.16 Kio) Consulté 1147 fois
thevret
 
Messages : 67
Inscription : 05 Déc 2018

Re: Script MyFox

Messagepar thevret » 22 Déc 2022 21:18

Bonjour,
je viens de relire la documentation sur la gestion du jeton et sur le blocage de mon application. Il semble que j'ai utilisé plus de 1700 jetons. Ne croyez vous pas qu'il y a demande de jeton à chaque sollicitation du script?
Il s'agit d'une piste mais qui est peut être pas exacte.
A votre disposition
Cordialement
thevret
 
Messages : 67
Inscription : 05 Déc 2018

Précédent

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 74 invité(s)