Page 1 sur 1

Status "texte" a valeurs multiples en standard

Publié : 01 sept. 2019, 11:34
par Dapolux
Bonjour,

J'ai actuellement des servomoteurs pour le chauffage, pilotés par une vanne 3 voie, qui est pilotée par des relais, et je souhaiterais réussir a avoir en standard (c'est à dire avec un retour de commande direct, pas juste un affichage paramétré dans un widget spécifique), en fonction de la valeur des relais, tout cela dans un Virtuel.

Mon besoin est donc, à partir d'une agréation de statuts (commandes infos binaires), de déterminer une info de type texte (info "Autre" je suppose) .

En gros :
==> si status relais 1 = 0 et status relais 2 = 0 alors nouvelle info = "texte 1"
==> si status relais 1 = 0 et status relais 2 = 1 alors nouvelle info = "texte 2"
==> si status relais 1 = 1 et status relais 2 = 0 alors nouvelle info = "texte 3"
==> si status relais 1 = 1 et status relais 2 = 1 alors nouvelle info = "texte 4"

Par le calcul, je peux gérer 4 résultats numériques différents (par exemple en faisant status relais 1 + 2x status relais 2, j'aurais donc bien 4 résultats possibles: 0,1,2 et 3), mais ce que je voudrais c'est que la commande d'info me renvoi le texte associé et non un numérique.

A part en faisant un widget spécifique une idée qui serait un peu plus simple standard?

Bonne journée,
Dapolux

Re: Status "texte" a valeurs multiples en standard

Publié : 02 sept. 2019, 09:36
par Mips2648
Bonjour,

Je ne suis certain de comprendre ta question car il me semble que la réponse est dans ton post:
Tu fais ton virtuel avec les valeurs (numérique ou binaire) de tes relais et une commande info avec les conditions en valeurs.
Evidemment au plus du a de relais au plus tu vas complexifier ton test
Mais donc en mettant dans le champs valeur de l'info virtuel qlq chose comme

Code : Tout sélectionner

(condition==xxx) ? "valeur1" : "valeur2"
tu dois t'en sortir.

Autre solution, plus facilement maintenable car le résultat sera plus lisible je pense, en déclenchant un scénario dès que la valeur d'un des relais change et ce scénario test les conditions pour définir la valeur de la commande info.
Donc même principe mais dans un scénario plus facile à lire qu'une ligne surtout si tu dois tester 2 valeurs binaires.

Re: Status "texte" a valeurs multiples en standard

Publié : 02 sept. 2019, 16:44
par Dapolux
Hello,

Avec les scenarios je savais, mais ça devient un peu usina à gaz pour cela (un peu l'impression de sortir le bazooka pour une mouche :) ).

Ta solution répond bien à mon besoin, je vais arriver à imbriquer mes conditions je pense (je ne savais que cette instruction était possible), mais j'ai juste un petit souci peut être de syntax je pense:
Je met dans le testeur d'expressions: (#[En test][MonWemos][Vanne RDC On-Off]# ==1)?"Yes":"No" ==> j'ai comme résultat : Yes (sachant que l'info de la vanne est un binaire qui vaut 1), donc c'est bien ce qu'il me faut.
Je créé une info de type "Autre" dans mon virtuel, avec comme valeur (calcul) : (#[En test][MonWemos][Vanne RDC On-Off]#==1) ? "Yes" : "No" ==> mon résultat: (1==1) ? "Yes" : "No"
J'ai testé avec des espaces en plus entre chaque instruction, je n'arrive pas à mes fins.

Merci!

Re: Status "texte" a valeurs multiples en standard

Publié : 02 sept. 2019, 19:53
par winhex
bonjour
un manque connu solutionné en créant ta propre cmd Si ici
viewtopic.php?f=59&t=41804&p=681370&hilit=php#p680439

Re: Status "texte" a valeurs multiples en standard

Publié : 02 sept. 2019, 20:21
par Dapolux
Top, ça fonctionne (je ne connaissais pas ces user functions, je sent que ça va bien me servir)

Merci bcp!

Re: Status "texte" a valeurs multiples en standard

Publié : 02 sept. 2019, 21:10
par Dapolux
Bon en fait il va falloir que je potasse encore un peu, car dans la solution d'utiliser une fonction "si" perso, il faut passer en paramètre 1 et 1 seule commande, je ne peux pas lui mettre une somme ou autre.

Je pense que je vais directement créer une commande qui me renvoi le résultat qui va bien

Re: Status "texte" a valeurs multiples en standard

Publié : 03 sept. 2019, 08:12
par tomdom
Bonjour,

Dans une "userFunction", tu peux mettre autant de paramètre que tu veux. Exemple pour ton cas :

Code : Tout sélectionner

public static function vanneStatus($relai1,$relai2) {
	$r1=scenarioExpression::setTags(trim($relai1," \t\n\r\0\x0B'\""));
	$r2=scenarioExpression::setTags(trim($relai2," \t\n\r\0\x0B'\""));
	if($r1==0 && $r2==0) return	"etat1";
	.................
}	

Re: Status "texte" a valeurs multiples en standard

Publié : 04 oct. 2019, 21:24
par Berry22
Dans une "userFunction", tu peux mettre autant de paramètre que tu veux. my ip birthday wishes tneb

Merci!!!