Aller au contenu
yoim

Afficher un etat sonde de temperature dans un module virtuel

Recommended Posts

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

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é par pepite
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :P

 

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaye ça si je me trompe pas :

 

string.format("%.2f", ma_valeur_string)

%.1f pour un chiffre après la virgule..;

 

a tester.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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 ! :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

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

×