Page 1 sur 1

calcul avec condition dans virtuel

Publié : 05 juin 2019, 00:21
par cocolate
Bonsoir,
Je n'ai pas trouvé si ce que je cherche à faire est possible ou alors si c'est que je n'ai pas la bonne logique.
Je récupère les 4 valeurs de température de ma VMC double-flux via une passerelle KNX. J'ai créé un virtuel qui calcul le rendement de ma VMC DF sur la base du calcul constructeur : round(round(#[maison][VMC][Air neuf soufflé]#-#[maison][VMC][Air neuf]#,4)/round(#[maison][VMC][Air repris]#-#[maison][VMC][Air neuf]#,4)*100)
Le problème est que quand ma VMC passe en bypass de l'échangeur (valeur 1/0 booléenne que je récupère sans souci), le calcul du rendement n'a plus de sens et les valeurs calculées viennent polluer l'historique du rendement.
Est-il possible d'ajouter une condition au calcul du rendement dans le virtuel ? Genre, bypass=0 le virtuel calcule le rendement et bypass=1 le calcul ne se fait plus et surtout, aucune valeur ne s'enregistre dans l'historique du virtuel.
J'espère avoir été clair et que ce sujet n'a pas déjà été discuté (si c'est le cas je me contenterai du lien).
Bonne soirée.

Re: calcul avec condition dans virtuel

Publié : 05 juin 2019, 07:39
par madcow
Bonjour,

As-tu essayé avec un opérateur ternaire ?

Re: calcul avec condition dans virtuel

Publié : 05 juin 2019, 09:17
par cocolate
Merci pour ta réponse. Non je n'avais pas connaissance de cette possibilité. Je vais essayer, j'ai trouvé un post qui en parle : viewtopic.php?f=30&t=40477

Re: calcul avec condition dans virtuel

Publié : 05 juin 2019, 21:09
par cocolate
Ca fonctionne très bien avec un opérateur ternaire. Pour info si quelqu'un d'autre cherche le même genre de calcul de valeur à condition voici la formule :
(condition==xxx) ? "valeur1" : "valeur2"
Si condition==xxx alors la valeur du virtuel vaudra valeur1 sinon elle vaudra valeur2
Ce qui donne dans mon cas ceci.
(#[maison][VMC][Bypass]# == 0) ? "round(round(#[maison][VMC][Air neuf soufflé]#-#[maison][VMC][Air neuf]#,4)/round(#[maison][VMC][Air repris]#-#[maison][VMC][Air neuf]#,4)*100)" : "0"

Merci beaucoup MADCOW, je ne connaissais pas et c'est trop classe !

Re: calcul avec condition dans virtuel

Publié : 07 juin 2019, 11:47
par julien74
cocolate a écrit :
05 juin 2019, 21:09
Ca fonctionne très bien avec un opérateur ternaire. Pour info si quelqu'un d'autre cherche le même genre de calcul de valeur à condition voici la formule :
(condition==xxx) ? "valeur1" : "valeur2"
Si condition==xxx alors la valeur du virtuel vaudra valeur1 sinon elle vaudra valeur2
Ce qui donne dans mon cas ceci.
(#[maison][VMC][Bypass]# == 0) ? "round(round(#[maison][VMC][Air neuf soufflé]#-#[maison][VMC][Air neuf]#,4)/round(#[maison][VMC][Air repris]#-#[maison][VMC][Air neuf]#,4)*100)" : "0"

Merci beaucoup MADCOW, je ne connaissais pas et c'est trop classe !
Une autre facon est d'utiliser les "maths":
utiliser le fait que le résultat d'une condition vaut les valeurs numériques 0 ou 1:

Code : Tout sélectionner

(#[maison][VMC][Bypass]# == 0)*round(round(#[maison][VMC][Air neuf soufflé]#-#[maison][VMC][Air neuf]#,4)/round(#[maison][VMC][Air repris]#-#[maison][VMC][Air neuf]#,4)*100)
Aussi écrit:

Code : Tout sélectionner

(!#[maison][VMC][Bypass]#)*round(round(#[maison][VMC][Air neuf soufflé]#-#[maison][VMC][Air neuf]#,4)/round(#[maison][VMC][Air repris]#-#[maison][VMC][Air neuf]#,4)*100)

Re: calcul avec condition dans virtuel

Publié : 07 juin 2019, 13:05
par cocolate
merci Julien74