Différence et quand = ou ==

Bonjour,
La lecture récente d’une réponse m’amène à poser cette question de compréhension: quand utilise t on = ou == .
Merci pour vos expliquations et votre aide
Bonne journée

Bonjour,

Concernant les Scénarios la documentation Jeedom devrait déjà bien te renseigner :
Scénarios Doc Officiel Jeedom

Vers le milieu tu trouveras « Opérateurs de comparaison et liens entre les conditions »

La question est intéressante, on parle de == dans la doc. Quid =?

Bonjour,

= est un opérateur d’affectation

Pour affecter une valeur à un tag lors du lancement d’un scénario : titi = ‹ Bonjour ›

== est un opérateur de comparaison

(variable(toto) == 3) vaut 1 si toto est égale à 3 et 0 sinon

3 « J'aime »

Peut-être pas dans la doc mais ChatGPT indique :

Réponse de ChatGPT


Dans **Jeedom**, lors de la création de **scénarios** (via les blocs SI/ALORS/SINON), il est important de bien distinguer `=` et `==`, car ils ont des usages très différents :

---

### ✅ `==` : **Comparaison**

* Utilisé pour **comparer deux valeurs**.
* Il répond à la question : « Est-ce que la valeur A est **égale** à la valeur B ? »

**Exemples :**

* `#[Salon][Température][Valeur]# == 22`

  > Cela teste si la température dans le salon est **égale à 22**.
* `#[Chambre][Présence][Etat]# == 1`

  > Cela vérifie si quelqu’un est présent dans la chambre.

---

### ⚠️ `=` : **Affectation** (très rarement utilisé dans un scénario Jeedom)

* Sert à **donner une valeur à une variable**, **dans une action** (et non dans un bloc SI).
* Utilisé typiquement dans les blocs **"action"**, par exemple avec `variable()` pour affecter une valeur.

**Exemple :**

* `variable(maVariable) = 1`

  > Cela **définit** la variable `maVariable` à 1.
  > (À utiliser dans un bloc "action" avec la commande `Variable` de type `Définir`)

---

### Résumé pratique :

| Situation                                                 | Utiliser |
| --------------------------------------------------------- | -------- |
| Comparer une valeur dans un bloc `SI`                     | `==`     |
| Attribuer une valeur à une variable dans un bloc `Action` | `=`      |

Si c’est cette réponse, Aurel aurait du écrire OR 1==1.

1 « J'aime »

Pour avoir tester, les 2 cas fonctionnent !

image

image

image
.

.
Edit : Par habitude j’ai mis " || " pour le « OR » mais le « OR » fonctionne aussi

Pas avec un bloc code.

1 = 1;
1 == 1;
[2025-06-22 09:42:56][SCENARIO]  - - - 
[2025-06-22 09:42:56][SCENARIO]  - /* - Execution du Bloc code n°1 - DEBUG NATIF ACTIF (php >= v7) */
[2025-06-22 09:42:56][SCENARIO]  - - - 
[2025-06-22 09:42:56][SCENARIO]  - ERREUR PHP: syntax error, unexpected '=' à la ligne 1 !
[2025-06-22 09:42:56][SCENARIO]  - - - 
[2025-06-22 09:42:56][SCENARIO]  - /* - Fin du Bloc code n°1 - */
[2025-06-22 09:42:56][SCENARIO]  - - - 
[2025-06-22 09:42:56][SCENARIO] Arrêt forcé du scénario pour cause d'erreur de syntaxe php ou de retour 'false'
[2025-06-22 09:42:56][SCENARIO] Action stop
[2025-06-22 09:42:56][SCENARIO] Durée d'exécution (depuis le 1er bloc code) : 8.74 millisecondes
[2025-06-22 09:42:56][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-06-22 09:43:18][SCENARIO] -- Début : Scenario lance manuellement.
[2025-06-22 09:43:18][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-06-22 09:43:18][SCENARIO] Exécution d'un bloc code
[2025-06-22 09:43:18][SCENARIO]  - ----------------------------------------
[2025-06-22 09:43:18][SCENARIO]  - - Framework sc v0.996b
[2025-06-22 09:43:18][SCENARIO]  - - Vos scenarios en PHP
[2025-06-22 09:43:18][SCENARIO]  - - by dJuL
[2025-06-22 09:43:18][SCENARIO]  - ----------------------------------------
[2025-06-22 09:43:18][SCENARIO]  - INFO: DOCUMENTATION DISPONIBLE EN LOCAL EN CLIQUANT ICI
[2025-06-22 09:43:18][SCENARIO]  - - - 
[2025-06-22 09:43:18][SCENARIO]  - /* - Execution du Bloc code n°1 - DEBUG NATIF ACTIF (php >= v7) */
[2025-06-22 09:43:18][SCENARIO]  - - - 
[2025-06-22 09:43:18][SCENARIO]  - - - 
[2025-06-22 09:43:18][SCENARIO]  - /* - Fin du Bloc code n°1 - */
[2025-06-22 09:43:18][SCENARIO]  - - - 
[2025-06-22 09:43:18][SCENARIO] Durée d'exécution (depuis le 1er bloc code) : 0.15 millisecondes
[2025-06-22 09:43:18][SCENARIO] Fin correcte du scénario
1 « J'aime »

Pour le 1=1 : C’est que Jeedom corrige beaucoup de chose pour l’utilisateur.

Note : il y a aussi = = =

Quelle est la différence entre =, == et === en JavaScript ?

Différence entre les opérateurs de comparaison == et === en PHP | Delft Stack

1 « J'aime »

Je m’en suis douté ! :smiley: mais si Jeedom laisse passer cela sans indiquer une erreur de syntaxe, nous nous exposons potentiellement à des problèmes lors de futures MAJ qui seraient moins permissives.

Je suis partisan de toujours essayé de prendre de bonnes habitudes dès le départ.

Pour les exemples cités en javascript : Heu… Mon modeste niveau Jeedom me permet juste de faire quelques scénarios :grin:

Je retiendrai donc " || 1 == 1 " pour forcé « True » un test sur condition.

1 « J'aime »

Bonjour,

Ca fonctionne aussi avec || 1 ou || true
Dans la même logique, pour rendre fausse une condition, vous pouvez ajouter && false

3 « J'aime »

Super Cool ! C’est vraiment une journée ou j’apprends plein de trucs !
(Et la journée ne fait que commencer ! )

Merci pour ces compléments ! :smiley:

Bonjour à tous,
Bon moi je me perds un peu mon modeste niveau a du mal à suivre.
Pour moi ce qui est important c’est de savoir si et quand j’utilise = ou ==.

si je comprends bien, Jeedom opère une correction mais il n’est pas prouvé que cela dure avec les MAJ à venir ?

je pense retenir cette formule

Bonjour.

Oui, mais il y a d’autres opérateurs qui sont traduits et cette traduction, même infime, prend.du temps.

Par exemple, quand vous écrivez Et ou And il faudrait écrire && pour être plus prêt du code natif. Mais cela rend Jeedom moins accessible.

Pareil pour Ou or c’est en fait || qu’il faudrait écrire.

Bonjour,

[quote=« Fabrice, post:14, topic:141491 »]
Par exemple, quand vous écrivez Et ou And il faudrait écrire && pour être plus prêt du code natif. Mais cela rend Jeedom moins accessible.

Pareil pour Ou or c’est en fait || qu’il faudrait écrire.
J’ai rectifié depuis quelques temps tous mes scénarios afin de respecter cette syntaxe.
Dans le cas de ma question, la réponse de @Bonjour peut être retenue en respect de l’avenir ?
Dans un cas précis pour un déclencheur, si j’écris
#[alarme][capteurs AR][capteur mouvement]#==1
je l’écris bien ou faut il
#[alarme][capteurs AR][capteur mouvement]#=1

Pour un test, il faut utiliser les opérateurs de comparaisons
= est un opérateur d’affectation

Dans un déclencheur, il s’agit d’une comparaison et il faut utiliser ==

Dans les scénarios Jeedom, je pense que le = seul n’est utilisé que pour les tags ou dans les blocs codes

Du même avis je regrette simplement de ne pas avoir posé cette question plus tôt

1 « J'aime »

C’est aussi lié au fait qu’une assignation est souvent interprétée comme vrai; donc a=5 est aussi « vrai » (mais peut-être pas a=0, à tester)

Ps: il ne faut pas écrire || 1==1 mais juste || 1 ou plus claire || true