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
- 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.
- 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.
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
Merci à toi pour ton retour.
Oui effectivement, j’utilise d’ailleurs les heures du soleil pour mes autres scénarios lumière. La je ne l’utilise pas car c’est dans un couloir sans fenêtre du coup il fait sombre même en journée.
Personnellement j’utilise le plugin héliotrope suite à un bug du plugin Weather mais apparemment c’est réglé.
voila se que je fais dans mon salon par exemple :
SI #time# <= time_op(#[Informations][Lyon Jour Nuit][Lever du Soleil]#,+10) OU #time# >= time_op(#[Informations][Lyon Jour Nuit][Coucher du Soleil]#,+10) ALORS…
Cordialement,
Guillaume.
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.
Bonsoir,
On peut reduire à 1 minute. C’est pareil avec l’application Mi-home.
Regarde sur l’article du capteur de mouvement : https://domotique.guillaumebraillon.fr/xiaomi-smart-home-installation-et-configuration-du-detecteur-de-mouvement/#Placement_du_capteur_de_mouvements
Guillaume.
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 y a bien eu une absence.
Impossible de mettre une image dans le commentaire, donc j’ai exporté le scénario en texte via Jeedom
Si ça peut servir a quelqu’un et si ça vous correspond, n’hesitez pas.
– Nom du scénario : lumiere cuisine
– Objet parent : Cuisine
– Mode du scénario : all
– Programmation : */5 * * * * *
– Evènement : #[Cuisine][Cuisine][Présence]#
– Evènement : #[Cuisine][Cuisine][Luminosité]#
SI #[Cuisine][Cuisine][Luminosité]# 1
)
SINON
SI lastChangeStateDuration(#[Cuisine][Cuisine][Présence]# ,0) > 300
ALORS
#[Cuisine][19FGS-211 Simple Charge][Off]# – Options : Array
(
[enable] => 1
)
SINON
Bonsoir,
Je ne sais pas pourquoi tu ne peux pas coller le reste du texte, j’ai déjà fait des commentaires plus long.
Pour ton scénario je vois ce que tu veux dire mais je ne comprends pas le but de faire un Cron toutes les 5 minutes pour tester s’il y a un mouvement, c’est un peu gourmand car même la nuit ou lorsqu’il n’y a personne le scénario est lancé et donc fait fonctionner Jeedom pour rien.
Après comme tu dis « tout le monde a des besoins différents et doit faire avec son matériel. » l’important c’est que le fonctionnement au quotidien soit satisfaisant.
Guillaume.
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.
Effectivement il faudrait que je regarde ton scénario en entier.
Pourquoi ne pas utiliser un bloc DANS 5 ou 10 minutes programmé après le dernier mouvement et tu le relance ou pas en fonction de tes critères (Mouvement, Luminosité…).
Tu as un Cron grâce au bloc DANS mais qui ne se lance qu’après un mouvement ou allumage de la lumière.
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
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
Salut,
Moi je ferais un truc comme ça :
SI #[Cave][29Powernode 1][Off]# ALORS
#[Cave][29Powernode 1][On]#
DANS 5 FAIRE
SI #[Cave][20MultiSensor 6 (ZW100)][Présence]# == 0 ALORS
#[Cave][29Powernode 1][Off]#
SINON
Relance ton scénario
SINON
SI #[Cave][20MultiSensor 6 (ZW100)][Présence]# == 0 ALORS
#[Cave][29Powernode 1][Off]#
SINON
Relance ton scénario
Si c’est éteint alors j’allume et dans 5 minutes si ya pas de mouvement j’éteins sinon je relance le scénario.
Sinon si c’est allumé et qu’il n’y a pas de mouvement j’éteins sinon je relance le scénario.
C’est un peu la même chose que le scénario de l’article sans le test de la plage 20:30 22:00 et le double test d’extinction.
Bon courage.
Guillaume.
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 ?
Bonjour,
Le Sleep n’est pas à bannir complètement il faut juste éviter de l’utiliser avec des délais trop long, je dirais supérieure à 60 secondes.
La bloc « Dans » est donc la solution pour les durées > à 60 s.
Je pense qu’il y a la solution à ton problème dans l’article.
Bon courage.
Guillaume.
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,
Bonjour
C’est la fonction qui n’est pas saisi correctement.
Il ne faut pas mettre ==0 mais ,0.
lastChangeStateDuration(commande,valeur) : donne la durée en secondes depuis le dernier changement d’état à la valeur passée en paramètre.Attention, la valeur de l’équipement doit être historisée.
Ex : lastChangeStateDuration(#[Salle de bain][Hydrometrie][Humidité]#,0) : renvoie 300 si cette valeur est passée à 0 la dernière fois il y a 5 minutes (même si depuis sa valeur a changé)
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?
Bonjour et merci pour votre message
La commande absence de mouvement de remets à zéro des qu’il y a un mouvement.
C’est donc 5 minutes après le dernier mouvement.
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 ?
Bonjour et merci pour ton commentaire.
Oui c’est bien en secondes et la valeur max est de 1800.
J’explique plus en détail ici : https://domotique.guillaumebraillon.fr/jeedom-scenario-lumiere-sur-presence/#Detecteur_de_mouvement
Bonjour
j’essaye en vain de mettre cela en place sur mon jeedom, mais je me bute à deux soucis.
Le premier, ma lumière s’éteint malgré ma présence, après le délai « dans », il me semble pourtant t avoir mis les mêmes conditions.
Le second point (qui fait suite au premier), il s’agit d’un plafonnier philips, et du coup, comme il s’éteint après le délai « dans », je l’allume à l’aide de la télécommande, et du coup, il ne s’éteint pasensuite, malgrès le fait qu’il n’y ai plus de mouvement. (pour mon scénario, je tient compte des différents crenau horaire avec des si/alors/sinon et le scénario se déclenche sur présence, directement dans la configuration du capteur)
Possible de transmettre une capture ?
je commence à perdre patience lol.
D’avance, merci pour les éclaircissements.
O.
Bonjour,
Il faut voir dans les logs du « dans » pourquoi il passe a off. Si il y a un mouvement il devrait relancer le scénario.
Pour la télécommande il faudrait lancer le scénario lorsque l’état de la lampe passe a on pour qu’il programme l’extinction si plus de mouvement.
Bonjour, et merci Guillaume,
je vais aller dans cette direction (je n’avais pas pensé à lancer le scenario sur l’état de la lampe, bien vu)
O.
Bonjour Guillaume,
au début de mon scénario, il se déclenche selon le mouvement, je fais un contrôle sur la luminosité, dans lequel j’imbrique des si/alors sur des horaires.
Mais sur mon si alors du début cf la condition de luminosité, , j’ai mis une valeur dans « sinon » en disant « dans » 3mn dans laquelle j imbrique un wait , plus de mouvement pendant 2 minute (et timout de 2mn) pour demander d’éteindre la lumière. Et j’ai l’impression que c’est cette commande qui ne fonctionne pas (ou plutôt je dois mal la configurer. (Si ej regarde les logs, j’ai une sous tâche qui coupe la lumière, d’où ma supposition )
et comme je procède sur toute mes lampes ainsi….elle se coupent toutes malgré le mouvement, tu te doute bien à quel point cela peut être embêtant, d’où mes « cheveux gris » 🙂
O.
Bonjour,
A quoi sert le Wait ? une fois dans le DANS 3mn faire un test si mouvement ==0 alors Lumière OFF sinon dans 1 mn relance du scénario.
Bonjour
merci pour cette suggestion, cela ..fonctionne, ouf.
En fait je me suis inspiré d’un article de saraka ( http://sarakha63-domotique.fr/extinction-automatique-des-lumieres-jeedom-domotique/#prettyPhoto) où il utilise la commande wait.
j’ai dû le faire à mauvais escient..
Merci en tous les cas pour ce retour, c’est top !
O.