Myfox Home Alarm et Eedomus

Discussion et échanges de scripts pour la box eedomus

Re: Myfox Home Alarm et Eedomus

Messagepar dede3828 » 01 Fév 2016 21:35

xianghua a écrit:
dede3828 a écrit:Réponse super rapide du support API myfox :

"Bonjour, il sera possible d'activer un calback http qui remontera les différents événements d'une installation à un tiers utilisant l'api (dans votre cas eedomus).
En attendant, vous pouvez connecter notre système avec d'autres systèmes reposant sur des API en utilisant IFTTT https://ifttt.com/myfox_security"

Ç est nikel !!! Vivement que l api sorte !


Ce sera effectif aussi sur la Home Control?


Je ne peu pas te dire....
dede3828
 
Messages : 308
Inscription : 07 Oct 2015

Re: Myfox Home Alarm et Eedomus

Messagepar Madoma73 » 01 Fév 2016 22:00

les callbacks !
ça fait des années que je les ai demandés !!
je vais enfin pouvoir améliorer mon script :mrgreen:
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Re: Myfox Home Alarm et Eedomus

Messagepar dede3828 » 01 Fév 2016 22:46

Madoma73 a écrit:les callbacks !
ça fait des années que je les ai demandés !!
je vais enfin pouvoir améliorer mon script :mrgreen:


Juste pour être sur, les callbacks... C est bien l api myfox qui envoie des requêtes https à chaque actions ??
dede3828
 
Messages : 308
Inscription : 07 Oct 2015

Re: Myfox Home Alarm et Eedomus

Messagepar Madoma73 » 02 Fév 2016 00:29

Oui, c'est ça,
Au lieu de faire du polling, on pourra avoir les évènements en temps réel.
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Re: Myfox Home Alarm et Eedomus

Messagepar dede3828 » 02 Fév 2016 07:06

Cool j'avais bien compris lol
dede3828
 
Messages : 308
Inscription : 07 Oct 2015

Re: Myfox Home Alarm et Eedomus

Messagepar dede3828 » 06 Juin 2016 13:13

toujours rien.... et plus de réponse de leur service.... je vais les relancer.
dede3828
 
Messages : 308
Inscription : 07 Oct 2015

Re: Myfox Home Alarm et Eedomus

Messagepar Madoma73 » 11 Juil 2017 10:37

bon, les callbacks ne sont jamais arrivés sur l'api Myfox, par contre on peut les avoir via IFTTT et les notifications sont instantanées...
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Re: Myfox Home Alarm et Eedomus

Messagepar Idelectrik » 11 Juil 2017 10:48

Ah..? Un petit tuto rapide par hasard ?
Ca m’embête depuis un moment d'avoir mes 2 box indépendantes, alors qu'elles pourraient communiquer, et compléter mes scénarios ! ;)
Idelectrik
 
Messages : 53
Inscription : 26 Août 2012

Re: Myfox Home Alarm et Eedomus

Messagepar xianghua » 16 Juil 2017 08:44

Idelectrik a écrit:Ah..? Un petit tuto rapide par hasard ?
Ca m’embête depuis un moment d'avoir mes 2 box indépendantes, alors qu'elles pourraient communiquer, et compléter mes scénarios ! ;)


Utilises les webhooks sur IFTTT pour MyFox Alarm
xianghua
 
Messages : 305
Inscription : 11 Juil 2015

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 14 Oct 2017 08:49

bonjour a tous !
nouveau sur le site et nouvel utilisateur de la box eedomus, je ne suis encore pas très familiarisé avec le language utilisé ici, mais je vais m'accrocher !!!!

Parmis les nombreuses problematiques que je rencontre, voici celle qui concerne l'intégration de Evology Zen dans eedomus...

J'ai suivi le tuto de domo-blog sans trop de probleme jusqu'à la création et l'intégration du script dans eedomus (modif du script avec Client Id, Client secret, username te password).
Mon script apparait dans ma eedomus...

l'étape suivante semble consister à récupérer l'Id de l'installation, avec la ligne :
http://192.168.0.16/script/?exec=myfox_ ... site/items

Pb ; Sous Firefox/ubuntu je n'ai aucun retour ???? page blanche...donc pas de nom de "SiteId".. et je ne peux donc pas passer à l'étape suivante...

si quelqu'un peut m'aider...

et une confirmation concernant la ligne à modifier dans le script :
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@dev.myfox.me';
les "." avant et après $ClientId et $ClientSecret sont ils bien à conserver ?

merci
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar rover820i » 14 Oct 2017 10:17

Salut,

Les . sont bien à conserver.

Essaie de cliquer sur ce lien :

http://192.168.0.16/script/?exec=myfox_oauth.php&action=api_get&query=/client/site/items
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 14 Oct 2017 11:32

merci pour ta réponse rapide.

le lien fonctionne et m'a permis de récupérer le SiteId. top !

Toutefois, bloque à l'étape suivante :
J'ai créé sous eedomus un péripherique de type "capteur http", et rentré les infos.

mais j'ai un message d'erreur :
Le 14 oct. à 12:11 : Etat Alarme Gestion Myfox en erreur: [Impossible de parser le XML].

A noter, l'interface du capteur http ne se présente pas exactement comme celui de domo-blog, notamment je n'ai pas le champ "Canaux liés : Gestion Myfox".

Est ce mon script qui n'est pas bon ? ou le choix du capteur http ?

encore merci pour votre aide !!!!

Ci apres mon script (j'ai modifié ci dessous les elements confidentiels par xxx ):
]<?php

// script 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


$GLOBALS['api_url'] = 'https://api.myfox.me:443/v2/';
$api_url = 'https://api.myfox.me:443/v2/';
$ClientId ='<votre client id>';
$ClientSecret='<votre client secret>';
$getToken_url = 'https://'.bad9b22bad9da4006f81fc23479xxxx.':'.T2gecRnJTDE5aB3Q74bnkqc9Kc0Oxxxx.'@dev.myfox.me';
$UserName ='xxxxxxxxx' ;
$UserPassword='xxxxxxxx';
$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;
}
?>[/i][/i][/i][/color]
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 14 Oct 2017 11:48

une précision à propos du script présent dans eedomus :

eedomus SCRIPT
Liste de vos scripts eedomus:
myfox_oauth.php Exécuter / Editer / Supprimer


Lorsque je l’exécute , il ouvre une fenêtre blanche sous Firefox avec l' adresse :
http://192.168.0.16/script/?exec=myfox_oauth.php

Je n'ai aucun indication sur la bonne exécution du script...
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar rover820i » 14 Oct 2017 13:02

Tu as fait une erreur. Tu dois conserver la variable $getToken_url en l'état, telle qu'elle est.

Ce sont les variables

Code : Tout sélectionner
$ClientId ='<votre client id>';
$ClientSecret='<votre client secret>';


qui doivent être modifiées avec les valeurs que tu as récupérées
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 14 Oct 2017 14:41

ok, j'ai modifié le script comme suit :

$GLOBALS['api_url'] = 'https://api.myfox.me:443/v2/';
$api_url = 'https://api.myfox.me:443/v2/';
$ClientId ='bad9b22bad9da4006f81fc234796xxxx';
$ClientSecret='T2gecRnJTDE5aB3Q74bnkqc9Kc0Oxxxx';
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@dev.myfox.me';
$UserName ='nicolascurnier@free.fr' ;
$UserPassword='xxxxxx';
$access_token='';

quand j'execute le script, il ouvre une page blanche sur firefox (http://192.168.0.16/script/?exec=myfox_oauth.php)

et toujours le même message ;
Le 14 oct. à 15:32 : Etat Alarme Gestion Myfox en erreur: [Impossible de parser le XML]. Aperçu du contenu.

comme je te le disais dans mon précédent post, la présentation des paramétres du périphérique Http Capteur ne mentionne pas les rubriques (comme celui de domo-blog);
- affichage personnalisé : Alarme
- canaux liés ; Gestion myfox

j'ai du encore faire une ânerie.... merci pour ta patience
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 15 Oct 2017 18:55

bon j'ai un peu avancé pendant le we...

- le paramétrage du capteur http présente bien la rubrique "canaux liés"... il fallait cocher dans parametres expert, "rattacher à"...

j'ai toujours le message d'erreur "impossible de parser le xml", mais j'ai testé le script dans la config du périphérique et voila le résultat... <statuslabel> est disarmed ! et quand j'arme mon alarme via le site de myfox, le resultat est armed.

<?xml version="1.0" encoding="ISO-8859-1"?>
<root><status>
OK
</status>
<timestamp>
1508089045
</timestamp>
<payload>
<status>
1
</status>
<statusLabel>
disarmed
</statusLabel>
</payload>
</root>

j'en déduis que malgré le message d'erreur la communication se fait...
toutefois je n'ai toujours pas l'affichage de l'etat... pas de relais vers les valeurs

j'ai essaye l 'étape suivante "http actionneur" pour activer ou desactiver l'alarme, l'action semble fonctionner sur sur eedomus mais n'est pas relayer sur myfox...

grrrrrr c bien compliqué tout ca !!!!
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 17 Oct 2017 14:06

ya personnnnnneeeee qui veut m'aideeeeeerrrrr.... bouhhhhhhhhh :cry: :cry: :cry: :cry: :cry: :cry:

Depuis l'installation :
- 2 module ewave pour gestion fils pilote.... ok.
- 1 prise en gestion avec regles... ok

en revanche, les intégration de nouveaux matériels... je n 'y arrive pas...

- integration alarme Myfox (voir mes messages precedents...)

- integration volet RTS somfy
* création de périphérique en automatique mais les actions (ouvrir/fermer) ne sont pas exécutées.

- pour le portail (somfy avec telecommande), il n 'est pas détecté...

- detecteur fumée Chacon 34131, pas détecté...


help !! :cry: :cry: :cry: :cry:
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar xianghua » 25 Oct 2017 22:17

tu peux mettre des screenshot de ce que t'as fait? (en cachant les credentials biensur)
xianghua
 
Messages : 305
Inscription : 11 Juil 2015

Re: Myfox Home Alarm et Eedomus

Messagepar nicolascurnier » 26 Oct 2017 12:16

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
Screenshot from 2017-10-26 13-01-43.png (47.59 Kio) Consulté 24855 fois


les valeurs sont ;
Screenshot from 2017-10-26 13-08-25.png
Screenshot from 2017-10-26 13-08-25.png (28.7 Kio) Consulté 24855 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
Screenshot from 2017-10-26 13-10-46.png (35.45 Kio) Consulté 24855 fois


valeurs ;
Screenshot from 2017-10-26 13-12-47.png
Screenshot from 2017-10-26 13-12-47.png (48.5 Kio) Consulté 24855 fois



voila, voila

merci pour ton aide

nicolas
nicolascurnier
 
Messages : 31
Inscription : 14 Oct 2017

Re: Myfox Home Alarm et Eedomus

Messagepar xianghua » 27 Oct 2017 00:24

Déjà tu peux fusionner capteur et actionneur.

Suffit de créer un actionneur, et de mettre les paramètres avancées ton url de requête et ton path

Capture d’écran 2017-10-27 à 01.14.10.png
Capture d’écran 2017-10-27 à 01.14.10.png (67.32 Kio) Consulté 24844 fois


Puis dans les valeurs ceci

Capture d’écran 2017-10-27 à 01.16.56.png
Capture d’écran 2017-10-27 à 01.16.56.png (81.31 Kio) Consulté 24844 fois


Comme ça ton actionneur se mettra à jour et ça t'évite deux périphériques.

Sinon remplaces dans ton script la ligne :

Code : Tout sélectionner
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@dev.myfox.me';


Par

Code : Tout sélectionner
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@api.myfox.me';


;)
xianghua
 
Messages : 305
Inscription : 11 Juil 2015

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

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