xianghua a écrit:tu peux mettre des screenshot de ce que t'as fait? (en cachant les credentials biensur)
Bonjour xianghua
Merci de t'intéresser à mon pb...
J ai résolu pas mal de choses depuis une semaine. Un pb persiste toutefois, à savoir, la connection avec l alarme myfox.
J ai toujours le message d erreur "impossible de parser le xml" et il n y a pas de retour d état de l alarme, ni de possibilité de gestion de l alarme...
Voilà mon script ;
<?php
$GLOBALS['api_url'] = 'https://api.myfox.me:443/v2/';
$api_url = 'https://api.myfox.me:443/v2/';
$ClientId ='bad9b22bad9da4006f81fc234xxxxx';
$ClientSecret='T2gecRnJTDE5aB3Q74bnkqc9Kc0xxxx';
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@dev.myfox.me';
$UserName ='xxxxx' ;
$UserPassword='xxxxxx';
$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 = 'grant_type='.$grant_type.'&refresh_token='.$refresh_token;
$url=$getToken_url;
}
else
{
// 1ère utilisation aprés obtention du code
$grant_type = 'password';
$postdata = 'grant_type='.$grant_type.'&username='.$UserName.'&password='.$UserPassword;
$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."?access_token=".$access_token, '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_post':
$query = getArg('query');
sdk_myfox_query($query,'POST');
break;
}
?>
Comme indiqué dans le domo-blog j ai ajouté un périphérique http capteur pour l état de l alarme et un actionneur pour gérer l état (aucun ne fonctionne).
ci dessous http capteur (si l'image ne charge pas, voir fichier joint)
- Screenshot from 2017-10-26 13-01-43.png (47.59 Kio) Consulté 26492 fois
les valeurs sont ;
- Screenshot from 2017-10-26 13-08-25.png (28.7 Kio) Consulté 26492 fois
A noter ; qd je teste le script (chemin xpath / tester) j'ai un retour de valeur "disarmed" ou "armed" en fonction de l'état réel de l'alarme... ca à donc l'air de fonctionner mais les valeurs ne sont reprises par eedomus...
ci dessous http actionneur
- Screenshot from 2017-10-26 13-10-46.png (35.45 Kio) Consulté 26492 fois
valeurs ;
- Screenshot from 2017-10-26 13-12-47.png (48.5 Kio) Consulté 26492 fois
voila, voila
merci pour ton aide
nicolas