Evitez les répétitions

Hello,

Je surveille mes démons à l’aide de Jeedom Link.
J’ai un scénario qui se déclenche en cas de coupure d’un démon.

Si un démon est coupé, le scénario est enclenché :

  • Envoi d’un message m’indiquant la coupure du démon en question
  • 15 minutes plus tard, je reçois un autre message avec le récapitulatif de l’état de tous les démons surveillés

Cela fonctionne, pas de soucis.
Mais ce matin, j’ai été spammé.
En effet chaque 10 minutes, je recevais un message m’indiquant que le démon X était tombé (c’était bien le cas).
Le démon de ce plugin tombait effectivement peu de temps après tentative de relance automatique.

Comment éviter la répétition du message de manière simple?

J’ai une idée mais je trouve cela lourd :

  • Créer une variable par démon
  • Après envoi du message d’alerte, enregistrer la valeur de la date actuelle (avec heure et minutes) dans la variable
  • Avant chaque envoi de message, je compare la variable à la date/heure actuelle et si l’écart est supérieur à 1h par exemple, je n’envoie pas de message. Sinon, j’en envoie un.

Est-ce qu’il y a un moyen plus simple?

Si tu as un si:

Note

Sur les blocs de type Si/Alors/Sinon, des flèches circulaires situées à gauche du champ de condition permettent d’activer ou non la répétition des actions si l’évaluation de la condition donne le même résultat que la précedente évaluation.

Comment fais-tu le déclenchement de ton scénario ?

Hello,

Pas certain que ce soit le bon plan car dans mon IF, j’ai ceci :
#[Maison][JeedomLink][Démon Alexa - API]# == 0

Comment cela va se comporter? Qu’est-ce qu’une répétition au final?
Si le démon tombe une heure plus tard, cela va être considéré comme une répétition?
Ou, vu qu’après mon IF, j’ai un DANS 15 minutes, FAIRE… Envoi du message récapitulatif de tous les démons… Est-ce que après l’envoi du récapitulatif, il ne considérera plus le premier message comme une répétition?

Voici mon déclencheur :
#[Maison][JeedomLink][Démon Z-Wave]# == 0 OU #[Maison][JeedomLink][Démon SMS]# == 0 OU #[Maison][JeedomLink][Démon Alexa - API]# == 0 OU #[Maison][JeedomLink][Démon Caméra]# == 0 OU #[Maison][JeedomLink][Démon ESPeasy]# == 0 OU #[Maison][JeedomLink][Démon Google Cast]# == 0 OU #[Maison][JeedomLink][Démon Homebridge]# == 0 OU #[Maison][JeedomLink][Démon Xiaomi Home]# == 0

Pour le contrôle des démons de mon Jeedom, j’ai fait:

Un scénario pour chaque démon avec pour déclencheur, le changement d’état du statut du démon
#[Box domotique][Controle maison][Démon Abeille]#

Dans le scénario, je fais un Si pour vérifier si ce démon est à 0
Si = 0, je fais un sleep de 45 secondes puis je refais un Si pour voir si le démon est toujours à 0
Si = 0, j’envoi une commande pour redémarrer le démon, puis je fais un sleep de 45 secondes, puis je refais un Si pour voir si le démon est toujours à 0
Si = 0, alors j’envoi un message pour dire qu’il y a vraiment un problème avec le démon

Par contre, j’avoue que je me suis jamais retrouvé avec une alerte du démon qui a duré longtemps, la seule fois où c’est arrivé, je suis allé direct sur mon Jeedom. A voir sur démon à 0 plus long…

Bonjour,

Une répétition c’est quand la valeur reste identique lors de 2 rafraîchissements successifs. Donc aucun limitation de durée pour une répétition.

Mais il existe la fonction « remise à zéro des SI ». A appeler dans un bloc DANS 1h après la 1ere fois que le démon tombe.

Hello,

Ok, merci.
Mais si chaque 10 minutes mon scénario est déclenché (mais que je ne suis pas pollué par les messages car je vire les répétitions), je n’atteindrais jamais le bloc « DANS 1h » ou bien?

En fait, quand j’ai été spammé toute la nuit jusqu’au réveil, je n’ai jamais reçu mon message récapitulatif qui était « DANS 15 minutes » car chaque 10 minutes mon scénario se ré enclenchait.

Je crois que je vais partir sur mon idée de base avec les variables.
Je n’ai pas l’impression d’avoir trop le choix.

Tu mets ton bloc DANS dans le bloc SI pour lequel tu as désactivé la répétition

#[Maison][JeedomLink][Démon Alexa - API]# == 0

La non-répétition permet de ne pas exécuter les actions dans le bloc SI, et donc n’efface pas le CRON issu du bloc DANS (je viens de vérifier).

Exemple :

  • Démon tombe : SI #[Maison][JeedomLink][Démon Alexa - API]# == 0 --> VRAI
    –> alors programmation du bloc DANS avec « remise à zéro des SI »

2 options pour la suite :

  1. Démon OK : SI #[Maison][JeedomLink][Démon Alexa - API]# == 0 --> FAUX
    –> alors répétition réinitialisée pour ce bloc SI (par contre il restera le CRON « remise à zéro des SI » mais on s’en fiche un peu car cela vient d’être RAZ justement. Possible de le supprimer par un bloc CODE après un ELSE).
  2. Démon toujours NOK : SI #[Maison][JeedomLink][Démon Alexa - API]# == 0 --> VRAI
    –> Comme interdiction de la répétition : aucune nouvelle programmation du bloc DANS, qui aura donc lieu 1h après la 1ère fois que le démon sera tombé.

Hello,

J’ai mis ceci en place hier soir.
Ce matin j’ai corrigé le problème du démon.

Tout fonctionne très bien.
Je n’ai plus qu’à appliquer ça sur tous les démons.

Merci !

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.