flacon030 Posté(e) le 28 octobre 2016 Signaler Posté(e) le 28 octobre 2016 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 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
flacon030 Posté(e) le 1 novembre 2016 Auteur Signaler Posté(e) le 1 novembre 2016 Personne pour me donner une direction a suivre? Merci
Berale64 Posté(e) le 1 novembre 2016 Signaler Posté(e) le 1 novembre 2016 Tu as certainement défini la température ext comme trigger.
flacon030 Posté(e) le 1 novembre 2016 Auteur Signaler Posté(e) le 1 novembre 2016 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
flacon030 Posté(e) le 1 novembre 2016 Auteur Signaler Posté(e) le 1 novembre 2016 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?
Berale64 Posté(e) le 1 novembre 2016 Signaler Posté(e) le 1 novembre 2016 Oui, c'est ça. On apprend plus en trouvant soi même qu'avec des réponses toutes faites
Steven Posté(e) le 1 novembre 2016 Signaler Posté(e) le 1 novembre 2016 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 )
flacon030 Posté(e) le 1 novembre 2016 Auteur Signaler Posté(e) le 1 novembre 2016 Merci pour ces précisions
jojo Posté(e) le 15 novembre 2016 Signaler Posté(e) le 15 novembre 2016 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
Messages recommandés