Après la découverte du H801 pour contrôler vos LEDs RGB en WiFi, intéressons-nous à leur activation à distance, via une commande lancée à votre assistant Google Home dans le salon : allume LEDéteint LED, etc.

Il faut avant toute chose préciser que le H801 semble se mettre en veille au bout d’un certain temps d’inactivité. La solution ? Lui envoyer un ping toutes les 2 mn via le Crontab du Raspberry Pi dédié à la domotique, ainsi il ne s’endormira pas :

*/2 * * * * sudo ping -c2 192.168.1.192 &> /dev/null

Ici, nous interrogeons le module placé sur 192.168.1.192 toutes les 2 minutes.
Pour la commande des LEDs, je vous invite à récupérer les commandes décrites dans la découverte du H801, tout s’y trouve.

Sur notre serveur Raspberry domotique, nous allons installer un script php dans /var/www/html, ledon.php par exemple :

<?php
exec('sudo ping -c4 192.168.1.192');
exec('sudo sendip -p ipv4 -p udp -us 30978 -ud 30977 -d 0xfbebffffff00005c59d6000 -v 192.168.1.192');
exec('sudo ping -c4 192.168.1.192');
exec('sudo sendip -p ipv4 -p udp -us 30978 -ud 30977 -d 0xfbebffffff00005c59d6000 -v 192.168.1.192');
?>

Ici, nous réveillons encore plus le contrôleur sur 192.168.1.192 avec 4 pings, on lui transmet la trame d’allumage (LEDs blanches ici) et on recommence, histoire de bien insister lourdement. Remplacez bien entendu l’IP par la votre.

Pour l’extinction, créons ledoff.php par exemple :

<?php
exec('ping -c 2 192.168.1.192');
exec('sudo sendip -p ipv4 -p udp -us 30978 -ud 30977 -d 0xfbeb00000000005c59d6000 -v 192.168.1.192');
exec('ping -c 2 192.168.1.192');
exec('sudo sendip -p ipv4 -p udp -us 30978 -ud 30977 -d 0xfbeb00000000005c59d6000 -v 192.168.1.192');
?>

Pareil, toujours des tas de ping pour réveiller la bestiole, et pensez toujours à remplacer l’IP par la bonne IP.

Maintenant, créons un compte sur le site IFTTT et venons créer une Applet :

Ici nous donnons les différentes possibilités d’allumer nos LEDs, via Google Assistant.

Voyons maintenant la requête à envoyer sur notre Raspberry Pi domotique via la fonctionnalité WEB REQUEST :

Vous l’aurez compris, il faudra :

  • disposer d’une IP fixe ou d’un dyndns car IFTTT va appeler une IP publique, hélas, votre Google Home ne pourra appeler une IP locale directement.
  • ouvrir un port public dédié (par ex 8080) et le faire pointer sur le port 80 de votre Raspberry Pi, celui de son serveur Apache2
  • pointer vers http://votre_ip_fixe:port/ledon.php
  • choisir la méthode POST sur IFTTT

Sauvegardez l’applet et testez : Dis Google, allume LED

Si tout fonctionne, vos LEDs s’activent, miracle ! Si cela ne fonctionne pas, depuis votre smartphone en 3G ou 4G testez : http://votre_ip_fixe:port/ledon.php

Si les LEDs ne s’allument pas, le soucis vient du NAT de port, permettant d’accéder au Raspberry Pi depuis l’extérieur, relisez la méthode en fonction de votre box internet (on déconseille un peu les Livebox… désolé…).

Bien entendu, coté sécurité, euh… Si vous avez un .htaccess d’activé, utilisez alors : http://login:password@votre_ip_fixe:port/ledon.php

Faites une nouvelle Applet avec l’extinction, je pense que vous avez compris le principe : éteindre LED dans ce cas, et pointez sur http://votre_ip_fixe:port/ledoff.php

 

CONCLUSION :

Certes, on peut faire largement mieux, sécuriser tout cela, voir utiliser des modules commerciaux pour activer une prise à distance, mais où serait le plaisir dans ce dernier cas ? 🙂 Ici, l’ensemble est à la fois intégré dans un système domotique maison, mais également utilisable avec l’assistant Google. Par la suite, on peut prévoir de venir passer des arguments à une seule page php, par ex : http://mon_ip/domo.php&lampe=salon&etat=on qui pourra alors transmettre l’information à un script python plus sophistiqué encore, permettant d’effectuer des traitements complexes.