Scénario: action sur déclenchement

Bonjour,

Je me casse la tête sur un scénario. Je m’explique.

On a une dame qui vient nettoyer 1 jour par semaine quand on est au travail.

Je souhaite faire un scénario qui fait ceci:

Si on est dans la plage horaire de nettoyage (définie dans un agenda)

Alors si en entrant dans la maison elle désactive l’alarme (Alarme = 0) alors on monte 1 volet et on passe une variable à 1

Quand elle part, si elle active l’alarme (Alarme = 1) alors on descend 1 volet

Si elle se rend compte qu’elle a oublié quelque chose et qu’elle re rentre dans la maison et coupe l’alarme à nouveau, alors le volet ne monte plus (on voit que la variable a été passée à 1)

Quand elle remettra l’alarme en sortant le volet redescendra (c’est une sorte de précaution pour être certain qu’il est descendu).

Tout fonctionne sauf que si l’alarme est activée (Alarme = 1) , toute les 50 minutes, le volet descend (si on ne l’avait pas descendu et que l’on comptait le laisser levé).

En fait le scénario se dit Alarme = 1 et on est dans la plage horaire de nettoyage donc je descend le volet. Il vérifie simplement que les conditions sont remplies.

Moi ce que je voudrais c’est que cela réagi sur un changement d’état de l’alarme de 0 ==> à 1

Et idem dans le cas de l’alarme pour la montée des volets : réagir sur un changement d’état de l’alarme de 1 ==> à 0

Ca doit être faisable avec des variables ou autre mais là je suis perdu :-/

Pouvez-vous m’aider

Merci beaucoup


Bonjour,

Un autre angle d’attaque possible : conditionner la montée du volet à un test lié à la dernière activation (et pas désactivation) de l’alarme.

Genre : si « alarme a été activée depuis moins de 15 mn », ne pas lever le volet.

Les fonctions de calcul de temps feront l’affaire : lastChangeStateDuration() bien sûr. Comme je ne l’ai pas encore utilisée, il y a peut-être des subtilités d’application. Mais si ça ne passe pas avec celle-ci, il doit être possible d’utiliser duration(), durationbetween(), lastStateDuration(),… dans le même ordre d’idée : déterminer quand a eu lieu la dernière activation de l’alarme, et agir (ou non ) en fonction. Plus besoin de variable en passant :wink:.

Bonjour Avallo,

Effectivement lastChangeStateDuration() est une idée mais en sois mon système de variable fonctionne. J’ai expliqué l’ensemble de mon scénario pour donner une compréhension de l’ensemble.
Le problème qui me préoccupe c’est que toutes les 50 minutes (pour une raison que j’ignore) le scénario fait un check : le scénario se dit Alarme = 1 et on est dans la plage horaire de nettoyage donc je descend le volet. Il vérifie simplement que les conditions sont remplies. Donc toutes les 50 minutes il envoie l’ordre de descendre les volets.

Moi ce que je voudrais c’est que cela réagi sur un changement d’état de l’alarme de 0 ==> à 1
Je cherche donc une solution pour détecter le changement d’état de l’alarme et suite à celà faire les actions de descente ou montée du volet
Merci

« Détecter le changement d’état de l’alarme » : tu le fais déjà via ton déclencheur de scénario, non ?

Si tes volets reçoivent l’ordre de descendre toutes les 50 minutes, ce n’est pas à cause du scénario (en chantier si j’ai bien compris) dont tu as mis des copies d’écran ci-dessus. Ne serait-ce parce qu’il n’y a pas de commande de descente sur les copies d’écran !

Tu as probablement un autre scénario quelque part qui met le brin. Si tu ne le trouves pas facilement : va sur l’équipement Jeedom correspondant à ton volet, appui 1 fois sur le bouton de suppression sans confirmer bien sûr, apparaitra la liste des objets, scénarios, commandes, etc. qui sont reliés à ton volet. Le scénario caché s’y trouvera.

Non je pense que c’est mon capteur d’état de l’alarme.
Dans un autre scénario, toutes les 50min il renvoi sont état et c’est interprété comme un déclenchement. Voici le log de cet autre scénario:
On voit bien que c’est toutes les 50min. Mais pourquoi je n’en sais rien.
Je devrais mettre une sorte de contrôle si état pas différent alors ne rien faire . Mais je ne sais pas comment faire ça :-/
------------------------------------
[2020-06-18 07:50:19][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-18 07:50:19][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 07:50:19][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-18 07:50:19][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-06-18 07:50:19][SCENARIO] Exécution de la commande [Aucun][Pushover_Alex][PushFromJeedom] avec comme option(s) : {« background »:« 0 »,« title »:« Alarme »,« message »:« L’alarme vient d’\u00eatre d\u00e9sactiv\u00e9e »}
[2020-06-18 07:50:20][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 07:50:20][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-18 07:50:20][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-06-18 07:50:20][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-06-18 08:40:33][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-18 08:40:34][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 08:40:34][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-18 08:40:34][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 08:40:34][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 08:40:34][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-18 08:40:34][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 08:40:34][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-06-18 09:30:55][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-18 09:30:55][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 09:30:55][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-18 09:30:55][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 09:30:55][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 09:30:55][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-18 09:30:55][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 09:30:55][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-06-18 10:21:17][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-18 10:21:17][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 10:21:17][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-18 10:21:17][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 10:21:17][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 10:21:17][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-18 10:21:17][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 10:21:17][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-06-18 11:11:38][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-18 11:11:38][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 11:11:38][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-18 11:11:38][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 11:11:38][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-18 11:11:38][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-18 11:11:38][SCENARIO] Non exécution des actions pour cause de répétition
[2020-06-18 11:11:38][SCENARIO] Fin correcte du scénario

Ca pourrait pas être l’option "toujours répéter " dans la gestion des données de ta commande etat ? Si tu mets sur automatique tu n’auras peut-être pas de remontée toutes les 50 min…

C’est quand même curieux ces 50 mn. Ton état d’alarme qui change, ne serait-ce que très brièvement, toutes les 50 mn, ça ne va pas faciliter l’intégration domotique !

Je viens de vérifier, dans la gestion des données de ma commande d’état il est sur automatique. Je devrais le mettre sur « jamais répéter »?

Oui essaye jamais répéter… a tester

je viens de le faire. Verdict dans 50 min :wink:

Tu as une idée de la durée de ces changements d’état intempestifs ? Car s’il n’y a pas moyen de les supprimer (sans outrage hein Livyo :wink:, mais je ne parierai pas sur la réussite de ta proposition), il va falloir trouver à les filtrer d’une manière ou d’une autre.

Oula, je le prends bien car je ne suis pas du tout convaincu de ma proposition ! Mais bon au pire ça coute pas grand chose et permet de voir comment c’est historisé :wink:

Et bien ça semble résoudre le problème. Voici le log de cette nuit où il n’y a pas eu d’action toutes les 50 min. Je vais pousser mes tests plus loin avec un autre scénario + complexe
------------------------------------
[2020-06-20 00:08:02][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-20 00:08:02][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-20 00:08:02][SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2020-06-20 00:08:02][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-06-20 00:08:02][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-20 00:08:02][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2020-06-20 00:08:02][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-06-20 00:08:02][SCENARIO] Exécution de la commande [Aucun][Pushover_Alex][PushFromJeedom] avec comme option(s) : {« background »:« 0 »,« title »:« Alarme »,« message »:« L’alarme vient d’\u00eatre activ\u00e9e »}
[2020-06-20 00:08:03][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-06-20 10:23:17][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Maison][Etat Alarme][ON-OFF].
[2020-06-20 10:23:17][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-20 10:23:17][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-06-20 10:23:17][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-06-20 10:23:17][SCENARIO] Exécution de la commande [Aucun][Pushover_Alex][PushFromJeedom] avec comme option(s) : {« background »:« 0 »,« title »:« Alarme »,« message »:« L’alarme vient d’\u00eatre d\u00e9sactiv\u00e9e »}
[2020-06-20 10:23:18][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-20 10:23:18][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2020-06-20 10:23:18][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-06-20 10:23:18][SCENARIO] Fin correcte du scénario
------------------------------------