Utiliser une ampoule LIFX pour les notifications

Dans un système domotique, les notifications sont souvent délivrées via notre smartphone, sauf qu'on ne porte pas ce dernier toujours chez soi. Dans ce cas, délivrer une notification à travers l'ampoule, en changeant sa couleur ou son intensité, sera un bon moyen alternatif.
Nous allons voir ensemble dans ce tutoriel comment utiliser les ampoules LIFX à cette fin.

Introduction

Les LIFX sont des ampoules à base de LEDs, capables de changer de couleur ou d'intensité et fabriquées par une entreprise australienne. Elle se connecte au réseau WiFi directement sans boîtier intermédiaire.
LIFX a été financée sur Kickstarter en novembre 2012 récoltant plus d'un million de dollars.

LIFX

Prérequis

Pour notre tutoriel, je vais utiliser un framework PHP écrit par six0r pour faire clignoter une ampoule LIFX en rouge et blanc.
Il vous faut également un Raspberry Pi qui fait tourner un serveur web et une ampoule LIFX :)

Vous pouvez en commander en cliquant sur l'ampoule :)
Pensez à utiliser le code AMBASSADOR5OFF pour obtenir 5% de réduction :)

Fonctionnement

Mise en marche

Get it on Google Play Commencez par installer l'ampoule dans son adaptateur puis allumez-la avec l'interrupteur. Elle doit s'allumer avec une lumière blanche.
Depuis votre smartphone, installez l'application officielle LIFX puis connectez vous sur le réseau WiFi "LIFX".

Depuis l'application Lifx, choisissez le réseau WiFi auquel l'ampoule doit se connecter et entrez sa clé de sécurité (si elle existe). Maintenant, basculez vers votre réseau (que vous venez de sélectionner) et commencez à explorer l'application :)
Pensez à donner à vos ampoules un nom propre (cuisine, salon, etc.), ça vous sera utile plus tard !

Création d'un DNS

Cette étape est facultative.
Depuis l'interface de votre box ADSL, allez dans l'onglet DNS et associez à votre ampoule (ou l'une d'elles si vous en avez plusieurs) le nom DNS lifx.
Vous pouvez bien sûr en choisir un autre.

Intallation de la bibliothèque lightd

Cette bibliothèque va écouter le port 5439 de votre Raspberry pour contrôler les ampoules LIFX.

Téléchargez la bibliothèque du Github de six0r (ou d'ici) puis copiez la dans le répertoire /var/www de votre Raspberry (utilisez un client sftp comme FileZilla ou la commande wget). Renommez le dossier lightd au lieu de lightd-master.

Si vous n'avez pas créer un DNS pour une ampoule LIFX ou si vous avez choisit un nom différent de lifx, alors il faut modifier la constante LIFX_HOST pour qu'elle corresponde au nom choisi ou à l'adresse IP d'une des ampoules !
Cette constante se trouve dans le fichier lightd.php dans le dossier /var/www/lightd/
Dans cette page, vous pouvez également modifier le port à travers duquel vous communiquez avec LIFX.

Maintenant nous allons créer le script bash suivant qui va lancer lightd au démarrage du Raspberry :

              cd /var/www/lightd &&
              nohup php lightd.php &

La commande nohup permet de lancer le programme en arrière-plan.
Il faut maintenant le rendre exécutable :

              sudo chmod +x /chemin_du_script/nom_du_script.sh

Pour lancer le script au démarrage du Raspberry, on va l'enregistrer dans le crontab :

              @reboot /chemin_du_script/nom_du_script.sh

Si vous souhaitez exécuter le programme sans redémarrer votre Raspberry, tapez les deux lignes du script précédent directement dans le terminal. Si vous choisissez de ne pas créer de script, le programme ne se lancera pas au prochain démarrage du Pi !

Commandes disponibles

En admettant que l'adresse IP du Raspberry Pi est 192.168.1.20 :

Les notifications

Nous allons faire clignoter l'ampoule entre le rouge et le blanc 5 fois à intervalle d'une demi-seconde. Créez le script bash suivant (comme précédemment) et rendez le exécutable :

                    #!/bin/bash
                    
                    for i in {1..5}
                    do
                      curl -s 192.168.1.20:5439/color/E52929/Salon
                      sleep 0.5
                      curl -s 192.168.1.20:5439/color/FFFFFF/Salon
                      sleep 0.5
                    done

Vous pouvez lancer le script de deux manières, soit directement à partir du terminal :

                    /chemin_script/nom_script.sh

Soit par l'intermédiaire d'une page web, dont le code php est le suivant :

                    <?php
                      exec('/chemin_script/nom_script.sh');

A vous d'adapter ce code à vos besoins. Par exemple, vérifier les droits de la personne avant d'exécuter le script !

A bientôt :)