Vera - 06 – Tout savoir ou presque sur les scènes

Mardi, 07 Juin 2016 06:00 GuyT
Imprimer
Note des utilisateurs: / 19
MauvaisTrès bien 

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

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 :

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 :

 

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

 

Lien Youtube

 

 

 

2) Vera UI7 - Scenes – How To

 

Lien Youtube

 

 

Documentation

 

Article

Menu Vera

Module / Apps

Scénario / Script

01 – Prise en main 1

Settings / Setup Wizard

Fibaro Wall Plug

Fibaro Wall Plug

02 – Consommation électrique 1

Dashboard

Scenes / + Add Scene

Fibaro Wall Plug

Scénario de mise hors tension quotidienne à heure fixe

Feuille Excel

03 – Tableau de bord 1

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


04 – Tableau de bord 2

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

05 – Documentation 1

Apps / Develop Apps / Test Lupp Code (LUA)


Script de collecte d’information des devices utilisés

Feuille Excel

06 – Tout savoir ou presque sur les scénarios

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.

 

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 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.

 

Mise à jour le Mercredi, 15 Juin 2016 03:32