Il doit y avoir un souci, car le résultat est le même que l'expression

Bonjour,

Le sujet a déjà été évoqué, mais ça ne m’a pas aidé.

Dans un scénario, je désire comparer la version du firmware de ma Freebox avant redémarrage et après redémarrage. Pour ça, j’enregistre la version dans une variable puis je redémarre ma Freebox. Ensuite, je compare la version actuelle à ma variable :

si #[Maison][Système][Freebox firmware version]# not_matches variable(Version_Freebox)

et le testeur d’expression donne ceci :

Attention : il doit y avoir un souci, car le résultat est le même que l’expression
Je vais évaluer : « 4.7.1 » not_matches 4.7.0
Résultat : « 4.7.1 » not_matches 4.7.0

J’ai essayé avec ==, !=, avec un tag, en ajoutant un value, c’est toujours pareil. J’ai lu que ça pouvait être un problème quand il y a trop de parenthèses, mais là c’est plutôt simple !

Savez-vous ce qui cloche ?

Merci d’avance.

Salut,

Ta manière d’écrire la condition ne ressemble pas à ce qui est indiqué dans la documentation des scénarios :

  • matches : Contient. Ex : [Salle de bain][Hydrometrie][etat] matches "/humide/".
  • not(…​ matches …​) : Ne contient pas. Ex : not([Salle de bain][Hydrometrie][etat] matches "/humide/").

plutôt quelque chose dans ce genre, à confirmer :

 not(#[Maison][Système][Freebox firmware version]# matches variable(Version_Freebox))

Pourtant un truc très simple comme ça doit fonctionner et donner true :

#[Maison][Système][Freebox firmware version]# != variable(Version_Freebox)
ou
#[Maison][Système][Freebox firmware version]# > variable(Version_Freebox)

Merci pour la syntaxe matches / not matches, je ne connaissais pas :see_no_evil:

Ta proposition avec != ne fonctionne pas (c’est ce que j’avais fait). Il faudra que j’essaye avec le >

Je demande à voir, bien entendu il faut que les 2 soient différents pour que ce soit vrai.

Je te confirme, c’est ce que j’ai essayé en premier.
Je réessayerai ce soir quand j’aurai accès à Jeedom, mais ça m’a paru aussi étrange que pour toi.

Mais n’y aurait-il pas un problème de format ? Genre texte ou nombre ? Car pourquoi d’un côté on a des guillemets et pas de l’autre ?

Il y a un underscore entre not et matche sur le test. « not_matche «
De plus il me semble que le test devrait être :

not (valeur1 matches valeur2)

Je n’ai pas tiqué sur le coup mais effectivement il faut enregistrer la variable entre apostrophes sinon il ne peut pas faire la comparaison car 4.7.1 ce n’est pas un nombre (or pas de guillemets = nombre) !

Autrement tu dois pouvoir aussi parvenir à tes fins en l’état avec :

version_compare(#[Maison][Système][Freebox firmware version]#, variable(Version_Freebox))

retourne -1 si la première version est inférieure à la seconde, 0 si elles sont égales, et 1 si la seconde est inférieure à la première.

Très intéressant !
Mais comme tu me l’as confirmé, le problème vient du format.
J’ai donc remis une formule simple :

Si #[Maison][Système][Freebox firmware version]# != variable(Version_Freebox)

Et j’ai entouré la valeur de ma variable de deux '.

Et maintenant mon test est bon :sunglasses:

Je vais évaluer : « 4.7.1 » != ‹ 4.7.1 ›
Résultat : false

Ça tient vraiment à rien. Mais je trouve le message d’erreur pas très parlant :neutral_face:

Merci en tout cas pour votre aide :slightly_smiling_face:

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