Lumière automatique sur présence (Corrigé, optimisé)

Temps de lecture : 6 minutes.

Vous avez été nombreux à lire les articles concernant l’allumage de la lumière sur présence et c’est pour cela que j’ai voulu apporter un correctif aux précédentes versions, car elles ne sont pas optimisées et peuvent ralentir votre box Jeedom.

Pour faire simple, les fonctions « Sleep » et « Wait » que j’utilisais, bloquent les scénarios le temps indiqué dans le champ durée, ou  le temps que la condition soit valide. Pendant ce temps le scénario n’est pas en veille, mais bien actif et augmente la charge du processeur et la mémoire.

Il faut donc, dans la mesure du possible, utiliser les fonctions « Sleep » et « Wait », uniquement pour quelques secondes (10sec Max).

Autre défaut, vous ne pouvez pas voir les logs si vous arrêtez le scénario pendant le « Sleep » ou le « Wait », ce qui peut être gênant pour debugger votre scénario.

Le scénario utilise le Gateway Xiaomi, un détecteur de mouvement Xiaomi et une prise Xiaomi Plug.

Le principe :

  • La lumière s’allume en continu de 20:30 à 22:00, dès qu’un mouvement est détecté.
  • En dehors de cette plage horaire, la lumière s’allume dès qu’un mouvement est détecté et s’éteint lorsqu’il n’y a plus de mouvement, avec un minimum de 3 minutes pour éviter que la lumière ne clignote trop.
  • Lors des extinctions, j’ai ajouté une double vérification, car il m’est arrivé que l’action « Off » ne soit pas reçue correctement par la prise et donc la lumière restait allumée.

Mode du scénario = Provoqué.

Le scénario se déclenche sur la détection de mouvement.

Pour cela, on à le « Old way » qui consiste à sélectionner la commande dans le scénario :

Événement : #[Couloir chambre][Mouvement][status]

Et on a le « Good way » qui consiste à lancer le scénario directement depuis la commande. Cette technique sera à privilégier dans la V3 de Jeedom.

  • Aller dans l’équipement, cliquer sur la roue crantée, aller dans « Configuration avancée« .
  • Dans « Action sur la valeur » choisir « égal« , mettre « 1 » en valeur et « 0 » dans « plus de (min)« .
  • Cliquer sur « + Ajouter« .
  • Saisir « scenario » (sans accent) dans le champ.
  • Sélectionner le scénario d’allumage des lumières.
  • Choisir « Start » dans action.
  • Sauvegarder.

Nous avions déjà utilisé cette technique dans l’article Alertes Monitoring.

Création du scénario

SI #[Couloir][Lumière du couloir][Status]# == 0 ALORS

Pour commencer, on vérifie le statu de la lumière est si elle est éteinte, alors :

SI #time# >= 2030 ET #time# < 2200 ALORS

#[Couloir][Lumière du couloir][On]#

Si on est entre 20:30 et 22:00, alors on allume la lumière.

A 2200 FAIRE

#[Couloir][Lumière du couloir][Off]#

On programme l’extinction de la lampe pour 22:00.

SI #[Couloir][Lumière du couloir][Status]# == 1 ALORS

C’est là que je fais une double vérification. Ceci est facultatif si vous n’avez pas de raté dans l’envoi des actions.

Start scénario :[Couloir][Lumières][Off Lumière couloir]

Si malgré l’action « Off » la lumière est toujours allumée, alors je lance un scénario appelé « Off Lumière couloir »

Détail du scénario de verification :
SI #[Couloir][Lumière du couloir][Status]# == 1 et #[Couloir][Mouvement][Calme depuis : ]# >= 1 ALORS
   #[Couloir][Lumière du couloir][Off]#
   (sleep) Pause de : 1 seconde
          Start scénario : [Couloir][Lumières][Off Lumière couloir]
SINON
    message : Extinction réussi à formatTime(#time#)

Si la lumière est allumée et qu’il n’y a plus de mouvement, alors j’éteins la lumière et je relance le scénario jusqu’à ce que la lumière soit vraiment éteinte.

Pour être informé des erreurs, on peut ajouter un message du genre : « Extinction raté à formatTime(#time#) » avant l’action « Off » et « Extinction réussi à formatTime(#time#) » après le « Sinon« .

SINON

#[Couloir][Lumière du couloir][On]#

Si on n’est PAS entre 20:30 et 22:00, alors on allume la lumière.

DANS 3 FAIRE

SI #[Couloir][Mouvement][Calme depuis : ]#>=1 ALORS

#[Couloir][Lumière du couloir][Off]#

On programme l’extinction de la lampe dans 3 minutes, s’il n’y a pas de mouvement.

SI #[Couloir][Lumière du couloir][Status]# == 1 ALORS
(scenario) start de [Couloir][Lumières][Off Lumière couloir]

On relance la verification de l’extinction.(facultatif).

SINON

S’il y a un mouvement de détecté :

DANS 1 FAIRE
(scenario) start de [Couloir][Lumières][Lumière Couloir Chambre]

On relance le scénario dans 1 minute, pour refaire les tests.

SINON

Pour finir, si la lumière est allumée lorsque le scénario est provoqué par un mouvement avant l’extinction, ou par la fonction start scénario, alors on refait les tests, mais seulement pour l’extinction.

Je ne vous fais pas le détail, car c’est la même chose que la première partie, mais en plus simple .

Si vous avez des questions n’hésitez pas à laisser un commentaire.

SI #time# >= 2030 ET #time# < 2200 ALORS

A 2200 FAIRE

#[Couloir][Lumière du couloir][Off]#

SI #[Couloir][Lumière du couloir][Status]# == 1 ALORS
(scenario) start de [Couloir][Lumières][Off Lumière couloir]

SINON

SI #[Couloir][Mouvement][Calme depuis : ]#>=1 ALORS

#[Couloir][Lumière du couloir][Off]#

SI #[Couloir][Lumière du couloir][Status]# == 1 ALORS
(scenario) start de [Couloir][Lumières][Off Lumière couloir]

SINON

DANS 1 FAIRE
(scenario) start de [Couloir][Lumières][Lumière Couloir Chambre]

Variations

  1. Pour réduire le nombre de commandes, on peut supprimer les 2 #[Couloir][Lumière du couloir][On]# et en mettre un seul avant le SI #time# >= 2030 ET #time# < 2200 ALORS.
  2. Si vous ne voulez pas faire la verification de l’extinction via un scénario, si cela suffit, vous pouvez essayer de rajouter ce code  :
#[Couloir][Lumière du couloir][Off]#
sleep 2
#[Couloir][Lumière du couloir][Off]#

Conclusion

Ce scénario est plus optimisé que les anciens, si vous ne voulez pas refaire tous vos scénarios à cause du « Sleep » et du « Wait » essayez de les remplacer par les blocs « Dans » ou « A« .

Retrouvez la liste des plugins, les scénarios, les images et le matériel compatible Jeedom sur la page: Matériel, Plugin et plus.

N’oubliez pas non plus les bons plans et les ventes flash.

Si vous avez des idées de déclinaisons, d’optimisations ,des remarques ou besoin d’aide, n’hésitez pas à laisser un commentaire.

Lumière automatique sur présence (Corrigé, optimisé)
Notez cet article :
Partager :

Laisser un Commentaire

20 Commentaires sur "Lumière automatique sur présence (Corrigé, optimisé)"

avatar
  Notifications  
plus récents plus anciens plus de votes
Me notifier des
cedric

Bonjour,

Superbe amelioration, merci de ton partage!
Seul petit detail, si je puis me permettre, que je ferai dans ce cas:
cette heure est tellement variable par rapport au cycle du saison, donc de l’heure du coucher du soleil, et egalement de l’orientation de la piece visee.
Personnellement, juste au lieu de prendre une heure fixe, je prendrai la valeur « coucher du soleil » du plugin weather, ou autre.

Qu’en penses-tu? Merci,
Cordialement

Cedric

Hydro

Bonjour. Peut-on réduire drastiquement le temps entre l’allumage et l’extinction de la lumière avec le détecteur xiaomi ?
Imaginons dans des toilettes je voudrais 30sec. Mais j’ai cru lire que le détecteur xiaomi avait un temps d’attente de 2mn.

steph63
Je sais que tout le monde a des besoins différents et doit faire avec son matériel. Mais ça me parait bien compliqué ; pour ma cuisine et ma cave aussi, j’utilise un scénario simple, qui réagit à la seconde près et ne surcharge pas ma box. Si il a une présence ET que la luminosité est insuffisante, la lumière s’allume, quelque soit l’heure Elle ne s’éteint que lorsque personne n’est là DEPUIS 5 mn Le déclenchement est fait par le capteur de présence et la capteur de luminosité, mais le scénario se lance toutes les 5 mn pour vérifier qu’il… Lire la suite »
steph63

Je relance tout les 5mn, parce que si tu n’est plus là, il n’y a plus de détection et donc le capteur de présence est retombé,
Comment relancer le scénario si la luminosité ne change pas, par exemple la nuit?
sans la relance, l’extinction se ferait à la détection de mouvement et il y aurait un nouvel allumage, c’est le cron la clé.

L’allumage trop fréquent des ampoules, n’est pas très bon, avec 10mn ça serait encore mieux.

steph63

Tu as raison, mais je teste encore plus simple
Avec 2 conditions simples à la suite sans condition negative
je te tiens au courant

SI lastChangeStateDuration(#[Cave][20MultiSensor 6 (ZW100)][Présence]# ,0) > 300
ALORS
#[Cave][29Powernode 1][Off]#
SINON

SI #[Cave][20MultiSensor 6 (ZW100)][Présence]# == 1
ALORS
#[Cave][29Powernode 1][On]#
SINON

steph63
Je suis un peu fatiqué, ca ne fonctionne pas bien sûr, je refait avec DANS et des SI imbriqué SI #[Cave][20MultiSensor 6 (ZW100)][Présence]# == 1 ALORS #[Cave][29Powernode 1][On]# SINON DANS 5 FAIRE SI lastChangeStateDuration(#[Cave][20MultiSensor 6 (ZW100)][Présence]# ,0) > 240 ALORS #[Cave][29Powernode 1][Off]# SINON
Thierry

Bonjour.
Je cherche à faire le même type de scénario, mais je souhaite que cela ne soit allumé uniquement que sur détecteur de présence ET si la luminosité est en dessous de x LUX. (Fibaro).
En fait, je veux que la lumière fonctionne la nuit si présence.
Mon scénario fonctionne, mais je n’ai pu que trouver la solution sleep. pour la durée d’allumage de la lampe.
Aurais-tu une autre solution ?

jt60

Bonjour,
Je cherche a allumer une pièce SI la porte d’entrée s’ouvre, ET le soleil s’est couche, ET que l’Interrupteur de cette piece a été éteint depuis plus de 3 minutes.
J’ai configuré le scénario suivant.
SI
#[Détecteur][Porte Entree][Etat]# == 1 ET #time# > #[Domotique][Maison_Helio][Coucher du Soleil]# ET lastChangeStateDuration(#[Interrupteur Entrée][Interrupt Entree][Etat 1]# == 0) >180
ALORS
#[Interrupteur Entrée][Interrupt Entree][On 1]#

Tout fonctionne, sauf la prise en compte de la dernière condition (allumer Entrée uniquement si l’interrupteur a été éteint il y a plus de 3 minutes).
La commande LastCHangeStateDuration ne semble pas évidente (NB. j;ai bien historisé les données de l’interrupteur). Avez-vous des conseils ou alternatives?
Grand merci d’avance,

lilp

Bonjour,
Merci pour le tutos ainsi que pour les autres dont je me sert beaucoup.

J’aimerais cependant savoir, dans ton scénario, tu a mit « calme depuis » qui de base est l’absence de mouvement du plugin, tu l’a mise à 1. Si par exemple, je le met a 5mns, la lumière s’éteindra si 5mns après la détection du mouvement il n’y a pas de mouvement à 5mns précises? Ou si je bouge au bout de 3mns, puis plus rien pendant 2mns, il ne prendra pas la valeur?

trackback
Retour d’expériences sur Jeedom et liens vers tutos – Trucs et astuces informatique

[…] Jeedom Scénario – Lumière sur présence (Corrigé, optimisé) […]

princeOfToulon

Bonjour,

tout d’abord bravo pour ton blog, les differentes publications sont ultra précises et bien illustrés.
J’ai une question à propos de la commande « Calme depuis : » il semblerai que l’unit de retour de cette commande (no_motion) soit des secondes et non des minutes, par conséquent dans ton scenario si on veut 1min il faut mettre 60.
la valeur max de cette commande est 1800 qui correspond à 30min.

Tu confirmes ?

Merci à ceux qui ont contribué.
Votre don contribuera à fournir encore plus de contenu de qualité.