Petit bug il me semble en V4 : j’essaye de faire un virtuel très simple, qui en fonction de la température de consigne d’un de mes radiateurs, m’affiche du texte. Voici un ternaire simple que j’ai essayé et qui n’affiche rien :
#[Salon][Radiateur][Température de consigne]# <= 19 ? "Eco" : "Confort"
Dans le testeur d’expression, aucun problème, cela fonctionne et voici le résultat :
Mais pas dans le virtuel (que ce soit avec « Tester » ou visuellement (PS : je suis en type info et sous type autre). Voici le résultat dans le virtuel :
Résultat de la commande : 17 <= 19 ? "Eco" : "Confort"
J’ai remplacé le ternaire en mettant des résultats de type entier, et ça fonctionne bien à la fois dans le testeur et dans le résultat du virtuel
Exemple :
#[Salon][Radiateur][Température de consigne]# <= 19 ? 123 : 456
Je ne peux pas tester sur smartphone mais as-tu essayé sans guillemet ?
Je sais ça n’a pas de sens mais qui sait, il y a peut-être des problèmes avec les caractères spéciaux dans la case valeur des virtuels.
Je sais que j’avais eu le même problème dans une expression mais je ne me rappelle plus comment cela avait été réglé.
Il faudrait chercher dans le forum pour retrouver le fil en question.
Ce doit être une histoire de guillemets qui sont ajoutés lors du traitement de la commande virtuelle et ne doivent pas être dérangeants sur des chiffres. A mon avis pas vraiment quelque chose qui peut se corriger sans casser tout Jeedom.
Tu pourrais stocker le résultat de ton calcul dans une variable via un scénario et récupérer cette variable dans le virtuel:
C’est quasiment ce que j’ai fait, mais dans un script php, vu que j’ai plusieurs commandes à faire, je passe en paramètre ce qu’il faut et j’ai bien le résultat. Voici la version simple, mais ça fonctionne nickel:
Ou alors, une solution franchement moche et à déconseiller serait d’utiliser des variables constantes dans lesquelles tu mettrais les valeurs eco et confort (stringeco et stringconfort)
Ensuite tu remplacerais dans ton expression les « eco » par variable(chaineeco)
Tu le sais sûrement mais tu as la possibilité d’inclure des fonctions persos dans jeedom par le fichier /var/www/html/data/php/user.function.class.php que tu pourrais appeler directement dans tes virtuels avec Ma_Fonction($arg) dans l’idée de ce que tu voulais faire au début
J’ai testé ton ternaire dans un virtuel vite fait et si tu regardes bien après traitement le guillemet final est ôté avec un retour de ce type: 17 <= 19 ? "Eco" : "Confort
A coup sûr un str_replace indispensable pour que les commandes virtuelles soient fonctionnelles dans un maximum de cas. Pas gênant pour des chiffres mais empêche d’utiliser un ternaire string directement dans une commande virtuelle.
En dernière solution tu pourrais aussi conserver ton ternaire mais avec un retour binaire 0 : 1 et utiliser un widget perso qui renverrait Eco ou Confort en fonction de la valeur.