Berale64 Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Bon, ça casse pas une patte à un canard, mais pour apprendre LUA mieux vaut commencer simple. L'objet de cette petite chose est d'avoir un visu des températures min/max. Quand vous achetez un thermomètre à deux balles il a des options de mini/maxi, mais pas chez Fibaro. Il y a donc une scène qui tourne en continue et retient les min et max. L'affichage ce fait dans un device virtuel. Le bouton reset tue la scène et la redémarre. Il vous faudra changer les "id" de vos thermomètres et du virtual device. Rien ne vous empêche de rajouter les thermomètres de la chambre du petit dernier, du cellier de vos bonnes bouteilles (moi, c'est Saint Emilion - Merci ). Au printemps je mettrais la piscine. --[[ %% autostart %% properties %% globals --]] local temp; local TempExtMin = 100; local TempExtMax = -100; local TempSalonMin = 100; local TempSalonMax = -100; local temin = ""; local temax = ""; local tsmin = ""; local tsmax = ""; local id = {}; id.tempext = 35; id.tempint = 42; id.display = 74; while true do -- Température extérieur temp = fibaro:getValue(id.tempext,"value"); if (tonumber(temp) < TempExtMin) then TempExtMin = tonumber(temp); temin = string.format("%2.1f",TempExtMin); end if (tonumber(temp) > TempExtMax) then TempExtMax = tonumber(temp); temax = string.format("%2.1f",TempExtMax); end fibaro:call(id.display, "setProperty", "ui.Label1.value", temin.." / "..temax.." °C"); fibaro:call(id.display, "setProperty", "ui.Label7.value", temp.." °C"); -- temérature intérieur temp = fibaro:getValue(id.tempint,"value"); if (tonumber(temp) < TempSalonMin) then TempSalonMin = tonumber(temp); tsmin = string.format("%2.1f",TempSalonMin); end if (tonumber(temp) > TempSalonMax) then TempSalonMax = tonumber(temp); tsmax = string.format("%2.1f",TempSalonMax); end fibaro:call(id.display, "setProperty", "ui.Label11.value", tsmin.." / "..tsmax.." °C"); fibaro:call(id.display, "setProperty", "ui.Label13.value", temp.."°C"); fibaro:sleep(3*60*1000); end Temp_minmax.vfib PS: Cet outil est vraiment très pratique sur smartphone. 6
Nico Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Excellent, je crois que je vais le mettre rapidement celui là!
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Super, je vais aussi essayer. Question : pourquoi définis-tu 2 variables min / 2 variables max par thermomètre (au lieu de 1 min et 1 max) ?
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 @Berale24, Dans la VD de c-lol (http://www.domotique-fibaro.fr/index.php/topic/3173-vd-check-connexion-internet/) il y a ceci, qui pourrait t'affranchir de hardcoder l'id de ta VD. local deviceId = fibaro:getSelfId(); Je ne sais pas où tu l'a mis, mais ce serait peut-être une possibilité d'amélioration ? Autres idées en vrac : mettre un bouton reset par thermomètre dans la VD afficher la date du dernier reset du thermomètre Merci en tout cas !!!!
Berale64 Posté(e) le 23 janvier 2015 Auteur Signaler Posté(e) le 23 janvier 2015 Excellent la signature Jojo. :-) La fonction getValue te renvoie un string (j'en vois qui rigolent) mais il faut une valeur numérique pour faire une comparaison plus grand ou plus petit. De même pour afficher il faut un variable alphanumérique (ça rigole moins là). On peut jouer avec les fonction "to string" et "tonumber" mais j'ai choisi deux variables. Note aussi la fonction string.format qui permet de n'afficher qu'une décimale. J'ai toujours trouvé ridicule ces valeurs au centième de dégrée alors que la précision de ces trucs est de +/- 0.5 dégrée. Getselfid te renvoie l'id du device actuel. Ici j'ai besoin de l'id d'un autre device. La date, bonne idée. J'avais pensé au reset individualisés mais il faut alors passer par des variables globales et j'avais la flemme.
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Berale24, Merci beaucoup de m'avoir donné l'occasion de me mettre au LUA. Je propose ici une V1 de ce que tu as fait : tout le code est dans la VD (plus de scène) les données sont dans une variable globale on peut reseter chaque thermomètre indépendemment, avec date du dernier reset Donc, pour faire marcher le basard : créer une variable globale par thermomètre ligne 18 : spécifier le n° de l'icône à afficher Sorry, mais le code n'est pas générique : je n'y connais rien en LUA, je n'ai fait que honteusement recopier ce que Berale24 (el c-lol) ont fait. Si un vrai pro pouvait me dire comment reformater les dates (en 01/12/2015 22:59), ce serait super, car je trouve ce format par défaut nul
Krikroff Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 @jojo, Pour reformater les dates (en 01/12/2015 22:59) tu peux essayer ceci os.date("%x %H:%M") 1
Berale64 Posté(e) le 24 janvier 2015 Auteur Signaler Posté(e) le 24 janvier 2015 Beau travail Jojo. J'ai rajouté la date de reset et trouvé un erreur grossière. Il va falloir que je mette une nouvelle version.
Berale64 Posté(e) le 24 janvier 2015 Auteur Signaler Posté(e) le 24 janvier 2015 Question pour les pros. J'avais d'abord, par erreur, mis le code de reset dans la boucle principale du VD et donc mon device passait son temps à faire des reset. Je l'ai déplacé dans le bouton, mais celui ci devient automatiquement "principal" et donc fait aussi des reset. Impossible de décocher la petite case sauf en créant un bouton bidon qui devient principal et ne fait rien. Une idée ??? Merci.
jojo Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 pour moi,le bouton principal ne s'active pas automatiquement, sauf si tu cliques sur le bouton par défaut de ta VD. Dans ma VD, un des deux boutons reset est le main, mais pas de reset en continu
jojo Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 Merci Krikroff, j'ai utilisé ceci "%d/%m/%m %H:%M" (pour avoir 24/01/14 10:22), car avec "%x %H:%M" j'avais 01/24/14 10:22. Voici donc la dernière version de la VD de Berale24 :
jojo Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 Merci Krikroff, j'ai utilisé ceci "%d/%m/%y %H:%M" (pour avoir 24/01/14 10:22), car avec "%x %H:%M" j'avais 01/24/14 10:22. Voici donc la dernière version de la VD de Berale24 :
Berale64 Posté(e) le 24 janvier 2015 Auteur Signaler Posté(e) le 24 janvier 2015 T'es encore en 2014. va falloir penser àmettre àjour ta box !!!
jojo Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 la version 2014 de la box fonctionne bien mieux que la version 2015 ! Je suis Belge, mais pas fou ! 2
azer31 Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 casse pas trois pattes a un canard ,mais je trouve que c'est un très bonne idée merci pour le partage
azer31 Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 jojo il fait chaud a Nivelles 18c j'arrive 1
Berale64 Posté(e) le 24 janvier 2015 Auteur Signaler Posté(e) le 24 janvier 2015 Voilà , j'ai résolu mon problème. Temp_minmax.vfib
turlututu74 Posté(e) le 25 janvier 2015 Signaler Posté(e) le 25 janvier 2015 Bien joué, je prends le vfib. Il me sera utile pour l extérieur, le le salon. Merci Berale24
turlututu74 Posté(e) le 25 janvier 2015 Signaler Posté(e) le 25 janvier 2015 Fonctionne du premier coup! Merci encore.
Berale64 Posté(e) le 25 janvier 2015 Auteur Signaler Posté(e) le 25 janvier 2015 Pas de quoi. Amuse toi bien.
Did Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Je viens de l'installer et comme turlututu74, ça tourne nickel. Ca casse peut-être pas quatre pattes à un canard mais bien deux. Merci Berale24!!!
jojo Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Je viens de découvrir quelque chose de super : Il est possible d'afficher un label sur le premier écran (malheureusement on ne sait pas en afficher plusieurs) Pour cela, il suffit de cocher le label que vous voulez afficher comme "main" Du coup, j'ai fait un module par sonde de température, qui m'affiche en continu le min/max
Sakkhho Posté(e) le 1 février 2015 Signaler Posté(e) le 1 février 2015 Je voulais masquer la scene de l'interface, j'ai donc mis sur "no" le show the scene in the interface, mais la petite est tjs là, une idée ?
jojo Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Sakkhho, Je n'ai jamais réussi àmasquer la scène de l'interface. Mais j'ai fais la même chose sans scènes :
Berale64 Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 Je ne suis pas trop pour masquer les choses. Après on les oublie, on ne sais plus qu'elles existent, on en fait de nouvelles ou aussi on cherche la raison de nos problèmes. Je préfère créer des pièces fictives dans lesquelles je mets ce genre de scène. 1
Messages recommandés