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.
calcul avec condition dans virtuel
Re: calcul avec condition dans virtuel
Bonjour,
As-tu essayé avec un opérateur ternaire ?
As-tu essayé avec un opérateur ternaire ?
DIY Proxmox sur HP Proliant
Débutant sur Jeedom
Débutant sur Jeedom
Re: calcul avec condition dans virtuel
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
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 !
(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
Une autre facon est d'utiliser les "maths":cocolate a écrit : ↑05 juin 2019, 21:09Ca 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 !
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)
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
merci Julien74
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 11 invités