yoim Posté(e) le 23 mai 2017 Signaler Posté(e) le 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.
pepite Posté(e) le 23 mai 2017 Signaler Posté(e) le 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é le 23 mai 2017 par pepite 1
yoim Posté(e) le 23 mai 2017 Auteur Signaler Posté(e) le 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.
pepite Posté(e) le 23 mai 2017 Signaler Posté(e) le 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
jjacques68 Posté(e) le 23 mai 2017 Signaler Posté(e) le 23 mai 2017 C'est quoi cette histoire de sleep qui fait planter les VD ?
yoim Posté(e) le 24 mai 2017 Auteur Signaler Posté(e) le 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.
jjacques68 Posté(e) le 24 mai 2017 Signaler Posté(e) le 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
yoim Posté(e) le 24 mai 2017 Auteur Signaler Posté(e) le 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 !
mipa Posté(e) le 11 août 2020 Signaler Posté(e) le 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
Messages recommandés