Aller au contenu
flacon030

Execution Scéne A Un Moment Précis

Recommended Posts

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

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as certainement défini la température ext comme trigger.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est bon je pense avoir compris.

Il faut décocher "le dispositif déclencheur" du capteur que l'on veut qui ne soit pas interroger en permanence.

 "258 value" qui est ma sonde de T° ne doit pas apparaitre

C'est bien cela?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, c'est ça.

On apprend plus en trouvant soi même qu'avec des réponses toutes faites :D

Partager ce message


Lien à poster
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 )

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

×