Action de chauffage executée plus de fois que necessaire lors d'un changement de mode

Bonjour à tous,

Je suis actuellement en train de découvrir Jeedom avec comme petit projet de contrôler mon système de chauffage central via un interrupteur sec FGS-214, des vannes thermostatique Aeotec, le tout géré par le plugin Thermostat. Durant mes tests il semblerait que je sois tombé sur un bug du plugin thermostat.

Sur mon jeedom j’ai constaté que le plugin Thermostat, configuré en mode Temporel execute l’action « Pour chauffer je dois? » plus que nécessaire (une fois de trop) lorsque je bascule entre deux modes de chauffage, sans passer par l’état Off du thermostat. Ceci est problématique dans mon cas car l’action « Pour chauffer je dois? » incrémente une semaphore utilisée dans la gestion de l’allumage et de l’extinction de ma chaudière. Celà a pour conséquence de fausser la gestion de ma chaudière et de la laisser allumée en permanence. Il est bien entendu possible de corriger celà en enregistrant des actions spécifiques lors de l’execution de la commande associée au mode afin de forcer un état « Off » entre les changements de modes, cependant une correction du bug en amont serait bien plus générique.

NB: ce bug n’existe pas lorsque le thermostat est utilisé en mode « Hysteresis »

Condition pour reproduire et constater le bug:
0. créer un thermostat fonctionnant en mode Temporel

  1. avoir 2 modes configurés dans le plugin thermostat
  2. dans la configuration de l’action « Pour chauffer je dois ? » déclencher un scenario qui incrémente une variable (ceci permet de constater le bug)
  3. dans le widget du themostat, se mettre sur un mode
  4. basculer sur l’autre mode
  5. constater que la variable a été incrémentée une fois de plus que prévu

Logs générés par le scenario suite au changement de mode (on constate deux executions à 1s d’interval):

[2020-10-12 13:31:00][SCENARIO] Start : Lancement provoque.
[2020-10-12 13:31:00][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-10-12 13:31:01][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2020-10-12 13:31:01][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-10-12 13:31:01][SCENARIO] Exécution de la commande [Chaufferie][Switch Chaudière][On]
[2020-10-12 13:31:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-12 13:31:01][SCENARIO] Affectation de la variable CHAUDIERE_ON_SEMAPHORE => 0 + 1 = 1
[2020-10-12 13:31:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-10-12 13:31:02][SCENARIO] Start : Lancement provoque.
[2020-10-12 13:31:02][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-10-12 13:31:02][SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2020-10-12 13:31:02][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-10-12 13:31:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-12 13:31:02][SCENARIO] Affectation de la variable CHAUDIERE_ON_SEMAPHORE => 1 + 1 = 2
[2020-10-12 13:31:02][SCENARIO] Fin correcte du scénario

Tu es sur que c’est pas dans ton scénario le souci ?
Evaluation de la condition : [0 == 0] = Vrai
[2020-10-12 13:31:01][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-10-12 13:31:01][SCENARIO] Exécution de la commande [Chaufferie][Switch Chaudière][On]
Affectation de la variable CHAUDIERE_ON_SEMAPHORE => 0 + 1 = 1

Mais si l’évaluation est fausse tu fait aussi
[SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2020-10-12 13:31:02][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-10-12 13:31:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-12 13:31:02][SCENARIO] Affectation de la variable CHAUDIERE_ON_SEMAPHORE => 1 + 1 = 2

Oui, c’est sûr. Le scenario est on ne peut plus simple.
La semaphore est incrémentée quelque soit le résultat de la condition. La seule différence c’est que lorsque la sémaphore passe de 0 à 1 (equivalent à CHAUDIERE_ON_SEMAPHORE == 0 ) la chaudière est allumée. Ainsi pas la peine de lancer une commande de chaudière ON si elle est déjà en route. De même j’ai un autre scenario qui décrémente la semaphore et qui lorsque la semaphore arrive à 0 éteint la chaudière. Ma chaudière est ma resource partagée entre tous mes thermostats et je ne veux pas qu’un thermostat puisse éteindre la chaudière alors qu’un autre est en train de l’utiliser.

Comme dit dans le post, je peux en effet corriger celà de mon côté mais je ne comprends pas pourquoi le scenario est lancé deux fois lors d’un changement de mode. Et aussi pourquoi le comportement de changement de mode est différent entre le mode « Hysteresis » et le mode « Temporel ».

Bonjour,

on peut voir le déclencheur donc?

Oui bien sûr !

Déclencheurs du Thermostat

Scenario utilisé dans « Pour chauffer je dois ? »

Je ne peux mettre que 2 images par post vu que je suis nouvel utilisateur alors voici le dernier scenario.

Scenario utilisé dans « Pour tout arrêter je dois ? »