Page 1 sur 1

Question Blocky condition IF

Publié : 18 févr. 2019, 08:22
par Samuelan
Bonjour à tous,

J'ai réalisé un script en Blocky qui ne fonctionne pas comme je le souhaite...

En fonction du status d'un switch X10 type ON/OFF, le script est censé exécuter une action spécifique lorsqu'il est ON, et une autre action spécifique lorsqu'il est OFF.

Je print un message dans le log dans les deux cas.

ca donne ca :

If {détecteur_ext = ON}
do {if {switch = ON}
do {print détection et switch ON}
else if {switch = OFF}
do {print détection et switch OFF}
}

En pratique, lorsque détecteur_ext est déclenché, je vois dans le log :
"détection et switch ON"
"détection et switch OFF"

Peu importe le status de "switch" (ON ou OFF). donc les conditions switch = ON et switch = OFF sont toutes les deux vraies... :o :o

Quelqu'un peut m'aider?

Merci

Re: Question Blocky condition IF

Publié : 18 févr. 2019, 08:44
par Antori91
Bonjour,

Si vous avez vraiment dans un premier DO d'autres IF, cela ne fonctionne pas de ce que j'ai pu lire ailleurs (pas testé moi-même). En ce qui me concerne, je ne fais qu'un seul niveau de IF...ELSE IF...ELSE IF (pas de IF...ELSE IF dans un DO).

Mais même avec un seul niveau de ELSE IF, attention car le "ELSE IF" fonctionne comme un "OR IF" !! Il faut donc mettre toutes les conditions dans chacune des conditions testées des IF et ELSE IF pour n'avoir qu'un seul IF/ELSE IF exécuté.

On trouve pas mal d'info sur le sujet sur le Forum anglais dont par exemple http://www.domoticz.com/forum/viewtopic ... 62&t=16455

Re: Question Blocky condition IF

Publié : 18 févr. 2019, 22:19
par Samuelan
Effectivement, apres avoir supprimé les conditions IF dans les blocs d'instruction DO, cela fonctionne

Donc je retiens que Blocky n'est pratique que pour les scripts vraiment élémentaires... un peu dommage!

Merci!

Re: Question Blocky condition IF

Publié : 21 févr. 2019, 11:07
par Datawolf
Salut,
J'ai un boitier pour commander un radiateur.
Quand il est OFF, pas de courant sur le fil pilote, donc chauffage allumé. Et inversement.
C'est à mon sens perturbant de voir "OFF" quand l'appareil est allumé.
J'ai donc caché ce switch, que j'ai remplacé par un autre dans le dashboard.
Et c'est un blocky qui fait le boulot:

Code : Tout sélectionner

IF machin = OFF
DO Set truc = ON
ELSEIF machin = ON
DO Set truc = OFF
Et ça marche très bien.
@+
Datawolf