Avec cet article, je vous propose de faire le tour des possibilités que permet le gestionnaire de scènes de la box Vera. Vous avez certainement déjà créé une ou plusieurs scènes afin d’automatiser des actions. Mais avez-vous pris le temps d’explorer les coins et les recoins des options disponibles. Au travers d’un scénario, je vous propose de vous accompagner dans ce voyage initiatique.
Scénario : le script doit permettre de renseigner l’état (ouvert / fermé) de deux portes de garage.
Les événements en entrée sont : l’ouverture et/ou la fermeture d’une ou des deux portes de garage quelle que soit l’heure de la journée et de la nuit ; ainsi qu’à deux moments précis dans la journée : 20H30 et 21H00.
Les actions en sortie sont : allumer une lampe pendant 30 secondes et vocaliser un message contextuel aux états des deux portes de garage.
Les restriction d’exécution : l’exécution de la scène ne s’effectuera seulement dans les modes suivants : Home et Night (lorsqu’au moins une personne est présente à la maison).
Sommaire
Au cours de cet article, nous allons réutiliser et enrichir l’exemple de la scène permettant de faire vocaliser un message lié au statut (ouvert / fermé) d’une ou des deux portes de garage (voir les articles : 03 – Tableau de bord 1 et 04 – Tableau de bord 2).
- Bonnes pratiques
- Etape 1 – Sélectionner le(s) déclencheur(s)
- Etape 2 - Préciser les actions à faire réaliser par les device(s)
- Etape 3 - Finaliser la scène
- C’est à vous
- Documentation
- Conclusion
Bonnes pratiques
Factorisation : évitez la multiplication du nombre de scènes par cas ou par domaine d’utilisation, regroupez – autant se faire se peut - au sein d’une même scène plusieurs déclencheurs. La factorisation facilite le développement et la maintenance des scènes.
Conditions multiples des événements déclencheurs en entrée : Lorsqu’une scène possède plusieurs événements déclencheurs, la condition logique qui lie les différents événements déclencheurs est un « ou » logique. Dans le cas où vous devez gérer des conditions multiples - exemple : événement X et (événement Y ou événement Z) - cela nécessite l’utilisation d’un script Lua.
Actions différentiées en sortie : Lorsqu’une scène doit gérer des actions différentiées (allumer une lampe, changer la température, transmettre un message, ouvrir une porte, …) en fonction des événements ayant déclenchés l’exécution de la scène, du mode courant de la box (Home, Away, Night, Vacation), de variables globales (initialisées ou non par d’autres scènes), … cela nécessite aussi l’utilisation d’un script Lua.
Etape 1 – Sélectionner le(s) déclencheur(s)
Il existe trois types de déclencheurs:
Device : La scène est exécutée lorsqu'un device / capteur détecte un changement d'état, une ouverture de porte, l’augmentation de la consommation d’un appareil électrique, un changement de température, …
Calendrier : La scène est exécutée sur un événement planifié de façon quotidienne, hebdomadaire, mensuelle, ponctuelle, voire sur le lever et/ou le coucher du soleil.
Manuel : La scène est exécutée sur un événement humain : vous lancez manuellement la scène, vous pouvez associer le lancement d’une scène à un bouton d’une télécommande, …
Etape 1a) Device - Détection d’événements par un ou plusieurs devices
Dans notre exemple, nous voulons que la scène soit exécutée sur l’ouverture et/ou la fermeture d’une des deux portes de garage.
1) Sélectionnez « Device », comme type de déclencheur, puis cliquez sur le bouton « flèche droite » en bas à droite (ligne « Select a device ») afin de sélectionner les périphériques concernés.
La liste des devices peut être triée par pièce ou par type de device, boutons « Rooms » ou « Type ». Dans l'exemple ci-dessous, la liste est triée par pièce.
2) Sélectionnez le détecteur d’ouverture de la porte de garage droite (flèche orientée à droite).
Le détecteur d’ouverture / fermeture est capable de détecter des événements de natures différentes :
- Chaque fois que le device « Garage Droite (DS) » est armé et ouvert
- Chaque fois que le device « Garage Droite (DS) » est armé et fermé
- Chaque fois que le device « Garage Droite (DS) » est ouvert si est armé ou désarmé
- Chaque fois que le device « Garage Droite (DS) » est fermé si est armé ou désarmé
- Niveau de la batterie du device descend au-dessous d’un pourcentage
- Chaque fois que le device « Garage Droite (DS) » est altéré
3) Sélectionner l’événement : chaque fois que le device « Garage Droite (DS) » est ouvert si est armé ou désarmé ; puis validez (bouton « Validate »).
Refaite l’opération :
Pour le même device « Garage Droite (DS) »
Chaque fois que le device « Garage Droite (DS) » est fermé si est armé ou désarmé
Pour le device « Garage Gauche (DS) »
Chaque fois que le device « Garage Droite (DS) » est ouvert si est armé ou désarmé
Chaque fois que le device « Garage Droite (DS) » est fermé si est armé ou désarmé
Au final, cela devrait ressembler à la copie d’écran ci-dessous.
Etape 1a) Device – Options de déclenchement
Option 1 : Vous pouvez définir des jours et une plage horaires pendant lesquels, la scène s’exécutera. Dans notre exemple, vous voulez peut être qu’un message soit vocalisé seulement entre 07H00 du matin et 23H00 du soir.
Lorsque plusieurs conditions sont définies, la détection d’un seul événement est suffisante pour lancer l’exécution d’une scène. Maintenant, si vous souhaitez gérer une combinaison d’événements multiples, l’option 2 va permettre de répondre à votre préoccupation.
Option 2 : Vous pouvez définir un script Lua (code) pour vérifier une combinaison d’événements. Le script doit retourner soit une valeur vraie (« Return true ») et la scène va s’exécutera, soit une valeur fausse (« return false ») et la scène ne s’exécutera pas.
Exemple : si nous voulons qu’une scène s’exécute si et seulement si les deux portes de garage sont fermées, voici le code à écrire :
les 2 lignes suivantes doivent être mises dans le fichier Startup, elles peuvent avoir été générées automatiquement (voir article 05 – Documentation)
local giDSGarageDroite = 035 -- Garage Gauche (DS) - Détecteur d'ouverture
local giDSGarageGauche = 034 -- Garage Droite (DS) - Détecteur d'ouverture
Voici les lignes de code à mettre :
local lsGarageDroite = luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", giDSGarageDroite) or "Err"
local lsGarageGauche = luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", giDSGarageGauche) or "Err"
if (lsGarageGauche == "0") and (lsGarageDroite == "0") then
return true
else
return false
end
RECOMMANDATION : Je vous conseille de mettre l’ensemble du code (détermination du contexte, conditions multiples d’entrée et actions différentiées de sortie) dans la partie du code à exécuter (partie 3). Cela permet d’avoir une vue d’ensemble et surtout de maîtriser les interactions possibles.
Etape 1b) Calendrier (Schedule)
Dans notre exemple, nous voulons que la scène soit exécutée chaque jour à des heures fixes.
1) Sélectionner le type de déclencheur « Schedule ».
2) Sélectionnez le mode journalier (« Daily »), renseigner l’heure (20H30) et validez.
3) Refaites l’opération pour l’horaire 21H00 ; au final, cela devrait ressembler à la copie d’écran ci-dessous.
Pour passer à l’étape suivante, cliquez sur le bouton « flèche droite » en bas à droite de la page d’écran correspondant à la ligne « Next Step ».
Dans notre exemple, nous avons utilisé le mode journalier simple, mais il existe plusieurs autres modes :
Intervalle (Interval) : il faut choisir une unité parmi celles-ci : Secondes, Minutes, Heures, Jours
Quotidien (Daily) : il faut choisir une valeur parmi celles-ci :
At the time of the day : à une heure donnée de la journée
Sunrise : au lever du soleil ; pour ce choix la box utilise la localisation définie dans le menu : Setting / Location
Sunset : au coucher du soleil soleil ; pour ce choix la box utilise la localisation définie dans le menu : Setting / Location
Before Sunrise : tant de temps avant le lever du soleil
Before Sunset : tant de temps avant le coucher du soleil
After Sunrise : tant de temps après le lever du soleil
After Sunset : tant de temps après le coucher du soleil
Hebdomadaire (Weekly) : il faut sélectionner le ou les jour(s) concernés de la semaine et choisir une valeur parmi celles-ci : At the time of the day, Sunrise, Sunset, Before Sunrise, Before Sunset, After Sunrise, After Sunset (même principe que pour le mode « Quotidien »).
Mensuellement (Monthly) : il faut sélectionner le ou les jour(s) concernés du mois et choisir une valeur parmi celles-ci : At the time of the day, Sunrise, Sunset, Before Sunrise, Before Sunset, After Sunrise, After Sunset (même principe que pour le mode « Quotidien »).
Unique (Once) : il faut préciser la date et l’heure de l’événement.
Etape 1c) Manuel (Manual)
Le mode manuel n’est pas utilisable si un des 2 modes précédents (Device et Schedule) a été utilisé. Dans ce cas la scène ne pourra être déclenchée manuellement par une action utilisateur.
REMARQUE : Il est possible d’exécuter une scène à partir d’une autre scène ; voici la syntaxe de la commande luup :
luup.call_action("urn:micasaverde-com:serviceId:HomeAutomationGateway1", "RunScene", {SceneNum = "NUMERO_DE_LA_SCENE"}, 0)
Etape 2 - Préciser les actions à faire réaliser par le ou les device(s)
Cette partie permet de définir les actions à effectuer et/ou le code Lua à exécuter.
1) Cliquez sur l’icône « Stylo », correspondant à la ligne « Step2 : Device Actions ».
2) Cliquez sur l’icône « flèche droite », correspondant à la ligne « Select Devices ».
Etape 2a) Sélectionner le ou les device(s)
1) Sélectionner le ou les device(s), en cliquant sur la ou les icône(s) « hirondelle » correspondantes.
Dans notre exemple, sélectionner l’interrupteur commandant la lampe « Activité Garage ».
2) Cliquez sur le bouton « Next » qui est tout en bas de la page à droite (faire défiler la page).
Etape 2b) Préciser l’action à faire réaliser par chaque device
1) Sélectionnez l’action désirée. Dans notre exemple, l’interrupteur commandant la lampe « Activité Garage » doit être positionné sur « ON ».
2) Cliquez sur le bouton « Validate » pour valider et passer à la sous-étape suivante.
Etape 2c) Ajouter un délai - (facultatif)
Le gestionnaire de scènes permet d’enchaîner plusieurs actions dans le temps.
Dans l’exemple ci-dessous, une première « Action 1 » est réalisée sur la détection d’un événement, puis 20 secondes après l’événement détecté une seconde action est réalisée « Action 2 » et enfin 60 secondes après l’événement détecté (soit 40 secondes après l’action 2) une troisième action est réalisée « Action 3 ».
1) Cliquez sur l’icône « + » correspondante à la ligne « Add delayed action ».
2) Cliquez sur l’icône « hirondelle » correspondante à la ligne « Wait for ».
3) Renseignez le délai souhaité, dans notre exemple « 30 secondes » et validez en a
4) Cliquez sur le bouton « Validate » pour valider et passer à la sous-étape suivante.
Etape 2d) Sélectionner le ou les device(s) - (facultatif)
1) Sélectionner le ou les device(s), en cliquant sur la ou les icône(s) « hirondelle » correspondantes.
Dans notre exemple, sélectionner l’interrupteur commandant la lampe « Activité Garage ».
2) Cliquez sur le bouton « Next » qui est tout en bas de la page à droite (faire défiler la page).
Etape 2e) Préciser l’action à faire réaliser par chaque device - (facultatif)
1) Sélectionnez l’action désirée. Dans notre exemple, l’interrupteur commandant la lampe « Activité Garage » doit être positionné sur « OFF ».
2) Cliquez sur le bouton « Validate » pour valider et passer à la sous-étape suivante.
Vous devriez avoir quelque chose qui devrait ressembler à la copie d’écran ci-dessous.
3) Cliquez sur l’icône « flèche droite », correspondante à la ligne « Next Step », pour passer à l’étape 3.
Etape 3 - Finaliser la scène
Cette partie permet de préciser les modes d’exécution et d'ajouter du code Lua.
Etape 3a) Préciser dans quel(s) mode(s) la scène doit être exécutée - (facultatif)
Rappel : la box gère 4 modes :
- Home : lorsque vous êtes chez vous et que vous êtes éveillés
- Away : lorsque vous êtes au travail ou à l'extérieur
- Night : lorsque vous êtes chez vous et que vous dormez (la nuit)
- Vacation : lorsque vous êtes absents plusieurs jours de votre habitation (vacances, déplacement professionnels, …)
1) Cliquez sur l’icône « flèche droite », correspondante à la ligne « When I am in any mode ».
2) Sélectionnez le ou les modes désirés parmi les 4 valeurs (Home, Away, Night, Vacation) et validez en cliquant sur le bouton « Done » pour passer à la sous-étape suivante.
Dans notre exemple, seuls les modes « Home » et « Night » sont pertinents (il ne sert à rien d’allumer une lampe ou de faire vocaliser un message lorsque personne n’est à la maison).
Etape 3b) Préciser si un ou des utilisateur(s) doivent être notifié(s) – (facultatif)
Le gestionnaire de scènes permet de notifier un ou plusieurs utilisateurs déclarés de la box. Les notifications sont envoyées sous forme de SMS et d’emails. Attention : vous n’avez droit à seulement 2 sms par jour, le nombre d’emails quant à lui est illimité.
1) Cliquez sur l’icône « flèche droite », correspondante à la ligne « Notify these users ».
2) Sélectionnez le ou les utilisateurs que vous souhaitez notifier et validez en cliquant sur le bouton « Done » pour passer à la sous-étape suivante.
RECOMMANDATION : Je vous déconseille d’utiliser ce type de notification, je vous propose d’aborder la problématique des notifications dans sa globalité dans le prochain article.
Etape 3c) Préciser besoin le code Lua à exécuter - (facultatif)
1) Cliquez sur l’icône « flèche droite », correspondante à la ligne « Also, execute the following Lua code: ».
2) Télécharger le code et l’adapter si besoin à votre contexte
les 4 lignes déclarative suivantes doivent être mises dans le fichier Startup, elles peuvent avoir été générées automatiquement (voir article 05 – Documentation)
-- ----------------------------------------------------------------------
-- Piece : 00-Commune
-- ----------------------------------------------------------------------
giImperiAsus = 021 -- ImperiHome Asus - Mobile Apps : Tableaux de bord
giImperiNexus = 020 -- ImperiHome Nexus - Mobile Apps : Tableaux de bord
-- ----------------------------------------------------------------------
-- Piece : 15-Garage
-- ----------------------------------------------------------------------
local giDSGarageDroite = 035 -- Garage Gauche (DS) - Détecteur d'ouverture
local giDSGarageGauche = 034 -- Garage Droite (DS) - Détecteur d'ouverture
Voici les lignes de code à mettre
-- récupération du statut des capteurs d'ouverture des portes du garage
local lsGarageDroite = luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", giDSGarageDroite) or "Err"
local lsGarageGauche = luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", giDSGarageGauche) or "Err"
local lsText = ""
if (lsGarageGauche == "1") and (lsGarageDroite == "1") then
lsText = "Attention - Les deux portes du garage sont ouvertes"
elseif (lsGarageGauche == "1") and (lsGarageDroite == "0") then
lsText = "Attention - La porte de gauche du garage est ouverte"
elseif (lsGarageGauche == "0") and (lsGarageDroite == "1") then
lsText = "Attention - La porte de droite du garage est ouverte"
elseif (lsGarageGauche == "0") and (lsGarageDroite == "0") then
lsText = "Les deux portes du garage sont fermées"
elseif (lsGarageGauche == "Err") or (lsGarageDroite == "Err") then
lsText = "Vérifier le bon fonctionnement des détecteurs d'ouverture des portes du garage"
end
if lsText ~= "" then
luup.call_action("urn:imperihome-com:serviceId:ImperiHomeDevice1", "SayTTS", {Text = lsText}, giImperiNexus);
Luup.call_action("urn:imperihome-com:serviceId:ImperiHomeDevice1", "SayTTS", {Text = lsText}, giImperiAsus)
luup.call_action("urn:imperihome-com:serviceId:ImperiHomeDevice1", "GotoDashPage", { PageIndex = "3" }, giImperiNexus)
myNotification ("HANV", "Guy","Portes du garage",lsText,"1")
end
return true
Cliquez sur le lien pour télécharger le code Lua - Portes Garage.lua
3) Copier le code Lua et sauvegarder en cliquent sur le bouton « Save lua » ;
Etape 3d) Editeur avancé - (facultatif)
1) Cliquez sur l’icône « flèche droite », correspondante à la ligne « Advanced Editor ».
L’éditeur avancé propose une vue synthétique des actions à réaliser. Il est possible de préciser une condition pour que la scène soit active :
Quand tous les devices fonctionnement normalement ( when all devices in the are proper ..)
Si n’importe quelle lampe de la scène est éteinte (If ANY light in the scene is turned off), personnellement je n’ai pas trouvé d’exemple de cas d’utilisation concret correspondant à cette condition.
Etape 3e) Sélectionner une pièce - (facultatif)
1) Sélection une pièce dans le liste déroulante « Room Name: ».
Etape 3f) Donner un nom à la scène
1) Indiquez un nom pour la scène, puis cliquez « Finish » pour sauvegarder la scène qui vient d’être créée.
La nouvelle scène est automatiquement active dans les modes qui ont été sélectionnés lors de sa création.
C’est à vous
Il ne vous reste plus qu’à vous lancer.
En complément, vous pouvez visualiser 2 vidéos réalisées sur le sujet par Vera Control, Limited.
1) Vera UI7 - The Power of Scenes - Overview
2) Vera UI7 - Scenes – How To
Documentation
Article |
Menu Vera |
Module / Apps |
Scénario / Script |
Settings / Setup Wizard |
Fibaro Wall Plug |
Fibaro Wall Plug |
|
Dashboard Scenes / + Add Scene |
Fibaro Wall Plug |
Scénario de mise hors tension quotidienne à heure fixe Feuille Excel |
|
Settings / Net & Wifi Apps/Install apps Apps / Develop Apps / Test Lupp Code (LUA) Scenes / + Add Scene |
Mobile Apps « ImperiHome » Caméra FOSCAM FI8918W Capteur EverSpring SM103 Apps « Virtual ON/OFF Switches » |
Scénario+ script d’ouverture / fermeture d’ouvrants |
|
Apps/Install apps |
Apps « ImperiHome » Mobile Apps « ImperiHome », création d’une page de tableau de bord |
Scénario + script de vérification de l’état des portes de garage et permettant la vocalisation d’un message |
|
Apps / Develop Apps / Test Lupp Code (LUA) |
Script de collecte d’information des devices utilisés Feuille Excel |
||
Scenes / + Add Scene |
|
Scénario + script enrichis de vérification de l’état des portes de garage et permettant la vocalisation d’un message |
|
07 – Tout savoir ou presque sur les notifications |
Apps / Develop Apps |
|
|
Conclusion
Avec cet article, vous êtes maintenant en mesure d’utiliser les subtilités que permet le gestionnaire des scènes de la box Vera. Dans le prochain article nous parlerons de la façon de traiter la problématique des notifications d’une façon globale. Dans les articles suivants, nous traiterons de cas d’utilisation concrets, n’hésitez pas à exposer vos attentes et nous verrons ensemble comment trouver une ou plusieurs solutions.
NOUVEAU : Retrouvez nos articles en Vidéos sur YouTube
![]() |
Cet article vous est proposé par GuyT : Guy possède une expérience des Systèmes d'Information (SI) à l'international chez un opérateur telco où l’intégration est vitale entre les différents quartiers du SI (par analogie avec l’urbanisation des villes). Il s'est lancé dans la domotique en 2012, après une pause rédactionnelle, il est de retour pour vous proposer des cas concrets d'utilisation et d'intégration qui tiennent compte de l'expérience utilisateur. |