J’ai un problème pour une scène d’extinction différée lié à un détecteur de mouvement. Dans ma scène, je la mets en attente X minutes avant d’éteindre les lumières. Si pendant ce laps de temps i: y a eu une détection j’aurais voulu réinitialiser la scène d’arrêt et donc éviter une extinction trop proche de la détection et une autre extinction qui servirait à rien.
Je vois deux fonctionnalités possibles pour résoudre mon problème.
Soit permettre dans une scène A d’arrêter la scène en attente d’une scène B
Soit permettre de récupérer la durée depuis la dernière détection ( comme sur le dashboard)
là deux possibilités selon moi de traduire celà:
- soit c’est une fonctionnalité comme « attendre » au niveau des actions ou le mieux au niveau du déclencheur.
tant que ( [durée détection] < X minutes/heures…) { attendre }
- soit pour récupérer la valeur et donc après pouvoir faire du conditionnelle dans la scène. ( la scène off qui est en attente avant la nouvelle détection ne se finira pas )
@pierre-gilles : c’est pas grave pour le délai, l’important est que la demande sera traitée dans une prochaine release. ( çà évitera que mon fils m’appelle et m’engueule car la lumière s’éteint trop vite )
Salut,
Je rencontre le même problème :
J’ai un détecteur de mouvement et j’aimerai que la détection se mette en pause pendant un certain temps.
Une solution serait de pouvoir créer une variable “etat_precedent” que l’on mettrait à 1 lorsqu’il y a une première détection, soit par changement de l’état du capteur, soit par récupération du dernier état du capteur.
Cela fonctionnerait comme cela :
Déclencheurs : Changement de l’état de l’appareil (=détection) ET “etat_precedent” = 0
Actions : Envoyer message (pour tester) ET “etat_precedent” = 1 (on met la variable à 1)
Action : Attendre la durée souhaitée
Action : “etat_precedent” = 0 (on met la variable à 0)
En fait, deux actions “Créer la variable…” et “Mettre la variable à …” seraient bien
Dans un bloc Action :
Récupérer le dernier état de l’appareil Détecteur ET Créer la variable “etat_precedent” ET Mettre “etat_precedent” à la valeur souhaitée (cependant, je crois que l’on ne peut pas utiliser la valeur de l’état dans le même bloc action que “Récupérer le dernier état”, ce qui paraît logique car c’est séquentiel)
Donc plutôt :
Action :
Récupérer le dernier état de l’appareil Détecteur ET Créer la variable “etat_precedent”
Action :
Mettre la variable “etat_precedent” (on sélectionne dans la liste) à “1” (on saisit la valeur)
J’ai triché en faisant un déclenchement programmé toutes les 15 secondes, mais ça ne me plaît pas !
Je pense que cette demande est importante (déclencheur avec une durée de non-détection), elle est souvent demandée, néanmoins je ne suis pas 100% sûr sur comment elle pourrait être mise en place
@VonOx nous avait mis dans un autre sujet comment c’était fait chez Home Assistant :
Sauf que si je comprend bien, ça présuppose que le capteur de mouvement ait un retour à zéro (c’est à dire qu’il n’envoie pas que des « 1 » mais aussi des « 0 » (pas de mouvement) ), c’est bien ça @VonOx ?
Ah, je me disais bien, je viens de me rendre compte qu’on avait déjà beaucoup débattu sur ce sujet:
Je ne comprend toujours pas comment faire cette fonctionnalité (fonctionnellement bien-sûr, on ne parle pas de code ici), donc je suis preneur de tout feedback additionnel
vu que j’ai demandé je vais essayer de te décrire la fonctionnalité
Le détecteur passe à l’état détection. Lorsque qu’il repasse en veille, c’est à ce moment là que le timer devrait commencer. A chaque fois que le détecteur passe à l’état “détecté” alors le timer devra être remis à zéro.
Pour info dans le dashboard c’est déjà le cas, on a l’info lorsque l’on affiche le device avec la fonction “détection mouvement”.
Dans la feature du device, on ajoute une option “Tempo gérée par le capteur : Oui/Non”. Si Non alors on configure un temps de remise à zéro de base à 2 minute par exemple (un capteur de mouvement physique et non domotique est toujours pré-paramétré et on tourne la vis si on souhaite un temps différent, dans la logique il faut agir pareil),
on indique à l’utilisateur qu’il peut modifier ce temps dans la feature (ça peut même être un popup à en cas de création automatique du capteur),
Si le capteur n’a pas de tempo intégrée :
le capteur de mouvement envoi 1 ou true → détection de mouvement → valeur en DB = 1,
le capteur n’envoi rien pendant 2 minutes → valeur en DB = 0 après ces 2 min,
le capteur à envoyé 1 à nouveau après 1 min → La tempo de 2 minute repart à 0 → valeur en DB = 0 après ces 2 min,
Si le capteur a une tempo intégrée et envoi 0 :
le capteur de mouvement envoi 1 ou true → détection de mouvement → valeur en DB = 1,
le capteur de mouvement envoi 0 ou false → détection de mouvement → valeur en DB = 0.
Dès qu’une valeur « OFF » est reçue, Gladys lance un timer de 5 minutes
Pendant les 5 minutes, si une valeur « ON » est reçue, cela supprime le timer
Pendant les 5 minutes, si une valeur « OFF » est reçue, cela ne fait rien (et le timer actuellement lancé continue de courir)
Au bout des 5 minutes, si rien n’a annulé le timer, la scène s’exécute
Ce déclencheur fonctionne avec tout type de capteurs, cela peut-être sur un capteur de température avec une condition « température > 12°C ».
Une seule limite actuelle, mais qui me parait assez limité pour l’instant: Si Gladys redémarre pendant un timer, le timer est perdu.
Après, c’est le même comportement actuellement si une scène est en cours d’exécution et que Gladys redémarre, c’est perdu.
La PR:
Je serais preneur de retours sur la PR, notamment sur le code. J’aimerais être sûr qu’il n’y ait pas de cas que je n’ai pas traité !