minBetween: déclenchement intempestif scenario

Salut

Je galère depuis plusieurs h pour mettre au point un scenario tout bête d’alerte de température congélateur:

l’événement que j’utilise dans mon scenario est le suivant (mode provoqué):

minBetween(#[Cuisine][TH13][Température]#, -5 minutes, now) >= 0

il se déclenche toutes les 5 mins quelque soit la température, pourtant celle ci est tjs négative:

MariaDB [jeedom]> select * from history where cmd_id = 3788 order by datetime desc limit 10;
+--------+---------------------+-------------+
| cmd_id | datetime            | value       |
+--------+---------------------+-------------+
|   3788 | 2021-04-21 12:15:00 | -24         |
|   3788 | 2021-04-21 12:10:00 | -24.1828125 |
|   3788 | 2021-04-21 12:05:00 | -24.7265625 |
|   3788 | 2021-04-21 12:00:00 | -20.6359375 |
|   3788 | 2021-04-21 11:55:00 | -26.1578125 |
|   3788 | 2021-04-21 11:50:00 | -25.3578125 |
|   3788 | 2021-04-21 11:45:00 | -23.9953125 |
|   3788 | 2021-04-21 11:40:00 | -24.1703125 |
|   3788 | 2021-04-21 11:35:00 | -24.8203125 |
|   3788 | 2021-04-21 11:30:00 | -20.74375   |
+--------+---------------------+-------------+
10 rows in set (0.00 sec)

cf la log:

[2021-04-21 12:15:22][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Cuisine][TH13][Temperature].
[2021-04-21 12:15:22][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-04-21 12:15:22][SCENARIO] Evaluation de la condition : [-24 != ""] = Vrai
[2021-04-21 12:15:22][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-04-21 12:15:22][SCENARIO] Affectation de la variable msg => Température congélateur: -24 °C = Température congélateur: -24 °C
[2021-04-21 12:15:22][SCENARIO] Lancement du scénario : Notification options : {"#titre#":"\"Alerte!\"","#message#":"Temp\u00e9rature cong\u00e9lateur: -24 \u00b0C"}
[2021-04-21 12:15:22][SCENARIO] Suppression de la variable msg
[2021-04-21 12:15:23][SCENARIO] Fin correcte du scénario

encore plus étrange le testeur d’expression me renvoie faux sur l’intervalle ce qui est correct, donc je ne comprends pas comment ce scénario peut se déclencher quand même…

Je suis en jeedom 3.3.55
Votre avis?

Merci

Bonjour @rootard

Mettez le scénario en programmé toutes les 5 minutes
Et faites votre test dans le SI

maxBetween(#[Cuisine][TH13][Température]#, -5 minutes, now) >= -18

Bonjour @jpty

Merci pour votre réponse
Je me doute que ca va marcher mais j’ai plusieurs scénarios de ce type, je voudrais éviter de trop charger le raspberry…dois je conclure que le test au niveau du déclencheur ne fonctionne pas?

Je pense que c’est plutôt l’appel de fonction au niveau du déclencheur qui ne fonctionne pas.
Dans la doc, pour la description du déclencheur, il n’y a que :

 #[Garage][Open Garage][Ouverture]# == 1 

C’est dans un Tip

Effectivement.
J’aimerais bien comprendre l’impact en termes de perfs entre la solution scenario programmé que tu proposes et d’autres approches comme le plugin watchdog. dans les 2 cas on utilise un cron non?
@sigalou ton avis?

[EDIT] même question vs « action sur la valeur » de la commande

Salut @rootard,
j’y suis d’accord avec @jpty, le déclencheur se fait au moment d’un changement sur ta valeur#[Cuisine][TH13][Température]# donc dans ton scénario plutôt de tester une valeur non NULL ( != «  » ) met le test que tu souhaites faire en le comparant à ton offset d’alerte.

Tu peux ce scenario.
J’ai mis dans le between 1 jour car j’ai pas beaucoup de valeur

image

Question bête: pourquoi ne pas utiliser l’action sur valeur dans la config avancée de ta commande.

Tu peux y définir que si la température est supérieure à x degrés pendant plus de y minutes tu lances une action.

Ps: Si le scénario est nécessaire pour le traitement que tu veux en faire, l’action peut être de lancer le scénario.

1 « J'aime »

merci @cstan77
Initialement j’avais fait exactement comme toi puis j’ai vu qu’il était possible d’optimiser en déplacant le test initial dans le trigger. Malheureusement ca marche avec les conditions simples mais pas dans ce cas la.

@Poumi j’ai vu ta proposition d’action sur la valeur. Il y a aussi l’option du cron de @jpty

Les 3 options que vous proposez marchent, j’en ai aussi testé une 4e via le plugin watchdog de @sigalou cf plus haut.

Ma question est avant tout l’impact sur les perfs:
Le changement de température intervient toutes les 5 mins, ca fait un paquet d’événements a traiter juste pour ce capteur et j’en ai plusieurs dizaines…Quelle est la solution la + efficace?

Bon j’ai pas tout compris au but du jeu mais un scénario c’est pas l’idéal trop gourmand en ressource si plein de valeur

J’aurais tendance à dire que l’action sur valeur est plus optimisée car gérée par le core.

Après je n’zi Jamais comparé :sweat_smile:

Ok merci @Poumi
Ca serait intéressant pour tout le monde si un dev pouvait confirmer ?