Cet article à pour but de partager le fonctionnement des scènes de la Vera. cet article fait suite aux discussions du forum touteladomotique. vous pourrez retrouver ce sujet ICI. En lecture complémentaire, il existe une page (en anglais) sur le Wiki de Micasaverde que vous pourrez retrouver ICI
La vision d’ensemble :
un peu de théorie pour poser les concepts et les principes, pour cela j’ai essayer de vous faire un petit schéma.
L’ensemble du schéma représente le fonctionnement d’une scène. il se décompose en trois sous parties :
Les deux premières parties (en vert et en rouge) sont les deux modules qui vont vous permettre de déclencher le lancement de la scène. La partie bleu permet de gérer les actions de la scène.
Déclenchement par Triggers :
Cette partie correspond à la partie verte du schéma précédent. elle permet de lancer une scène lorsqu’un « évenement » se produit.
Qu’est-ce qu’un évenement ? dans la vera, chaque module a un certain nombre d’évenement que l’on peut utiliser pour déclencher nos scènes. Par exemple :
- Un module ON/OFF : Le passage du module dans un état à un autre.
- Une sonde de température ou de consommation : Le passage au dessus ou en dessous d’un seuil
- Un capteur de mouvement ou de porte : Le début (ou la fin) de la detection
- etc …
Vous l’aurez compris, la notion d’évenement n’est vrai qu’au moment ou il se produit (au contraire d’un état). Par exemple avec une sonde de température, l’évenement : « La température passe au dessus de 20° » se produit au moment ou la sonde envoi un relevé supérieur à 20° ET que le relevé précédent était inférieur à 20°. Tant que la température reste inférieur ou supérieur à 20° l’evenement ne se produira pas.
Pour créer un évenement (Trigger) dans un scène, entrer en mode modification (clé a molete) et allez dans l’ongle « Triggers ». Appyer sur le bouton « Add Trigger »
Ici sur l’exemple, un capteur de température, il faut donner un nom à notre evenement (trigger) et choisir le seuil (ici en degrees).
Nota, pour les capteur de mouvements il y’a deux types de trigger possibles :
- « A sensor is tripped » : l’évenement sera déclenché dans tous les cas (par exemple pour déclencher une lumière associée à un capteur de mouvement)
- « An armed sensor is tripped » : l’évenement sera déclenché uniquement si le capteur est armé (pour une alarme par exemple)
Un petit bilan, maintenant nous savons ajouter des déclencheur de type évenement pour executer notre scène… Mais parfois nous souhaitons ajouter des conditions pour que notre évenement ne déclenche notre scène que sous certaines conditions,
Nous allons donc rajouter un peu de code luup associé a notre trigger via le bouton « Luup event » :
Il est possible d’intégrer n’importe quel code, le principe est le suivant : Si le résultat du code retourne true alors la scène sera exécutée, si par contre la code retourne false l’evenement sera ignoré et la scène ne s’exécutera pas (par défaut, si le code ne retourne rien, la scène s’exécute).
Par exemple, imaginons que nous souhaitions allumer le chauffage si la température passe en dessous de 18° mais uniquement s’il y a des habitants présents dans la maison. Nous supposerons qu’un interrupteur virtuel nous indique l’état sur la présence. Nous utiliserions le code suivant :
local present = luup.variable_get("urn:upnp-org:serviceId:SwitchPower1", "Status", YY) if (present == "1") then return true else return false end
Astuce : si vous avez plusieurs triggers sur les quels vous voulez tester les memes conditions (exemple des plusieurs capteurs de mouvements qui déclenche la meme scène) plutôt que de copier le meme code dans le « Luup event » de chaque trigger, vous pouvez inclure le code dans le Main luup de la scène (nous y reviendrons plus tard dans l’article).
Déclenchement par événements temporels (Schedules) :
Cette partie correspond à la partie rouge du schéma. Elle permet de lancer une scène sur des événements temporels. Vous pouvez choisir plusieurs sortes de fréquence :
- Toutes les X minutes / heures
- Tous les X Jours de la semaines à une heure : on choisi le ou les jours de la semaine, et l’heure ou lever/coucher de soleil
- Tous les X jours du mois : on choisi le ou les jours du mois, et l’heure ou lever/coucher de soleil
- A une date et une heure bien particulière
Contrairement au Triggers, Pour les schedules il n’est pas possible d’ajouter de code luup pour tester des conditions cependant il sera possible d’ajouter un test dans le Main luup de la partie Action (en bleu).
Dans mon cas, j’utilise les Schedules pour déclencher le plugin WakeupRamp qui permet de transformer n’importe quelle lampe de chevet (dimable) en reveil lumineux.
Les actions d’une scène :
Cette partie correspond à la partie bleu du schéma. C’est elle qui va exécuter les actions de la scène :
Main luup :
La première chose qui est exécuté dans une scène (une fois celles ci déclenchée par un trigger, un schedule ou manuellement) est le code Luup qui correspond à l’onglet « Luup » de la scène (Main luup).
Vous pouvez mettre ici les actions que vous souhaitez mais aussi des tests, comme pour le code luup des Triggers, si le code Luup principale de la scène retourne false alors les actions que vous aurez choisies via les onglets Devices et Advanced ne seront pas exécuté.
Standard :
Arrivé à ce point de cette article nous savons comment créer des déclencheurs et positionner des conditions pour faire exécuter ou non notre scène. Il ne reste donc plus qu’a choisir ce que va faire notre scène.
L’onglet « Device » va vous permettre dans 99% des cas de faire ce que vous voulez. il n’y a qu’a cliquer sur les modules pour lesquels vous souhaitez configurer un action.
Vous pouvez également ajouter des délais pour gérer des tempos entre plusieurs actions :
On peut par exemple allumer une lampe lors de l’exécution de la scène et l’éteindre 5 minutes apres. Pour cela sélectionner « Immediate » cliquer sur le bouton On de la lampe à allumer. Créer un delais de 5 minutes via le bouton « Manage Delays ». Sélectionner la ligne « 5 minutes » que vous venez de créer et cliquer sur le bouton Off de la meme lampe.
Nota : Il existe aussi la possibilité de sélectionner la petite flèche rouge qui a pour fonction de faire revenir le module dans l’état précedent (cela ne marche pas avec les modules virtuels):
Cette fonction est tres pratique si l’on veut remettre les modules dans leur état avant l’exécution de la scène. Imaginons une scène qui coupe le chauffage pour 5 minutes si l’on ouvre la fenêtre, a la fin de la scène il faut remettre le chauffage comme il était : il reste éteint s’il l’était on le rallume sinon.
Advanced :
L’onglet « Advanced » permet d’utiliser les fonctionnalités avancées de certains modules. Sélectionner le module, puis l’action à exécuter. Il est possible d’ajouter une action poll d’un module (nota : l’action poll demande au module cible de r’envoyer son état au controller).
Conclusion :
Les scènes Vera n’ont plus de secret pour vous 🙂
Il y’a encore deux ou trois bricoles a savoir sur les scènes. Quelques remarques en vrac que je completerai au fur et à mesure :
Que se passe t’il si on déclenche une scène qui est déja active ?
La Vera va exécuter les 2 scènes en parallèle, celle déjà active va continuer de s’exécuter et la nouvelle s’exécutera normalement. Cela peut générer quelques comportements étranges. Par exemple si vous avez plusieurs capteurs de mouvement pour controller la meme scène, la scène risque de se lancer plusieurs fois. Dans ce context, éviter soigneusement d’utiliser la fonction restauration (la petite flèche rouge). Pourquoi ? L’état initial sera faux car il sera celui au moment ou le dernier capteur sera activé (donc la lampe sera tres probablement déjà allumée par le premier capteur).
This post is also available in: Anglais