Quand la domotique gère l’univers des objets connectés (Partie 2/4)

Mardi, 29 Avril 2014 06:00 Angelo B.
Imprimer
Note des utilisateurs: / 18
MauvaisTrès bien 

Pour ce second article, nous allons voir la configuration des scènes et des modules Home Center.

Nous allons tout d’abord mettre en place nos modules virtuels. Pour plus de simplicité, je les ai séquencé d’après leurs fonctions.

Nous allons donc créer :

-    un module permettant de récupérer l’heure du réveil

-    un module gérant l’éclairage

-    un module dictant la météo

-    un module pour lancer notre musique de réveil

 

Module récupération du réveil (41)

Afin que la box soit informée de l’heure à laquelle elle doit commencer à gérer l’éclairage ainsi que mettre en place les diverses fonctionnalités du réveil, nous devons lui transmettre notre horaire de réveil.

Pour la stocker, nous allons préparer le système. Pour cela, il faut Ajouter un périphérique virtuel dans la rubrique module —> add or remove device

Pour ma part je l’ai nommé tout simplement Réveil et j’ai ajouté 4 Labels respectivement intitulés :

-    Label : Heure et ID : ReveilHeure

-    Label : Minute et ID : ReveilMinute

-    Label : Jour et ID : ReveilJour

-    Label : Mois et ID : ReveilMois

Retrouvez ici le module : fichier Reveil.vfib

 

Module gestion de l’éclairage

Intéressons nous maintenant à l’éclairage. L’objectif est de simuler une aube dans la chambre ayant une durée d’environ 20min. Afin de faire le plus naturel possible, je désire avoir une lumière rouge-orangée qui petit à petit tourne vers le orange pour enfin être saturée sur du jaune. Je possède 2 ampoules Hue au-dessus du lit ainsi que 2 rubans Lightstrips en dessous.

On va donc partir, comme un levé de soleil, du bas vers le haut.

Ne pouvant pas transmettre des requêtes HTTP directement dans les scènes, il faut utiliser des subterfuges.

Ainsi, ce module, comme tous les modules HTTP qui vont suivre, peuvent être considérés comme des connecteurs d’API.

Dans un premier temps nous allons avoir besoin de créer des variables globales afin de pouvoir y accéder avec plusieurs scènes.

Pour cela, il suffit de se rendre dans l’interface Home Center 2 puis Panneaux —> Panneau variables —> Ajouter (de la rubrique variable)

Il nous faut ajouter 2 variables, une qui va nous permettre de contrôler la luminosité et l’autre qui va nous permettre de contrôler la saturation de nos ampoules.

J’ai donc nommé ces variables respectivement huebri et huesat avec comme valeur 0.

Maintenant nous allons créer le module permettant le contrôle des ampoules.

Pour cela, il faut se rendre dans la partie module —> add or remove device —> Ajouter un périphérique virtuel

Pour ma part, je l’ai nommé Eclairage chambre car il gère également d’autres fonctions d’éclairage. J’ai ensuite créé 3 boutons :

- un pour contrôler les 2 rubans : SimulateurAubeR (38-5)

- un pour contrôler les 2 ampoules : SimulateurAubeA (38-6)

- un pour gérer la fonction « Snooze » : LumièreSnooze (38-7)

 

Dont un supplémentaire qui éteint tout :

- Eteindre toutes les lampes Hue (38-2)

 

On bascule ces boutons en mode Code Lua

Maintenant on va rentrer les commandes HTTP afin de pouvoir les contrôler par des scènes. Elles se présentent comme cela :

variable = Net.FHttp("adresseipdupont", portdupont)
variable:PUT(‘/api/nomdutilisateur/lights/numerodelalampouleacontroler/state’, '{puis toutes les informations que l’on souhaite envoyer à l’ampoule, c’est-à-dire si elle doit être allumée, de quelle couleur, à quelle intensité…}')

soit le code complet :

HueGtw = Net.FHttp("192.168.1.20",80) 
HueGtw:PUT('/api/user1234567890/lights/4/state', '{"on":true, "hue":65535, "sat":'..fibaro:getGlobalValue("huesat")..', « bri":'..fibaro:getGlobalValue("huebri")..'}')
HueGtw:PUT('/api/user1234567890/lights/7/state', '{"on":true, "hue":65535, "sat":'..fibaro:getGlobalValue("huesat")..', "bri":'..fibaro:getGlobalValue("huebri")..'}')  

 

On fait la même chose avec SimulateurAubeA mais avec le numéro d’ampoules qui change :

HueGtw = Net.FHttp("192.168.1.20",80) 
HueGtw:PUT('/api/user1234567890/lights/5/state', '{"on":true, "hue":65535, "sat":'..fibaro:getGlobalValue("huesat")..', « bri":'..fibaro:getGlobalValue("huebri")..'}')
HueGtw:PUT('/api/user1234567890/lights/6/state', '{"on":true, "hue":65535, "sat":'..fibaro:getGlobalValue("huesat")..', "bri":'..fibaro:getGlobalValue("huebri")..'}')

 

On peut donc voir qu’on allume l’ampoule

Que la couleur de départ est le rouge pour les rubans et jaune-orangé pour les ampoules

 

Que la saturation est définie par la variable globale huesat

 

et que la luminosité est définie par la variable globale huebri

 

Maintenant, nous allons compléter le bouton LumièreSnooze. L’objectif de LumièreSnooze est d’allumer complètement toutes les lumières dans leurs brillances la plus intense 10min après avoir poussé le bouton Snooze de notre réveil.

Ainsi, cela donne :

Et le code :

HueGtw = Net.FHttp("192.168.1.20",80) 
HueGtw:PUT('/api/user1234567890/lights/4/state', '{"on":true, "sat":0, "bri":255}') 
HueGtw:PUT('/api/user1234567890/lights/7/state', '{"on":true, "sat":0, "bri":255}')
HueGtw:PUT('/api/user1234567890/lights/5/state', '{"on":true, "sat":0, "bri":255}') 
HueGtw:PUT('/api/user1234567890/lights/6/state', '{"on":true, "sat":0, "bri":255}') 

 

Enfin, à un moment donné, il faudra éteindre toutes les lampes, voici le code du bouton :

 

Module météo SARAH (43)

Il est possible d’appeler un script de SARAH grâce à une requête HTTP. Pour cela, il suffit de connaître l’adresse IP de la machine sur laquelle elle est exécutée et le nom du script tout simplement.

Ainsi, pour appeler le script meteo2, il suffit de mettre cette commande en Lua sur un bouton :

Vous pouvez même tester en tapant dans votre navigateur : http://adresseipdeSARAH:8080/sarah/meteo2

Vous devriez avoir le script qui s’exécute sur votre haut-parleur Sonos, si vous avez suivi la procédure jusqu’ici.

 

 

Module lecture de musique

Nous avions créé 2 pages php : sonos.play.php et sonos.stop.php qui ont pour but pour l’une, de lire la première musique de la liste de lecture de notre enceinte Sonos, et pour l’autre de faire stop.

Ainsi transformé en 2 boutons d’un module que l’on peut appeler GestionMusique, cela donne avec comme adresse IP, celle du Synology (là ou est placé le fichier php) : Musique On (39-1)

Musique Off (39-1)

Passons maintenant au coeur du système : les scénarios !

 

 

Configuration des scènes Home Center


Dans cette partie je vais également bien isoler chaque étape afin que vous puissiez voir les interactions et surtout que vous puissiez adapter les scénarios avec votre matériel et vos envies !

Nous avons donc tous nos connecteurs, il faut maintenant les utiliser avec nos scènes afin d’avoir un réveil fonctionnel.

Pour cela, nous allons créer 6 scènes :

-    Une pour détecter si il y a un réveil

-    Une pour l’activer

-    Une pour simuler l’aube

-    Une pour dire que l’on se lève

-    Une pour le Snooze

-    Une pour le supprimer

Mais nous allons les créer en fonction de leurs imbrications ...

 

Scène simulateur d’aube (15)

Naturellement, le levé du soleil n’est pas totalement linéaire. En effet, lorsque celui-ci va pour se lever, il y a une phase qui précède, c’est là qu’on voit l’horizon d’une couleur rouge-orangée. Cette couleur persiste un certain temps, jusqu’à ce que le soleil pointe le bout de son nez. A partir de se moment, les couleurs du ciel vont s’éclaircir beaucoup plus rapidement et virer vers le jaune jusqu’au plein jour. (enfin surtout dans le sud !)

J’ai donc adapté le scénario en fonction de ce phénomène naturel. Allez donc dans Scène —> Ajouter une scène —> Avancé —> Ajouter une scène en Lua
J’ai nommé ma scène Simulateur Aube mais l’important dans l’esprit Fibaro c’est surtout les ID des modules et des scènes.

Voici mon script (je n’ai pas touché à l’en-tête par défaut)

Dans un premier temps nous allons fixer les valeurs globales de saturation et de luminosité.

Une saturation au maximum (255) et une luminosité au minimum (1) correspond pour les rubans avec une valeur de hue à 65535 à un rouge vif mais très faible et à un jaune pale vif mais très faible pour les ampoules avec un hue à 16384.

Nous allons donc pour une durée de 20 fois 30 secondes (soit 10min) aller appeler notre module SimulateurAubeR (ici avec l’ID 38 et correspond au bouton 5) afin d’allumer les rubans et mettre comme valeur respective les variables globales huesat et huebri.

Ensuite, nous allons réduire la saturation de 4 et augmenter la luminosité de 4 afin d’atténuer la couleur rouge vif et la rendre légèrement plus lumineuse et attendre 30 secondes.

Au bout de 10min, les rubans auront atteint leurs colorations optimales, sans être pour autant agressif, on est dans la phase : le soleil pointe le bout de son nez.

Ainsi, c’est maintenant que tout s’accélère, comme nous l’avons énoncé, une fois que le soleil fait son apparition, le ciel s’éclaircit beaucoup plus rapidement.

On remet donc les valeurs de huesat et huebri comme au début. On appelle maintenant le module SimulateurAubeA (ici avec l’ID 38 et correspond au bouton 6) qui va éclairer les ampoules au-dessus du lit avec une couleur jaune pale vif mais faible. Mais vu qu’on est dans la phase éclaircissement du ciel plus rapide, nous allons cette fois-ci diminuer la saturation de 12 tout en augmentant la luminosité de 12 toutes les 30 secondes pendant 10min. Ainsi, au bout de 20min, la chambre est rayonnante, comme si le soleil y était vraiment !

 

 

Scène activation du réveil (20)

Cette scène est très simple, il s’agit ici de lancer la scène 15 (simulateur d’aube), d’attendre 19min puis de lancer Musique On (le bouton 1 du module 39)

 

 

Scène détection réveil (12)

Cette scène est une boucle qui s’exécute toutes les 59s et qui vient tester si un réveil a été enregistré dans le module récupération réveil (41) que nous avons créé et si les horaires correspondent à la date et l’heure actuelle, ça déclenche la scène activation réveil (20).

(la scène 4 correspond à l’allumage de mon Synology ainsi que tout le matériel qui a été coupé durant la nuit)

soit :

--[[
%% properties
%% autostart
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();

if (sourceTrigger["type"] == "autostart") then
 while true do
 local Maintenant = os.date("*t")
 local Heurereveil = tonumber(fibaro:getValue(41, "ui.ReveilHeure.value"))
 local Minutereveil = tonumber(fibaro:getValue(41, "ui.ReveilMinute.value"))
 local Jourreveil = tonumber(fibaro:getValue(41, "ui.ReveilJour.value"))
 local Moisreveil = tonumber(fibaro:getValue(41, "ui.ReveilMois.value"))
 if (Maintenant['hour'] == Heurereveil and Maintenant['min'] == Minutereveil and Maintenant['day'] == Jourreveil and Maintenant['month'] == Moisreveil) then
 fibaro:startScene(4)
 fibaro:startScene(20)
 end
 fibaro:sleep(59*1000)
 end
end

 

Scène je me lève (16)

Cette scène vient :

-    Stopper la simulation de l’aube (15)

-    Eteindre toutes les lampes Philips Hue (38-2)

-    stopper la lecture de la musique (Musique Off : 39-2)

-    ouvrir les volets (module Fibaro Ruller Shutter 42)

-    activer le plugin Météo SARAH (43-1)

Et enfin, mettre ma variable globale isSleeping à 0 pour signifier que je ne dors plus.



Scène Snooze (19)

Cette scène vient :

-    Eteindre la musique (39-2)

-    Eteindre la lumière (38-2)

-    Stopper la simulation d’aube (15)

-    Stopper l’activation du réveil (20)

-    Compter 10min puis

-    > Lire la musique (39-1)

-    > Mettre la LumièreSnooze (38-7) c’est-à-dire lumière plein éclat

 

 

Scène suppression réveil (18)

Cette scène vient :

-    Mettre des valeurs nulles dans module récupération réveil (41)

-    Stopper la simulation d’aube (15)

-    Stopper le snooze (19)

-    Stopper l’activation du réveil (20)

-    Eteindre la lumière (38-2)

-    Eteindre la musique (39-2)


Voilà, nous en avons fini avec le paramétrage de toutes les scènes et de tous les modules. Ce qu’il manque maintenant, c’est comment régler notre réveil et comment contrôler tout ce système de manière simple et ergonomique, avec une interface WAF ! Nous allons utiliser Tasker, je vous propose la suite dans l'article de demain sur Touteladomotique.com

Vous n'avez pas compris un point ? Vous vous posez une question ? Vous pouvez nous contacter via le bouton Assistance sur votre gauche. N'hésitez pas à demander un rendez-vous téléphonique avec Domotics.

Vous avez aimé cet article ? Vous pouvez le partager sur vos réseaux sociaux pour soutenir son auteur et l'encourager à écrire de nouveaux articles ...

 

Cet article vous est proposé par Angelo B.: Angelo, passionné de nouvelles technologies, n'hésite pas à acquérir les objets les plus innovants afin de pouvoir partager ses expériences et ressentis, et les intégrer dans son habitat. Ainsi, il s'est lancé dans la création d'un bureau d'études en domotique : Hestia Conception. N'hésitez pas à échanger avec lui et si vous avez un projet, rendez-vous sur www.hestiaconception.com !

Mise à jour le Dimanche, 27 Avril 2014 22:46