Forum eedomus
http://forum.eedomus.fr/

Myfox Home Alarm et Eedomus
http://forum.eedomus.fr/viewtopic.php?f=50&t=3442
« Précédent  Page 3 sur 5  Suivant »
Auteur:  dede3828 [ 01 Fév 2016 21:35 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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....
Auteur:  Madoma73 [ 01 Fév 2016 22:00 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

les callbacks !
ça fait des années que je les ai demandés !!
je vais enfin pouvoir améliorer mon script :mrgreen:
Auteur:  dede3828 [ 01 Fév 2016 22:46 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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 ??
Auteur:  Madoma73 [ 02 Fév 2016 00:29 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

Oui, c'est ça,
Au lieu de faire du polling, on pourra avoir les évènements en temps réel.
Auteur:  dede3828 [ 02 Fév 2016 07:06 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

Cool j'avais bien compris lol
Auteur:  dede3828 [ 06 Juin 2016 13:13 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

toujours rien.... et plus de réponse de leur service.... je vais les relancer.
Auteur:  Madoma73 [ 11 Juil 2017 10:37 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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...
Auteur:  Idelectrik [ 11 Juil 2017 10:48 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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 ! ;)
Auteur:  xianghua [ 16 Juil 2017 08:44 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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
Auteur:  nicolascurnier [ 14 Oct 2017 08:49 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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
Auteur:  rover820i [ 14 Oct 2017 10:17 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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
Auteur:  nicolascurnier [ 14 Oct 2017 11:32 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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]
Auteur:  nicolascurnier [ 14 Oct 2017 11:48 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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...
Auteur:  rover820i [ 14 Oct 2017 13:02 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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
Auteur:  nicolascurnier [ 14 Oct 2017 14:41 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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
Auteur:  nicolascurnier [ 15 Oct 2017 18:55 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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 !!!!
Auteur:  nicolascurnier [ 17 Oct 2017 14:06 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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:
Auteur:  xianghua [ 25 Oct 2017 22:17 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

tu peux mettre des screenshot de ce que t'as fait? (en cachant les credentials biensur)
Auteur:  nicolascurnier [ 26 Oct 2017 12:16 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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é 25218 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é 25218 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é 25218 fois


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



voila, voila

merci pour ton aide

nicolas
Auteur:  xianghua [ 27 Oct 2017 00:24 ]
Sujet du message:  Re: Myfox Home Alarm et Eedomus

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é 25207 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é 25207 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';


;)
Page 3 sur 5 Le fuseau horaire est UTC+1 heure