Hello,
Voulant jouer avec le V5 et google, le support m’a annoncé que Smart Home ne supporte pas la V5 pour le moment.
Comme j’avais envie de tester, je me suis dit que Google savait commander la v4 et que la v4 avait un API.
Petit problème, la v5 est passée à un API Rest, je trouve ça cool MAIS les push de la v4 ne savent pas générer un body.
Donc là il fallait un traducteur. C’est assez simple en PHP mais il faut avoir installé un serveur web avec PHP, un wamp, avoir un NAS synology… beaucoup de possibilités.
En premier il faut avoir configuré Smart Home de GCE. Il faut donc créer en entrée dans smart home.
Ici j’ai donc « Test » qui allume ou éteint le relais 8 (j’aurais voulu une sortie virtuelle mais on n’y a pas accès).
Ensuite préparer la page web. dans un folder /IPX800V4versV5 , je mets ce fichier index.php dont voici le code : !! modifier la clef API, l’IP de vitre v5 et les id des relais (moi ca commence à 65536).
<?php
// $_GET["Statut"] contient le statut. !! Uniquement 'true' ou 'false'
// $_GET["NumeroRelais"] contient le numéro du relais controllé (donc de 1 à 8)
//Construction de l'URL avec la clef API
$API_KEY = "xxxxxxx"; //la clef API
$IPX800_IP = "192.168.xxx.xxx"; //l'addresse IP
$Relay=[65536,65537,65538,65539,65540,65541,65542,65542]; // les id des 8 relais (/api/core/io pour les voir)
$IDRelay=$Relay[$_GET["NumeroRelais"]-1]; // -1 car les tableaux en php commencent à 0
//Construction de l'URL avec la clef API et l'ID du relais
$IPX800_API = "http://$IPX800_IP/api/core/io/$IDRelay?ApiKey=$API_KEY";
//Construction de la requête
$ch = curl_init($IPX800_API);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
$data = '{"on":' . $_GET["Statut"] . '}';
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
echo $data;
//Exécution de la requête. Pas de retour car le push ne sait pas les gérer
curl_exec($ch);
?>
Ensuite préparer le push qui va attaquer cette page.
Créer un push qui pointe vers le serveur qui contient votre page php et
dans les URL j’ai (!! un push par relais, modifier NumeroRelais=1 vers le numéro de relais contôlé)
- /IPX800V4versV5/?NumeroRelais=1&Statut=on
- /IPX800V4versV5/?NumeroRelais=1&Statut=on
Maintenant créer un scénario sur le V4 toujours :
- Evénement : Relais (8)
- Action : on/off
- Résultat : push (celui que vous venez de créer)
OK Google fonctionne maintenant
N’hésitez pas si vous avez des questions.
Guy