Demande d'aide pour Erreur sur calcul

Bonjour,

Je rencontre un souci de comparaison de valeur

'+0E47ED66'== 0 me donne un résultat True
alors que
'+0E47ED66'== 1 me donne bien un résultat False

Il considère que le texte est égale à zéro ou égale à rien et donc donne une valeur True ce qui me génére des erreurs dans mon scénario de lecteur de badge

L’un d’entre vous connait il la solution pour que cette comparaison avec 0 soit False ?

Merci à vous

1 « J'aime »

Comparer de l’alphanumérique à du numérique…

Ah bon ??

Bonjour @anon53349806

Sur mon clavier d’alarme j’ai soit la possibilité d’entrées un code soit un tag Rfid.

Il me faut donc comparer soit une entrée à code type 1111 soit une entrés rfid +xxxxx

mon souci est qu’un simple 0 ouvre la porte lors de la comparaison du tag !!

C’est de l’alphanumérique que renvoit Clavier zig 2 code ?

pourquoi pour commande tu mets des simple quotes et pas pour le code ou tu en mets des doubles ?

en plus il n’y a pas d’espace entre le #== donc je ne suis pas sur que ca plaise

[code]# == '1111' et ça partout

Mais bon pour une chaine de caractère je me demande si matche est pas plus adapté

1 « J'aime »

j’ai essayé avec des ’ et des " et c’est idem

si tu fait un test dans le testeur d’expression tu verras que rien ne fonction. résultat toujours true

image
image

je cherche comment convertir une chaine en nombre. Puis de la comparer. C’est peut être la solution

1 « J'aime »

Depuis le début je dis que comparer de l’alphanumérique avec du numérique…

Donc il faut utiliser matches ou alors comparer a de l’alphanumérique
image

je ne connais pas cette fonction, mais sauf erreur de a part après recherche sur le net il semble que cette fonction entrait les nombres d’une chaine. Moi je cherche à la comparer.

tu peux me montrer comment tu vois les choses ?

As-tu au moins corrigé le scénario pour y mettre les espaces, mis des simples quote pour toutes les expressions ??

Tu ne connais pas la fonction et tu cherches sur le net ???
C’est dans la doc scénario qu’il faut chercher : https://doc.jeedom.com/fr_FR/core/4.3/scenario

Ba oui

Je ne me rappelai pas avoir vu ça dans la doc ! bref

Oui j’ai corrigé les espaces et ’ mais ca change rien

Je vais regarder ça cet aprèm avec matches et je te dirais.

merci a toi

Ca serait bien de voir le log du scenario !

voila

saisie de 0 puis d’entrée
la comparaison 0 au code Rfid est toujours vrai

voila les log.


[2023-06-30 13:51:29][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Test Materiel][Clavier Zig 2][Commande] (ArmMode.Disarm).
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '1111'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '1111'] = Faux
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+0E47ED00'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+0E4xxx00'] = Vrai
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Séjour][Eclairage Sejour][Off]
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ARRET","message":"Arr\u00eat alarme par badge Jean Marc"}
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+A945EDxx'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+A94xxD03'] = Vrai
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Séjour][Eclairage Sejour][Off]
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ARRET","message":"Arr\u00eat alarme par badge D\u00e9d\u00e9"}
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+1Axxx03'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+1AxxED03'] = Faux
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+A81BED03'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+A8xxxD03'] = Vrai
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Séjour][Eclairage Sejour][Off]
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ARRET","message":"Arr\u00eat alarme par badge Marine"}
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+ExxxED03'
[2023-06-30 13:51:29][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+E9xxxD03'] = Vrai
[2023-06-30 13:51:29][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Séjour][Eclairage Sejour][Off]
[2023-06-30 13:51:29][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ARRET","message":"Arr\u00eat alarme par badge Rose"}
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# == '+ADxxxD03'
[2023-06-30 13:51:30][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 == '+AD6xxx03'] = Vrai
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:30][SCENARIO] Exécution de la commande  [Séjour][Eclairage Sejour][Off]
[2023-06-30 13:51:30][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ARRET","message":"Arr\u00eat alarme par badge C\u00e9cilia"}
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Arm_All_Zones'
[2023-06-30 13:51:30][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Arm_All_Zones'] = Faux
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]# =='ArmMode.Arm_Night_Sleep_Only'
[2023-06-30 13:51:30][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm" =='ArmMode.Arm_Night_Sleep_Only'] = Faux
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]#==''
[2023-06-30 13:51:30][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0==''] = Vrai
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:30][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"CODE VIDE","message":"Code vide"}
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Test Matériel][Clavier Zig 2][Commande]#=='ArmMode.Disarm' && #[Test Matériel][Clavier Zig 2][Code]# !=1111
[2023-06-30 13:51:30][SCENARIO] Evaluation de la condition : ["ArmMode.Disarm"=='ArmMode.Disarm' && 0 !=1111] = Vrai
[2023-06-30 13:51:30][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-06-30 13:51:30][SCENARIO] Exécution de la commande  [Present][SMS Jean Marc][Alarme Jeedom - Jean Marc] avec comme option(s) : {"background":"0","title":"ERREUR","message":"Erreur de saisie"}
[2023-06-30 13:51:30][SCENARIO] Fin correcte du scénario

Bonjour,
Il y a eu un post l’autre jour ou Bad disait de mettre === pour comparer je ne sais plus trop quoi (la mémoire d’un vieux est faillible).

'+0E47ED66' === 0
et
'+0E47ED66' === 1
donne false dans les 2 cas

Si ce n’est pas l’objet de la question désolé du dérangement

1 « J'aime »

Bonjour @rennais35000

tu es un chef !!

ca fonctionne au top !!

:ok_hand:

Ta mémoire visiblement est en bonne état !!

je clos le sujet. Merci a vous deux messieurs

Je n’y suis pour rien :innocent:
voilà le post que j’ai retrouvé.

Oui dc depuis le debut tu ne compares pas des choses de meme type

Puisque dans ton log on voit
0 == ‹ +0E4xxx00 ›

Dc tenter de comparer un chffre a une chaine de catactere…

je sais @anon53349806 mais j’ai pas le choix. le clavier envoie soit un code soit un chiffre dans le même champ !

Si la comparaison n’est pas égale (texte / chiffre) ca devrait donner false et pas true

Ça devrait, dans une certaine logique. Mais le langage PHP a choisi de ne pas demander à forcer le type d’une variable et s’adapte à ce qu’on lui défini en premier. C’est une facilité d’utilisation mais il a bien fallu faire des choix quand on compare des variables de type différents (toujours dans une optique de faciliter les choses sans doute).

Le tableau de de que donne (true/false) la comparaison en fonction des types est ici :
https://www.php.net/manual/fr/types.comparisons.php

Si on veut comparer sans laisser la main au moteur et le forcer à comparer avec les mêmes types (des choux avec des choux) ils ont prévu l’opérateur ===

Il faut s’adapter à la logique d’un langage :smiling_face:

3 « J'aime »

Merci @Bison pour tes explications

Bonne journée à tous

JM

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