yoim 51 Signaler ce message Posté(e) 23 mai 2017 Bonjour, J'ai besoin de recuperer l'etat, value d'une sonde de temperature dans un module virtuel. Est-ce que je suis obligé de creer un scene qui va m'envoyer ma valeur dans Globals Variable et ensuite je peux recupérer les valeurs pour mon module virtuel comme ceci : fibaro:setGlobal("SysPrise_auto", "ON"); fibaro:call(103, "setProperty", "ui.Label1.value", "Auto"); ou Je peux directement recuperer mes valeurs de temperature et les afficher directement dans mon module virtuel comme un fibaro.debug par exemple ... local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature")); fibaro:call(103, "setProperty", "ui.Label1.value", "OutsideTemperature"); J'ai du mal a comprendre le systeme de Boucle principale dans les modules virtuels. Si quelqu'un peut m'aider ? Merci. Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 23 mai 2017 (modifié) Bonjour, Tu peux le faire directement comme dans ton 2ème exemple mais sans les apostrophes pour la variable Dans ton exemple tu récupères la température utilisée par défaut par la HC2, soit YR Meteo local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature")); fibaro:call(103, "setProperty", "ui.Label1.value", OutsideTemperature); Le Main loop est configuré pour tourner toutes les secondes je crois, faudrait vérifier, mais c'est écrit juste sous Mainloop dans le VD tu mets le code que tu veux dedans. Attention tout de même, mieux vaut éviter les sleeps Bien réflechir à ce que tu vas mettre dedans en se posant la question de la nécessité de faire tourner un code toutes les x secondes pour optimiser au maximum en évitant la surcharge de la box, bien que la HC2 soit solide ;-) Modifié 23 mai 2017 par pepite 1 Partager ce message Lien à poster Partager sur d’autres sites
yoim 51 Signaler ce message Posté(e) 23 mai 2017 Merci @pepite C'est exactement ca ! Sur certains posts ils disent qu'il faut justement mettre le sleep. Tu me conseilles de ne pas en mettre ? Mon module virtuel recupere 6 valeurs de temperature differentes. Merci. Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 23 mai 2017 De rien. Mettre le sleep dans le mainloop, c'est possible, tout à fait, mais mieux vaut prendre l'habitude de mettre le code du main loop dans un bouton et dans le main loop mettre l'appui sur le bouton toutes les X mins ou sec ou heures avec ce type de code de@Steven maintenant = os.date("%H:%M", os.time()) local selfId = fibaro:getSelfId() -- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée. if (not instance) then -- on indique la fréquence d'execution souhaitée (en minutes) instance = { lastrun = 0, every = 1 } fibaro:debug("first run") end -- on vérifie la différence entre cette exécution et la dernière (stocké dans instance.lastrun) diff = os.date("*t", os.difftime(os.time(), instance.lastrun)) -- si la différence en minutes et supérieure ou égale à la fréquence souhaitée (instance.every) if (diff.min >= instance.every) then fibaro:call(selfId, "pressButton", "14") -- on stock l'heure de la nouvelle exécution instance.lastrun = os.time() fibaro:debug("executed") end Ca evite en fait les erreurs qu'on a pu avoir avec les gros sleeps dans le main loop qui faisait planter. 1 Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 602 Signaler ce message Posté(e) 23 mai 2017 C'est quoi cette histoire de sleep qui fait planter les VD ? Partager ce message Lien à poster Partager sur d’autres sites
yoim 51 Signaler ce message Posté(e) 24 mai 2017 J'avais vu ce post par @jojo pour le sleep ... Question LUA intermediaire, maintenant je recupère bien toute mes sondes avec la temperature. Histoire d'être carré jusqu'au bout j'aimerais recuperer mes valeurs de temperature avec 1 seul chiffre après la virgule. Là je suis à 2. exemple 20,33° Ya pas une histoire de substr pour remonter mes valeurs avec juste un chiffre après la virgule. 20,3° J'avoue que je titille un peu Merci. Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 602 Signaler ce message Posté(e) 24 mai 2017 Essaye ça si je me trompe pas : string.format("%.2f", ma_valeur_string) %.1f pour un chiffre après la virgule..; a tester. 1 Partager ce message Lien à poster Partager sur d’autres sites
yoim 51 Signaler ce message Posté(e) 24 mai 2017 local SalonTemperature = tonumber(fibaro:getValue(247, "value")); fibaro:call(306, "setProperty", "ui.Label2.value", string.format("%.1f", SalonTemperature).."°C"); Parfait ca ! Merci beaucoup, ca fonctionne ! Partager ce message Lien à poster Partager sur d’autres sites
mipa 12 Signaler ce message Posté(e) 11 août 2020 Hello, Je fais suite à cette ancien post, qui m'intéresse. Je suis à la recherche d'un module virtuelle, pour récupérer des valeurs de température d'une cave à vins... Je pensais me servir de mon FGMS pour récupérer la valeur (ID93.0.1) J'ai pas trouvé sur le site, est ce que l'un d'entre pourrait m'aider à le faire ou encore mieux l'un d'entre vous l'a déjà fait ? Ce qui m'intéresse de savoir : Température actuel Température la plus haute et la plus basse de cette semaine Température la plus haute et la plus basse de ce mois Température moyenne du mois en cours Température moyenne mois par mois (sur les 12 derniers mois) Température annuel moyenne (comparaison an par an) Gros projet....Mais cela peux certainement intéressé d'autre utilisateurs Merci d'avance de vos précieux conseils Partager ce message Lien à poster Partager sur d’autres sites