Bonnes pratiques : syntaxe OU = OR = || , et imbrications de blocs

Bonjour à tou(te)s,

C’est l’hiver, je me remets doucement sur les scenarios :slight_smile:

Ce matin j’ai x2 questions :

  1. Syntaxe d’écriture :
    J’ai envie d’allumer une lumière d’ambiance le matin.
    Je veux que le scenario évalue les jours de la semaine, puis qu’il vérifie la présence de l’un ou de l’autre (et que ça marche pour un(e) seul(e) présent(e), ou pour les x2 aussi en meme temps…), pour ensuite dérouler.

Pour l’instant j’ai rédigé de cette façon :

(#sjour# not in ["Mercredi", "Samedi", "Dimanche"]) && #[Maison][Présence UNTEL][Présence]# == 1 OR #[Maison][Présence UNETEL][Présence]# == 1  

Est-ce suffisant, que se passe-t-il si les 2 sont présents ?
Le scenario considèrera-t-il que le fait d’etre les 2 à « 1 » alors cela ne remplit pas la condition UNTEL=1 ou UNETEL=1 ?

  1. Imbrication des conditions :
    Une question sur la façon de positionner graphiquement le bloc de l’action : j’aimerai déclencher l’action à 6h20.
    Faut-il glisser le bloc « juste après », comme ici :

    ou imbriquer le bloc « d’action » dans celui du « dans », comme ici :

    Peut-être que les x2 façons sont recevables et donnent le même résultat au final ?

Merci à tou(te)s pour votre aide :wink:
Bonne journée

Je ferais ça totalement autrement.
Je déclencherais tous les jours avant tes heures d’exécution et je testerais le jours.
Si c’est un des bons jours, j’enchainerais par 2 blocs A qui exécuteraient les actions souhaitées.
Inutile de tester l’heure.
Pour ton test, si tu mets un && entre les 2 conditions, il faut que les 2 conditions soient réunies pour que le test soit vrai.
Si une des 2 conditions ou les 2 sont fausses alors le test est faux dans sa globalité

1 « J'aime »

Merci @mich0111 mais pardon, je ne comprends pas ?

Merci pour la précision !

EDIT:

C’est effectivement ce que je fais, à 5h30 je déclenche le scenario :wink:
C’est uniquement l’action que je veux déclencher à 6h20 (je me suis peut-être mal exprimé), et je veux conserver la possibilité de « doser » ou modifier l’heure facilement via le bloc « A » pour faire des essais « concrets en situation » ces prochains jours…

Déclencheur tous les jours 400.
Scénario

SI bon jour && présence
A 620
FAIRE ON

Merci :wink:

Pour la seconde partie de la condition après le && qui gere la présence,
un conseil pour que cela fonctionne avec l’un ou l’autre présent, ou les x2 présents en même temps ?

Pour l’instant j’ai ceci :

#[Maison][Présence UNTEL][Présence]# == 1 OR #[Maison][Présence UNETEL][Présence]# == 1

Si je ne me trompe pas, il faut que l’un ou l’autre soit présent pour que le scenario valide la condition.
Est-ce que d’avoir les x2 présents ne gênera pas non plus cette interprétation ?
En gros le fait que les 2 conditions soient remplies valide-il aussi la condition ?

En d’autres termes, et sans rien ajouter d’autre, est-ce que le scenario est suffisamment « paresseux » (!) pour que le fait d’avoir x1 seule personne présente, ou les x2 en même temps, fonctionne avec cette syntaxe ?
Dans ma rédaction, le « OR » est-il exclusif ? (Un peu comme le « && »…).

Merci !

PS: je me réponds sur une partie : dans la doc, c’est le « xor » ou « XOR » qui est le « OU exclusif ».
J’en déduis donc que le « OR » = « OU/ET » ? (ce qui m’arrangerait dans mon cas…).

salut,
c’est l’un ou l’autre ou les deux oui.
par contre il y a une erreur de syntaxe qui peut être très impactante: il faut toujours mettre les OU entre parenthèse lorsque tu combines avec un ET

donc ceci ne va pas donner le résultat que tu attends (probablement que dès que PRESENT_2 sera vrai l’ensemble sera vrai)

JOUR && PRESENT_1 || PRESENT_2

tu dois écrire

JOUR && (PRESENT_1 || PRESENT_2)

donc si je reprend ton test:

(#sjour# not in ["Mercredi", "Samedi", "Dimanche"]) && (#[Maison][Présence UNTEL][Présence]# == 1 OR #[Maison][Présence UNETEL][Présence]# == 1)  

OU = OR = ||
ET = AND = &&

Yes ! Merci beaucoup @Mips :wink:
je vais proposer un PR sur Github dans la doc pour ajouter cette subtilité, ce sera peut-être utile à d’autres…

Je me doutais bien qu’un truc clochait
Cela m’a permis de découvrir la subtilité des parenthèses :slight_smile:

Au passage, puis-je abuser ? As-tu un avis également sur ceci :

Bonjour,

Attention, le sujet a été marqué comme résolu ! On n’est pas sensé poursuivre la discussion…

Pour répondre sur le point 2 :

34c5db26847fdc0973ea4ba97e9ab081a4564794_2_690x95

Pas bon…
L’allumage de la lampe d’ambiance ne se déclenchera pas à 06h20 comme attendu, mais immédiatement après avoir lancé la programmation à 06h20 du bloc d’instruction dans le bloc A…FAIRE où il n’y a…rien.
Soit à 05h30 si j’ai bien suivi. Ça va râler… :grin:

7acdc082e63568399b099c561f8044a90c66aae4_2_690x72

Par contre ça, ca marchera beaucoup mieux…

1 « J'aime »

Je pensais que tu avais lu ma réponse, c’est pourtant clairement marqué.

Je confirme l’avoir lue et relue :stuck_out_tongue:

Pardon mais pas assez clair pour moi je pense :slight_smile:
j’ai besoin d’un peu de pédagogie sur les scenario.
je n’y vais pas souvent et parfois je me fais des noeux au cerveau, peut-être pour rien…

Merci bcp @DanielJ, avec tes explications c’est 100% résolu maintenant :slight_smile:

Et merci à vous 3, grâce à vos points de vues complémentaires j’ai encore progressé aujd ! :pray:

Si ça ce n’est pas clair, je ne vois pas comment l’être davantage.
Bonne soirée

Le niveau 2 avec les or et les and c’est de savoir/comprendre qu’une évaluation va s’arrêter dès que ce n’est plus utile de continuer (c’est vrai en php mais ce n’est pas le cas dans tous les langages).
J’explique:

  • un test avec un or, la seconde opérande ne sera pas évaluée si la première est vrai car quelque soit le résultat, le tout sera vrai
  • à l’inverse, avec un and, on s’arrête si la première est fausse
2 « J'aime »

Je n’ai pas l’esprit de synthèse comme toi. Je n’arrive pas à traduire ton schema texte en interface graphique dito mes captures d’écran :wink:

Ecrit comme tu l’as fait, je trouve que c’est « conceptuel », un concept avec lequel je suis en accord d’ailleurs car c’est ce que je souhaite faire que tu as très bien résumé.

Mais trouver la subtilité pour « glisser le bloc de couleur au bon endroit » n’était pas clair pour moi…
Pas assez à l’aise avec l’outil scenario de Jeedom.
Je ne trouvais pas déconnant « graphiquement » à nouveau de glisser le bloc ACTION juste après celui de A, car graphiquement cela fait sens avec un déroulé « en cascade » et décallés de la meme façon par rapport au bloc SI… Mais en le mettant à l’intérieur de A, c’est uniquement de cette façon qu’il sera interprété (et me donnera la paix du couple au passage :grin:)

Donc, avec ton esprit de synthèse et 3 lignes tu poses bien la réponse, le bon « schema conceptuel du scenario », mais Daniel va plus loin en se mettant à mon niveau et m’expliquant les différences entre tel ou tel disposition « graphique » de l’outil Jeedom.

Vous avez raison tous les 2, mais moi je comprends mieux quand on m’explique d’une certaine façon :smiley: Ou quand on m’explique longtemps, comme tu préfères :wink: :sweat_smile:

Merci pour tes précisions.

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