Précision sur les formules de contrôle de condition

Bonjour,
J’ai un scénario qui se déclenche à 14h10 pour me fermer mes volets en fonction de condition
Aujourd’hui, celui-ci n’a pas fermé les volets alors que toutes les condition étaient réuni

En regardant les logs du scénario, on voit le faux sur la condition de température alors que 25.22 est bien supérieur à 25 et au pire égal.

[2023-10-12 14:10:04][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2023-10-12 14:10:05][SCENARIO] Exécution du sous-élément de type [condition] : if #[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Chauffage][Temperature]# >= 25
[2023-10-12 14:10:05][SCENARIO] Evaluation de la condition : [801 = '800 ou 801 ou 802 ou 803' && 25.22 >= 25] = Faux
[2023-10-12 14:10:05][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-10-12 14:10:05][SCENARIO] Fin correcte du scénario

N’y aurait-il pas un problème de prise en compte des décimales ?

Je vous remercie par avance

Bonjour,

C’est surtout cette partie qui ne va pas.

#[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803'

Tu ne peux pas écrire ça comme ça.

et pour 2 raisons, qui trouvera la deuxième?

Moi, moi, moi … ==

1 « J'aime »

Pourtant ça fonctionne bien et depuis au moins le mois de juin
Avant j’avais celle-là

#[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Station Météo][Température Ext :]# > #[Maison][Chauffage][Temperature]# && #[Maison][Chauffage][Temperature]# >= 23

Même depuis le testeur d’expression ça fonctionne

Parce que la condition est passé à 801 dans lors de l’exécution de ton scénario et dans ton test c’est 800, ça ne t’a pas permis de voir que le premier bloc ne convient pas, tu ne peux pas écrire ça de cette façon.

Il faut faire une comparaison (donc ==) et non une affectation (=) et en faisant de cette façon tu compareras une chaine de caractères
'800' ne sera jamais égal à la chaine de caractères '800 ou 801 ou 802 ou 803'
'801' ne sera jamais égal à la chaine de caractères '800 ou 801 ou 802 ou 803'

Dans ce cas tu peux utiliser des comparateurs comme pour ta température

#[Maison][Météo][Numéro condition]# >= 800 && #[Maison][Météo][Numéro condition]# <= 803 && #[Maison][Chauffage][Temperature]# >= 25

Ok et merci, par contre, du coup je ne comprend pas comment jusqu’à aujourd’hui mon scénario fonctionné correctement !

il ne fonctionne pas !

il est toujours vrai car tu fais une assignation (un seul =) et le résultat d’une assignation est toujours vrai.

Dans la vraie vie de PHP oui mais là Jeedom se prend un peu le pieds dans le tapis, c’est pour ça que je faisais une différence entre son 800 et son 801.

image

de toute façon on s’en fiche, tout est faux dans la syntaxe à la base :slight_smile:
faut pas s’attendre à un résultat qui veut dire quelque chose

sauf que bizarrement ça fonctionnait
et Pour vous le prouver

[2023-10-10 14:10:04][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2023-10-10 14:10:04][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Chauffage][Temperature]# >= 25
[2023-10-10 14:10:04][SCENARIO] Evaluation de la condition : [800 = '800 ou 801 ou 802 ou 803' && 26.37 >= 25] = Vrai
[2023-10-10 14:10:04][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-10-10 14:10:04][SCENARIO] Exécution d'un bloc élément : 280
[2023-10-10 14:10:04][SCENARIO] - Exécution du sous-élément de type [condition] : for 3
[2023-10-10 14:10:04][SCENARIO] Evaluation de la condition : [3] = 3
[2023-10-10 14:10:04][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 14:10:05][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-10-10 18:10:04][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2023-10-10 18:10:05][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Chauffage][Temperature]# >= 25
[2023-10-10 18:10:05][SCENARIO] Evaluation de la condition : [800 = '800 ou 801 ou 802 ou 803' && 26.58 >= 25] = Vrai
[2023-10-10 18:10:05][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-10-10 18:10:05][SCENARIO] Exécution d'un bloc élément : 280
[2023-10-10 18:10:05][SCENARIO] - Exécution du sous-élément de type [condition] : for 3
[2023-10-10 18:10:05][SCENARIO] Evaluation de la condition : [3] = 3
[2023-10-10 18:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-10 18:10:06][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-10-11 14:10:03][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2023-10-11 14:10:04][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Chauffage][Temperature]# >= 25
[2023-10-11 14:10:04][SCENARIO] Evaluation de la condition : [800 = '800 ou 801 ou 802 ou 803' && 25.52 >= 25] = Vrai
[2023-10-11 14:10:04][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-10-11 14:10:04][SCENARIO] Exécution d'un bloc élément : 280
[2023-10-11 14:10:04][SCENARIO] - Exécution du sous-élément de type [condition] : for 3
[2023-10-11 14:10:04][SCENARIO] Evaluation de la condition : [3] = 3
[2023-10-11 14:10:04][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 14:10:05][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-10-11 18:10:04][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2023-10-11 18:10:05][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Maison][Météo][Numéro condition]# = '800 ou 801 ou 802 ou 803' && #[Maison][Chauffage][Temperature]# >= 25
[2023-10-11 18:10:05][SCENARIO] Evaluation de la condition : [800 = '800 ou 801 ou 802 ou 803' && 25.92 >= 25] = Vrai
[2023-10-11 18:10:05][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-10-11 18:10:05][SCENARIO] Exécution d'un bloc élément : 280
[2023-10-11 18:10:05][SCENARIO] - Exécution du sous-élément de type [condition] : for 3
[2023-10-11 18:10:05][SCENARIO] Evaluation de la condition : [3] = 3
[2023-10-11 18:10:05][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Sud Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] Exécution de la commande  [Séjour Salon][PCG Nord Ouest][Consigne Ouverture] avec comme option(s) : {"background":"0","slider":75}
[2023-10-11 18:10:06][SCENARIO] Fin correcte du scénario

Merci @Bison pour la modif à faire sur ma première condition

non ca ne « fonctionnait » pas, ca donnait toujours vrai, et c’est ce que montre ton log

si ca « fonctionnait » tu ne serais pas ici pour poser la question :wink:

Salut,

Quand on compare un nombre à une chaîne de caractères la chaîne est convertie en nombre.
Dans ce cas '800 ou 801 ou 802 ou 803' est converti en 800.

1 « J'aime »

Ce que je voulais dire c’est qu’hier et avant hier avec toujours la valeur 800 en condition météo, mon scénario a fonctionné comme l’indique mes logs
Mais aujourd’hui avec la même condition météo non
c’est d’ailleurs pour ça que je pensais que ça venait de ma condition de température avec des décimales !

Le principal c’est que ça fonctionne

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