Condition dans virtuel

Bonjour,
Je cherche à afficher dans un virtuel une information en fonction de la valeur d’une commande.
Voici la formule : (#[Jardin][OnOff plug-in unit 1][Etat]#=1) ? "gmdate("H:i",lastStateDuration(#[Jardin][OnOff plug-in unit 1][Etat]#,1))" : "0"

Lorsque #[Jardin][OnOff plug-in unit 1][Etat]# = 0 la valeur affichée est bien 0
Lorsque #[Jardin][OnOff plug-in unit 1][Etat]# = 1 la valeur affichée est (1=1)?00:00 : 0

J’ai tenté avec des parenthèse, des guillemets, ça fait pareil.
La commande gmdate("H:i",lastStateDuration(#[Jardin][OnOff plug-in unit 1][Etat]#,1)) seul fonctionne sans problème.

Pouvez-vous m’aider ?

Mathieu

Salut,

Ce sera bien plus lisible en utilisant les balises code </>

Comme ça au débotté je dirais qu’il manque un signe = :

(#[Jardin][OnOff plug-in unit 1][Etat]# == 1) ? "gmdate('H:i',lastStateDuration(#[Jardin][OnOff plug-in unit 1][Etat]#,1))" : "0"

Aides-toi du testeur d’expression éventuellement

1 « J'aime »

Bonjour @Salvialf,
J’ai corrigé mon post avec les balises.
J’ai testé avec ==, cela me fait pareil : (1==1)?00:00 : 0

Comme si la formule gmdate(… n’était pas prise en charge lorsqu’on a une condition dans la valeur.

Mathieu

Effectivement y’a un truc qui lui plait pas avec gmdate('H:i',..... sur une commande d’un virtuel alors que c’est OK avec le testeur d’expression… Peut-être l’enchaînement de parenthèses ?!

J’ai pas creusé plus loin mais sur quelques essais j’ai les mêmes retours que toi :frowning:

Pourtant, cela fonctionne plutôt bien sans le système de condition:
image

Il ne traite plus la ligne comme un ternaire dès qu’il y a gmdate('H:i', en +… Du coup il affiche l’intégralité du ternaire et ne traite plus la condition

Est-ce un bug ou une incompatibilité ?
Je vois pas comment faire sans les parenthèses :frowning:

Les virtuels ne sont pas capables de faire forcément tous les calculs et dans ton cas ça semble être le cas.

Tu ne peux pas faire la même chose via une variable que tu afficherais dans un virtuel ?

Je peux essayer.
Mon calcul de variable, je le fais où ?
L’idée est d’éviter l’utilisation d’un scénario juste pour ça.

Je me permet une petite question car cela est super intéressant de pouvoir faire des tests dans un virtuel !
Pour de petites choses cela peut éviter des scénarios inutiles

Et comment faire pour avoir deux réponses :
si condition vraie : « inf »
si condition fausse « sup » car il me répond null le testeur d’expression

(#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<90) ? "inf" "sup"

merci
Lemars

:JE VIENS DE TROUVER DANS UN POST DESOLE: faut séprer les réponses avec des « : »
(#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<90) ? « inf » : « sup »

Manque de bol cela fonctionne dans le testeur d’expression avec des tests imbriqués :
((#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<45) ? "du Nord" : ((#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<135) ? "d'Est" : ((#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<225) ? "du Sud" : ((#[Météo][Plugin MétéoFrance LS][Marine - Direction du vent]#<315) ? "d'Ouest" : "du Nord"))))

mais pas dans le virutel : la réponse est :
((45<45) ? du Nord : ((45<135) ? d’Est : ((45<225) ? du Sud : ((45<315) ? d’Ouest : du Nord))))

J’ai exactement le même problème, as tu trouvé une solution?

Malheureusement non
J’ai du faire un petit scénario…

bonjour, ou si on en a souvant besoin on se créé la fonction

https://forum.jeedom.com/viewtopic.php?t=41804

Salut @ajja17orange,

Pour info ça doit maintenant fonctionner avec le core en 4 2 5

alors attendre la stable ou passer en bêta :grinning: