Aller au contenu
Berale64

Température Min / Max

Recommended Posts

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

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

post-1115-0-69895900-1422005669_thumb.jpg

 

Temp_minmax.vfib

 

PS: Cet outil est vraiment très pratique sur smartphone.

  • Upvote 6

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent, je crois que je vais le mettre rapidement celui là!

Partager ce message


Lien à poster
Partager sur d’autres sites

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) ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@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 !!!!

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :

  1. créer une variable globale par thermomètre
  2. 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 

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo,

 

Pour reformater les dates (en 01/12/2015 22:59) tu peux essayer ceci

os.date("%x %H:%M")

;)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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. :huh:

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :

Partager ce message


Lien à poster
Partager sur d’autres sites

T'es encore en 2014. va falloir penser àmettre àjour ta box !!! :93:

Partager ce message


Lien à poster
Partager sur d’autres sites

la version 2014 de la box fonctionne bien mieux que la version 2015 !

Je suis Belge, mais pas fou ! :13:

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

casse pas trois pattes a un canard ,mais je trouve que c'est un très bonne idée 

:60:

 

merci pour le partage

Partager ce message


Lien à poster
Partager sur d’autres sites

Bien joué, je prends le vfib. Il me sera utile pour l extérieur, le le salon. Merci Berale24

Partager ce message


Lien à poster
Partager sur d’autres sites

 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!!! :74:

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de découvrir quelque chose de super :

Il est possible d'afficher un label sur le premier écran  :D (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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×