Pour donner un exemple concret, je souhaite garder une température entre 16.5 et 19 dans la chambre. Malgré le robinet thermostatique, deux problèmes se posent. Soit j'ai oublié de ré-ouvrir le radiateur après à avoir ouvert la fenêtre pour ventiler (ou j'ai carrément oublié de fermer la fenêtre) soit j'ai laissé la porte ouverte et la chaleur de la maison réchauffe la chambre.
Je souhaite donc recevoir une alerte lorsque la température n'est pas optimale pour une bonne nuit, mais je ne souhaite pas en recevoir lorsque je dort.
Mis en oeuvre
Si l'on met en place un simple scénario, on ne peut pas savoir si l'alerte à déjà été envoyé ou non. Il faut donc créer un virtuel qui va contenir cette information.
Le virtuel :
- Il contient une info de type binaire nommée : Alterted
- et deux commandes "yes" et "no" avec comme valeurs respectives 1 et 0
Le scénario :
Le déclencheur peut être la valeur de la température, mais il n'est peut être pas nécessaire de faire la vérification à chaque nouvelle mesure, dans ce cas une programmation horaire est plus adaptée. Par exemple toute les 10min : */10 * * * *
Un premier bloque SI/ALORS, avec
- Dans la condition, le test de plage de température : (#[Températures][Chambre][Température]# < 16.5 || #[Températures][Chambre][Température]# > 19)
- Dans le Alors on imbrique un nouvel élement SI/ALORS
- Pour la condition, on test si c'est le mode nuit et si l'alerte n'a pas déjà été envoyé : #[Maison][JourNuit][Mode]# = "jour" && !#[Alertes][AlertTempChambre][Alterted]#
- Dans le Alors on envoie l'alerte avec le plugin de notre choix
- Toujours dans le alors on indique que l'alerte à été envoyé : #[Alertes][AlertTempChambre][yes]#
- Dans le Sinon (cas ou température est OK) on remet la valeur de Alerted à 0 : #[Alertes][AlertTempChambre][no]#