Comme l’indique le titre, j’ai élaboré un scenario dont l’objectif est d’automatiser le verrouillage de la porte d’entrée.
Ce que j’en attends :
la porte se verrouille si tout le monde est absent
la porte se verrouille à 21:30 si il y a au moins une personne présente
la porte se déverrouille si quelqu’un rentre après 21:30 puis elle se reverrouille après 5 minutes
la porte de déverrouille à 07:00 si quelqu’un est présent
J’ai trois déclencheurs :
le premier à 07:00 et le second à 21:30.
le troisième en fonction d’une variable présence
Les présences sont obtenues grâce à 3 virtuels (téléphones + nutales focus) : un virtuel par personne + un virtuel présence globale. Ce dernier peut prendre 3 valeurs :
Je ne vais pas tout dire tout de suite histoire d’avancer progressivement
Première chose qui m’interpelle : Pourquoi définir/utiliser des variables dans ton scénario ? Je n’ai pas vu d’intérêt à première vue. L’utilisation des commandes de présence du virtuel doivent justement permettre de savoir qui est là ou pas.
Deuxième chose : Un time_between qui permet de voir si c’est entre 21h30 et 21h31 ne sert à rien. Il suffira de vérifier que #time# == 2130
Troisième chose pour le moment mais c’est un conseil général : Evite d’utiliser des accents dans les tags/variables (comme PRÉSENT), c’est pas terrible
Merci pour ta réponse. Je vais commencer par le plus simple pour moi :
C’est rectifié.
J’ai mon déclencheur à 21:30 et je me suis dit que si je mettais la commande pile poil à la même heure elle risquait de ne pas s’exécuter pour quelques secondes de retard. Du coup j’ai pensé qu’un battement d’une minute me permettrait d’éviter ce problème.
C’est la partie la plus difficile pour moi. Au départ, j’avais conçu un scenario en omettant de considérer que tout le monde n’était pas forcément absent ou présent en même temps.
Quand je m’en suis rendu compte, j’ai cherché une solution en jouant uniquement sur les virtuels mais je n’y suis pas parvenu. J’ai bloqué sur la partie où une personne est présente à 21:30 et que l’autre rentre plus tard.
C’est ce que j’avais fait dans mon premier scenario (je crois parce que je l’ai effacé) mais dans ce cas « presence_globale » peut prendre la valeur 1 ou 2. On ne sait donc pas si quelqu’un doit rentrer après 21:30. Je me trompe ?
Je commençais par traiter les 3 cas les plus simple. On a pas encore traité le cas où quelqu’un rentre entre 21h30 et 07h00, tu veux que j’en parle maintenant ?
OK, alors il faut bien utiliser ta vraie commande de présence globale pour les SI n°1 et n°2, sinon ça marchera pas
Du coup restera à traiter le dernier cas. Il y a plusieurs façon de procéder, j’en propose une.
Il va falloir savoir si le scénario est déclenché par l’une des commandes de présence afin de différencier l’action du déclenchement par le scénario => #trigger# == 'virtualCmd'
Ensuite il faudra vérifier si c’est quelqu’un qui arrive donc si la valeur de la commande vaut 1 => #trigger_value# == 1
Mais tu veux que cela ne soit le cas qu’entre 21h30 et 0700 => time_between(#time#, 2130, 0659)
Donc :
SI #trigger# == 'virtualCmd' Alors
SI #trigger_value# == 1 && time_between(#time#, 2130, 0659) Alors
Déverrouille
Il ne faut pas écrire le mot « SI » dans les conditions. Je le mets pour t’indiquer qu’il faut un bloc SI mais faut pas l’écrire (du coup même chose pour les bloc de SI n°2 et n°3, j’avais pas vu tout à l’heure.
Ensuite reste plus qu’à reverrouiller après 5mn donc après l’action de Deverrouillage il faudra ajouter ce que tu avais fait dans ton autre scénario :
Mais il te manque en déclencheur tes 2 commandes de présence Philippe et Anne afin que le scénario se déclenche quand il y a un changement de l’état de présence de l’un de vous deux.
J’ai essayé de faire avec toi du pas à pas en suivant des étapes pour que tu comprennes. J’espère que c’est le cas et que sinon tu aurais posé des questions
Restera à tester voir comment ça se comporte. Si les commandes d’états suivent bien la réalité de votre présence ça devrait aller mais il pourrait y avoir des petites choses à rectifier … faut voir.
Si besoin d’aide il faudra bien mettre les logs du scénario en indiquant la réalité du terrain pour que l’on puisse analyser et adapter un peu au besoin
J’ai modifié l’heure de verrouillage à 22:30 pour pouvoir tester tout de suite.
Pour le reste je te tiendrai au courant demain.
En attendant, je te remercie beaucoup et je te souhaite une bonne fin de soirée
[2026-02-02 22:30:08][SCENARIO] -- Début : . Tags : {"#trigger#":"schedule","#trigger_name#":"","#trigger_id#":"","#trigger_message#":"Scénario exécuté automatiquement sur programmation","#trigger_value#":null}
[2026-02-02 22:30:08][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Appartement][Présence globale (V)][Etat]# == 0
[2026-02-02 22:30:08][SCENARIO] Evaluation de la condition : [2 == 0] = Faux
[2026-02-02 22:30:08][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-02 22:30:08][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 2230 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-02 22:30:08][SCENARIO] Evaluation de la condition : [2230 == 2230 && 2 != 0] = Vrai
[2026-02-02 22:30:08][SCENARIO] - Exécution du sous-élément de type [action] : then
[2026-02-02 22:30:09][SCENARIO] Exécution de la commande [Entrée][Serrure entrée][On (Verrouillage)]
[2026-02-02 22:30:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 0700 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-02 22:30:09][SCENARIO] Evaluation de la condition : [2230 == 0700 && 2 != 0] = Faux
[2026-02-02 22:30:09][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-02 22:30:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger# == 'virtualCmd'
[2026-02-02 22:30:09][SCENARIO] Evaluation de la condition : ["schedule" == 'virtualCmd'] = Faux
[2026-02-02 22:30:09][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-02 22:30:09][SCENARIO] Fin correcte du scénario
verrouillage de la porte à 21:30 si il y a une présence
déverrouillage de la porte à 07:00 si il y a une présence
verrouillage de la porte quand tout le monde est absent
Ce qui n’a pas fonctionné :
déverrouillage de la porte quand nous sommes rentrés
Voici le log du scenario quand on est sorti (11:45) puis quand on est rentré (11:59) :
[2026-02-03 11:45:24][SCENARIO] -- Début : . Tags : {"#trigger#":"virtualCmd","#trigger_name#":"[Appartement][Présence Anne (V)][Etat]","#trigger_id#":14605,"#trigger_message#":"Scénario exécuté automatiquement sur événement venant de : [Appartement][Présence Anne (V)][Etat] (0)","#trigger_value#":0}
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Appartement][Présence globale (V)][Etat]# == 0
[2026-02-03 11:45:24][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [action] : then
[2026-02-03 11:45:24][SCENARIO] Exécution de la commande [Entrée][Serrure entrée][On (Verrouillage)]
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 2130 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-03 11:45:24][SCENARIO] Evaluation de la condition : [1145 == 2130 && 0 != 0] = Faux
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 0700 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-03 11:45:24][SCENARIO] Evaluation de la condition : [1145 == 0700 && 0 != 0] = Faux
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger# == 'virtualCmd'
[2026-02-03 11:45:24][SCENARIO] Evaluation de la condition : ["virtualCmd" == 'virtualCmd'] = Vrai
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [action] : then
[2026-02-03 11:45:24][SCENARIO] Exécution d'un bloc élément : 653
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger_value# == 1 && time_between(#time#, 2130, 0659)
[2026-02-03 11:45:24][SCENARIO] Evaluation de la condition : [0 == 1 && 0] = Faux
[2026-02-03 11:45:24][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:45:24][SCENARIO] Fin correcte du scénario
------------------------------------
[2026-02-03 11:59:34][SCENARIO] -- Début : . Tags : {"#trigger#":"virtualCmd","#trigger_name#":"[Appartement][Présence Anne (V)][Etat]","#trigger_id#":14605,"#trigger_message#":"Scénario exécuté automatiquement sur événement venant de : [Appartement][Présence Anne (V)][Etat] (1)","#trigger_value#":1}
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Appartement][Présence globale (V)][Etat]# == 0
[2026-02-03 11:59:34][SCENARIO] Evaluation de la condition : [2 == 0] = Faux
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 2130 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-03 11:59:34][SCENARIO] Evaluation de la condition : [1159 == 2130 && 2 != 0] = Faux
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# == 0700 && #[Appartement][Présence globale (V)][Etat]# != 0
[2026-02-03 11:59:34][SCENARIO] Evaluation de la condition : [1159 == 0700 && 2 != 0] = Faux
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger# == 'virtualCmd'
[2026-02-03 11:59:34][SCENARIO] Evaluation de la condition : ["virtualCmd" == 'virtualCmd'] = Vrai
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [action] : then
[2026-02-03 11:59:34][SCENARIO] Exécution d'un bloc élément : 653
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger_value# == 1 && time_between(#time#, 2130, 0659)
[2026-02-03 11:59:34][SCENARIO] Evaluation de la condition : [1 == 1 && 0] = Faux
[2026-02-03 11:59:34][SCENARIO] - Exécution du sous-élément de type [action] : else
[2026-02-03 11:59:34][SCENARIO] Fin correcte du scénario
A première vue, je dirais que j’ai oublié d’envisager qu’on puisse rentrer ensemble à n’importe quelle heure. J’en déduis qu’il faudrait ajouter #présence_globale# en déclencheur mais sans aucune certitude.
Plus que « ensemble » c’est surtout la possibilité de déverrouiller quand quelqu’un rentre en dehors de la plage 21h30 → 0659 qui n’est pas encore considéré.
Actuellement le dernier bloc SI vérifie que quelqu’un rentre entre 21h30 et 0659, Anne ou toi pour déclencher l’ouverture et referme 5mn plus tard.
Il faut peut-être ajuster la plage horaire du coup ?
Tu voulais que la porte puisse se déverrouiller mais que quand vous êtes tous les deux là (1 déjà présent et l’autre rentre ou vous rentrez ensemble) ?