Défaut dans le nouveau déclencheur avec délai

@pierre-gilles , je pense avoir repéré un défaut dans le déclencheur avec délai : J’ai activé cette option ‹ délai › sur un déclencheur, et il me semble que l’autre option ‹ seulement si le seuil est dépassé › n’est plus prise en compte correctement.

Concrètement, je surveille la température de mon frigo pour qu’il ne soit pas trop froid. Je veux que Gladys me prévienne si ça passe sous les 0°, uniquement si cela dure depuis plus de 5 minutes, sans répéter l’information à chaque nouvelle mesure toujours inférieure à 0°.

J’ai donc cela comme déclencheur :

Mais j’observe cela dans mes alertes sur Télégram :
image

Et sur la même période, voilà la courbe de température :
image

Le déclencheur n’aurait donc dû se déclencher qu’une seule fois, à 18h37. Mais pas les deux suivantes.

Est-ce que mon analyse est bonne ?

Effectivement c’est pas normal :slight_smile:

J’ai créé une issue Github:

Je reviens vers toi dès que j’ai pu regarder, au vu de mon calendrier ça sera probablement en janvier 2025 ! (fin d’année chargée!)

OK merci ! C’est pas critique, donc ça peut attendre un peu…

Salut @StephaneB :slight_smile:

Je viens de faire des tests, et le fonctionnement m’a l’air correct. Je n’arrive pas à reproduire un mauvais fonctionnement.

Dans ton cas, comme les températures oscillent autour de 0°C, il est possible qu’une valeur repasse à 0°C, puis repasse à -0.1°C, ce qui remet à zéro le fonctionnement vu que le seuil est repassé

Tes messages ne peuvent pas attester du bug, car tes messages sont déclenchés avec un « récupérer le dernier état » qui lui se déclenche après les 5 minutes d’attente, donc ce n’est pas la même valeur que celle dans le déclencheur.

Si tu veux qu’on pousse l’enquête plus loin, il faudrait extraire de ta base de donnée les vrais valeurs reçues par Gladys et rejouer le même scénario, mais bon à toi de me dire si c’est un comportement que tu continue de voir ou pas :slight_smile:

Merci d’avoir tenté de reproduire. Je vais regarder ça de plus près et je te redis.

1 « J'aime »

@pierre-gilles,
Je suis retombé sur ce souci que tu n’avais pas réussi à reproduire. Donc d’après moi il est bien toujours présent. Ma nouvelle situation est peut-être plus facile à reproduire :

  • DansGladys, j’ai défini un appareil MQTT de type « commutateur ».
  • Un flux node-red surveille mon réseau toutes les 5 minutes, et envoie « 0 » ou « 1 » à l’appareil MQTT, en fonction de la connexion internet : absente ou présente
  • Dans Gladys, une scène est censé se déclencher quand l’appareil MQTT passe à 0 et le reste pendant au moins 12 minutes. Voilà sa config:

Le souci, quand la connexion internet est perdue et que Node-red envoie donc un « 0 » toutes les 5 minutes, est le suivant:

  • Au premier « 0 » reçu, la scène détecte le passage à OFF, et ne me prévient que 12 minutes après. Ca c’est ok.
  • mais après ces 12 minutes, un nouveau « 0 » reçu" relance le déclencheur qui active la scène à nouveau 12 minutes après.
  • Donc en pratique, la scène se déclenche toutes les 15 minutes (alors que seul le premier déclenchement m’intéresse)

Avec ce contexte, arrives-tu à reproduire ?

Salut @StephaneB :slight_smile:

Je viens de faire un test avec exactement le comportement que tu m’as décris (mais en réduisant le temps d’attente à 1 minute pour que ce soit plus simple à voir)

Le comportement marche parfaitement chez moi, un seul message reçu, 1 minute après la réception du premier 0 :

A mon avis, chez toi, l’état repasse à 1 entre les deux 0.

Tu peux investiguer grâce au widget « graphique » sur un capteur binaire pour voir quand il passe de 0 à 1.

Merci d’avoir pris le temps de tester, @pierre-gilles. Mais je ne suis pas sûr qu’on fasse exactement le même test :wink:.

J’ai vérifié, et mon appareil ne repasse pas à 1 entre deux déclenchements. Comme c’est un capteur binaire, j’en ai la certitude avec le widget graphique qui permet de voir les débuts et fins de l’état ‹ 0 ›.

Je vais essayer de préciser ce qui se passe chez moi:

  • avant 13h : l’appareil MQTT est à 1
  • 13h : l’appareil MQTT passe à 0. La scène ne se déclenche pas (mais en tâche de fond elle doit commencer à vérifier le délai de déclenchement de 12 minutes). Comportement OK.
  • 13h05 : l’appareil MQTT reçoit à nouveau ‹ 0 ›. Rien ne se passe. Comportement OK
  • 13h10 : l’appareil MQTT reçoit à nouveau ‹ 0 ›. Rien ne se passe. Comportement OK
  • 13h12 : l’appareil MQTT n’a rien reçu, mais la scène se déclenche (12 minutes après 13h). Comportement OK
  • 13h15 : l’appareil MQTT reçoit à nouveau ‹ 0 ›. Rien ne se passe (mais c’est là que je soupçonne le déclencheur de débuter à nouveau la vérification du délai de 12 minutes). Mais pour l’instant, comportement OK
  • 13h20 : l’appareil MQTT reçoit à nouveau ‹ 0 ›. Rien ne se passe. Comportement OK
  • 13h25 : l’appareil MQTT reçoit à nouveau ‹ 0 ›. Rien ne se passe. Comportement OK
  • 13h27 : l’appareil MQTT n’a rien reçu, mais la scène se déclenche (12 minutes après 13h15). Et c’est ce comportement qui n’est pas conforme puisque l’appareil MQTT n’est pas repassé à 1 depuis 13h12 !

Est-ce que c’est bien ça que tu as reproduit ?

Oui c’est bien ça, et j’ai bien le comportement attendu :slight_smile:

Je viens de faire un test encore plus proche de ton cas, en envoyant de multiples 0 (pendant le délai d’attente, et après le délai d’attente) :

Et j’ai bien le bon comportement attendu ! Désolé :sweat_smile:

Si tu veux investiguer plus loin, dans les logs tu dois avoir 2 logs :

2025-05-29T14:40:39+0200 <info> scene.triggers.js:61 (Object.device.new-state) Scheduling timer to check for device_feature "mqtt:connexion-internet-perdue" state in 60000ms

(Lancement du minuteur)

Et:

2025-05-29T14:41:39+0200 <info> scene.triggers.js:43 (Object.device.new-state) Scene trigger device.new-state: Timer for sensor mqtt:connexion-internet-perdue has finished.

(Fin du minuteur)

Dans mes tests, le minuteur ne se lance qu’une seule fois

1 « J'aime »

Bon ben je vais me repencher là-dessus samedi ou dimanche, je te tiendrai au courant.

1 « J'aime »

Tiens moi au courant !