Aller au contenu

Execution Scéne A Un Moment Précis


flacon030

Messages recommandés

Bonjour a tous

 

Je recherche comment faire une scène a un moment précis.

Je m'explique:

Je veut que ma clim démarre a 17H30 mais seulement si la T° extérieur est inférieur a 17°C et que mes fenêtres soient fermés

J'avais fait cela

post-831-0-97186000-1477636587_thumb.png

Le problème c'est qu'a chaque fois que la T° baise de 0,1°C le scripte envoie l'ordre a la clim de se mettre a 22°C

Or je voudrais que cela ne se fasse qu'a un moment précis

 

 

Lien vers le commentaire
Partager sur d’autres sites

et comment modifier ce paramétré?

Merci

 

en code LUA cela me donne ce code

--[[
%% properties
33 value
32 value
258 value
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(33, "value")) == 0  and  tonumber(fibaro:getValue(32, "value")) == 0  and  tonumber(fibaro:getValue(258, "value")) <= 18  and  ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "16:45")  or  ((currentDate.wday == 1 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "09:00") )
)
then
	fibaro:call(201, "setThermostatSetpoint", "1", "22");
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(33, "value")) == 0  and  tonumber(fibaro:getValue(32, "value")) == 0  and  tonumber(fibaro:getValue(258, "value")) <= 18  and  (currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6)  or  (currentDate.wday == 1 or currentDate.wday == 7) )
or
startSource["type"] == "other"
)
then
	fibaro:call(201, "setThermostatSetpoint", "1", "22");
end

end
Lien vers le commentaire
Partager sur d’autres sites

Je vois aussi un soucis au niveau des parenthèses.

 

Je m'explique. Lors d'un test de condition, les ET sont d'abord analysés puis les OU.

 

Donc si on regarde ton code, on lit ceci :

 

Devices = Safe ET Netatmo <= 18 ET lundi-vendredi à  16h30 

 

OU

 

samedi-dimanche à  9h00

 

 

 

Donc samedi-dimanche à  9h00 ta température va être mise à  22° peux importe la température de ton netatmo et l'état Safe ou non.

 

Il faut mettre les parenthèse ainsi :

 

Device = Safe ET Temperature <= 18 ET ( lundi-vendredi à  16h30 OU samedi-dimanche à  9h00 )

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

je confirme la réponse de Steven.

Les et sont exécutés en priorités sur les ou.

C'est comme en math, on fait d'abord les * et les / puis seulement les + et les -

 

Donc si tu ne sais pas gérer les parenthèses, tu fais tes 3 premières conditions (en terminant par exemple par la condition de temps, puis OR et làtu répète les 2 premières (avec un AND) et tu rajoute l'autre contion de temps

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...