Evalution des conditions - Bug

Tags: #<Tag:0x00007f3850b7d268>

Page : index.php?v=d&p=scenario&id=57#scenariotab
Jeedom_version : 4.0.38
Uname : Linux VM-Debian9-Jeedom 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux


Message :
Bonjour,
L’un de mes scénarios présente une évaluation qui est, j’ai l’impression, erronée.
Voici l’extrait du log :

[2020-02-11 18:59:03][SCENARIO] Start : Scenario execute sur evenement : #variable(Ephemeride - Ferm. ZJ1)#.
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ouv. ZN)/” && 1 == 0] = Faux
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ouv. ZJ1)/” && 1 == 0] = Faux
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ouv. ZJ2)/” && 1 == 0] = Faux
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ferm. ZN)/” && 1 == 0] = Faux
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ferm. ZJ1)/” OU 0 == 1 && 1 == 0] = Vrai
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-02-11 18:59:03][SCENARIO] Exécution d’un bloc élément : 636
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : at
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [1845] = 1845
[2020-02-11 18:59:03][SCENARIO] Tâche : 636 programmée à : 2020-02-12 18:45:00
[2020-02-11 18:59:03][SCENARIO] Exécution d’un bloc élément : 778
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : at
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [1900] = 1900
[2020-02-11 18:59:03][SCENARIO] Tâche : 778 programmée à : 2020-02-11 19:00:00
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-02-11 18:59:03][SCENARIO] Evaluation de la condition : [“variable(Ephéméride - Ferm. ZJ1)” == “schedule” OU “variable(Ephéméride - Ferm. ZJ1)” matches “/(Ephéméride - Ferm. ZJ2)/” && 1 == 0] = Faux
[2020-02-11 18:59:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-02-11 18:59:03][SCENARIO] Fin correcte du scénario


L’une des conditions est évaluée comme vrai alors qu’elle se présente ainsi :
critère 1 OU critère 2 OU critère 3 ET critère 4
Il n’y a pas de paranthèse, du coup en principe tous les critères sont cumulatifs mais la il semble que le 4 soit uniquement lié au 3.
Qu’en pensez vous ?

Merci pour votre aide
Caelion.

Bonsoir,
Pour faciliter la réflexion, tu devrais poster ton scénario ainsi que ses déclencheurs

Pas de soucis, merci pour ton retour rapide.
Les déclencheurs :
image
Le scénario :
image image

Explication du scénarios :
Je gère mes volets en automatique en 3 zones : Zone Nuit / Zone Jour 1 / Zone Jour 2
Ce scénario programme le cron pour la journée ou le lendemain (appel du scénario général d’ouverture / fermeture avec de tags en fonction des besoins :
2 tags sur l’action : ouverture / fermeture
3 tags su sur la zone : ZN/ZJ1/ZJ2
Donc 6 évaluations en tout.

As tu besoin de plus d’informations ?

Salut

'# 'avant variable dans les déclencheurs ??

Si trigger = schedule tu executes les actions des 4 SI ??

Bizarre ton truc !

Je ne suis pas sûr de tout comprendre mais déjà je prendrais la peine de classer les conditions dans mes SI.
Si le && est appliqué sur le résultat du OU des 2 précédentes conditions, met tes OU entre parenthèses.
Si ce n’est pas le cas, met entre parenthèses ce qui doit l’être.
Ça permettra déjà d’avoir des conditions cohérentes.
Et relance ton scénario après pour voir.

Bonjour,

met des parenthèses, c’est juste la base.

Il y a énormément de moteur d’évaluation (en dehors de jeedom) qui vont aussi toujours évaluer cela à vrai; donc ne t’attend pas à ce que cela suive “ta” logique et aucune chance que “l’équipe jeedom” passe du temps à tenter de résoudre ce type de problème ou il ne sera jamais possible de contenter tout le monde.
Et même si tu avais raison ce n’est juste pas lisible… pour faire une comparaison: tout le monde sait (qu’en français) qu’après un point dans un phrase on met une majuscule et pourtant on le fait quand même; c’est pareil ici, met des parenthèses pour exprimer les priorités entre les OU et ET.

Avant et après d’ailleurs, oui bizarre.

1 J'aime

C’est dit de façon un peu plus direct que moi mais l’idée est la même.

Ok pas de soucis, je les ajoute.
Il y a tout de même une étrangeté car je n’avais rien les jours d’avant (le scénario est vieux).

@mich0111 : compliqué de le relancer manuellement car dans mes conditions, je demande un trigger spécifique qui n’est pas le lancement manuel.

Merci pour vos retours rapides.

Tu fais “exécuter” dans le scénario pas pour voir le résultat final mais pour voir si le code est propre et correctement interprété.

Pour ton premier point :
Les dièses sont automatiques à l’ajout d’un déclencheur variable, je viens de refaire le test sur mon installation en ajoutant un nouveau déclencher : les dièses sont présents.
Pour ton second point :
Oui car je programme les actions sur les 3 zones pour la journée. J’avais auparavant une programmation à minuit mais ce critère ne se déclenchent plus maintenant : je n’ai plus de trigger “programmation”

Oui, c’est bon, pas d’erreur lié à l’ajout des parenthèses.
Merci

A vrai dire c’est plutôt le manque de parenthèses qui provoque des erreurs, pas leur présence ou alors de logique.
Néanmoins si ton problème est résolu passe ton sujet en solutionné.
Bonne soirée

Concernant les dièses, de mémoire ce n’est pas nécessaire mais le core les nettoient si elles sont présentes.

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