Aller au contenu

Main Loop


ruddy

Messages recommandés

  • 2 semaines après...

 J'ai une question sur la main loop d'un module virtuel. Cela me permet d'afficher la température d'une sonde sous le module dans l'interface HC2 (ainsi que mettre à  jour un label dans le MV.

local temp = fibaro:getValue(268, "value")
fibaro:log(fibaro:getValue(268, "value").." °C" )
fibaro:call(271, "setProperty", "ui.Label1.value",temp.. " °C")

J'aimerais ajouter le changement d'état de l'icône du module (grâce au retour d'un capteur) avec par exemple:

local temp = fibaro:getValue(267, "value")
if (tonumber(fibaro:getValue(267, "value")) > 0 ) then
fibaro:call(271,"setProperty","currentIcon",1113)
else
fibaro:call(271,"setProperty","currentIcon",1114)

 Mais en collant ces lignes à  la suite de celles concernant la température, je n'ai plus cette température qui s'affiche sous le module dans l'interface HC2 alors qu'elle est bien actualisée à  l'intérieur du MV dans le label, un problème de variable locale?

 

 

Lien vers le commentaire
Partager sur d’autres sites

@Did,

 

Ici par exemple

local temp = fibaro:getValue(268, "value")
fibaro:log(fibaro:getValue(268, "value").." °C" )

Tu devrais utiliser la variable temp et ne pas utiliser plusieurs fois de suite le getValue sur la même ressource.

local temp = fibaro:getValue(268, "value")
fibaro:log(temp.." °C" )
Lien vers le commentaire
Partager sur d’autres sites

 J'ai ajouté dans la main loop d'un module virtuel pour le congélateur pour le remplacement de l'icône en fonction d'un seuil de température (-10°C).

Température (sonde DS18B20) et consommation (wallplug always on) s'affichent bien dans l'interface HC2.

local id_module_virtuel = fibaro:getSelfId()
local allumer = tonumber(fibaro:getValue(246, "value")) == 0

local conso = fibaro:getValue(246, "valueSensor")
fibaro:call(id_module_virtuel, "setProperty", "ui.Label1.value",conso.. " W")
local temp = fibaro:getValue(269, "value")
fibaro:call(id_module_virtuel, "setProperty", "ui.Label2.value",temp.. " °C")
fibaro:log(temp.." °C - "..conso.." W" )

if (tonumber(fibaro:getValue(269, "value")) > -10 ) then
fibaro:call(249,"setProperty","currentIcon",1111)
else
fibaro:call(249,"setProperty","currentIcon",1110)
  end

246 est le wallplug.

269 est ma sonde de température.

249 est le module virtuel.

 Tout fonctionne bien mais j'ai aussi une ligne de condition dans GEA qui me remplace l'icône du module virtuel quand la conso du wallplug est inférieure à  40W pendant plus d'une heure. Je pense aussi en ajouter une seconde avec le seuil de température de -10°C par la suite.

GEA.add({"Sensor-", 246, 40}, 60*60, "", {{"VirtualDevice", 90, 5},{"CurrentIcon", 249, 1111}}) -- Surveillance de la conso congélateur

 Actuellement, l'état de l'icône ne change pas avec la commande GEA "CurrentIcon" (compatibilité GEA v5 avec v3.590 je crois), mais quand ce sera opérationnel, si ma température est en dessous de -10°, l'icône active ne va pas rester affichée. Comment feriez-vous pour qu'elle le reste le temps du défaut et qu'elle laisse la place à  l'icône inactive quand tout est rentré dans l'ordre?

 Ajouter dans la main loop les deux conditions: Temp -10° et conso -40W pendant plus d'une heure (pas possible je crois, exclusif GEA) ou peut-être simplement un bouton "Acquittement" vide dans le MV avec l'icône inactive?

 Quelle solution serait la meilleure?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...