Depuis quelques jours, il semble qu’il y ait un bug dans l’évaluation d’une expression:
Dans un scénario, j’ai la condition suivante: #time# > (#[Systeme][Soleil][Coucher du Soleil]# + 20) et variable(alarme) != 1 et variable(pos_volets) != 0 et #[Sécurité][Tile_Eric][Present]# == 1 & variable(OK_google) = 1
Cette condition dans le log du scénario est interprétée par:
[1900 > (1852 + 20) et 0 != 1 et 100 != 0 et 1 == 1 & 1 = 1] et il trouve comme résultat VRAI, alors qu’évidement, c’est faux.
La log du scénario
[2022-03-08 19:00:06][SCENARIO] - Exécution du sous-élément de type [condition] : if #time# > (#[Systeme][Soleil][Coucher du Soleil]# + 20) et variable(alarme) != 1 et variable(pos_volets) != 0 et #[Sécurité][Tile_Eric][Present]# == 1 & variable(OK_google) = 1
[2022-03-08 19:00:06][SCENARIO] Evaluation de la condition : [1900 > (1852 + 20) et 0 != 1 et 100 != 0 et 1 == 1 & 1 = 1] = Vrai
Le testeur d’expression me donne lui le résultat false.
Je suis sur une smart à jour, debian 10.4 jeedom 4.2.14.
J’ai un doute sur ta syntaxe…
Pour moi le & devrait etre un &&
Apres ca ne m’explique pas ce qu’il arrive a evaluer du coup…
ton coucher du soleil +20 va aussi poser soucis a certaines heures
La par exemple 1852+20=1872, donc c’est inferieur a 1900.
Mais dans la logique tu veux surement faire un time_op (pas sur du nom exact de tete) pour que ca donne 1912
Je viens de comprendre, tu fait des operations sur des heures, c’est pas la bonne methode ! #time# > (#[Systeme][Soleil][Coucher du Soleil]# + 20)
remplace par #time# > (time_op(#[Systeme][Soleil][Coucher du Soleil]#,+20))
Merci à tous pour votre aide, ce qui me perturbe c’est que le testeur d’expression ne donne pas le même résultat. @Phpvarious je retiens ta solution, merci.
@Madcow: dans tous mes scenarios, il n’y a que = et pas == et ça fonctionne correctement.