Aller au contenu

Settimeout


Berale64

Messages recommandés

Oui exactement.

 

Un exemple que j'ai utilisé ici http://www.domotique-fibaro.fr/index.php/topic/2226-thermostat-greenmomit-et-hc2/ afin d'attendre la vérification d'une condition sans bloquer l’exécution du script :)

--! async object
async={}
--! wait function
--@ param condition The condition
--@ param callback The callback function
function async:wait(condition, callback)
  --print('wait')
  assert(type(condition)=='function', 'wait(condition*) arg should be a function!')
  if (condition()) then
    if (callback and type(callback)=='function') then
      callback()
    end
    return
  else
    setTimeout(function()
        self:wait(condition, callback)
      end, 300)    
  end
end
 
function GreenMomit:getData()
  async:wait((function(...) return (self.isLogged==true) end), 
    function()
      self:onLogged()
      self:getUserThermostats()   
      self:update()
    end)
end
 
function GreenMomit:lunchConfig()  
  self:connectApi()
  async:wait((function(...) return (self.isConnected==true) end), 
    function()
      self:onConnected()
      self:loginApi()
      self:getData() 
    end)
end
  • Upvote 5
Lien vers le commentaire
Partager sur d’autres sites

alors la j'ai pas tout bien compris,

 

Le sleep met en pause avant de lire la suite du script et le settimeout met en pause sans empecher de lire la suite du script.

je ne comprends pas ce qui est mis en pause dans ce cas ?

Lien vers le commentaire
Partager sur d’autres sites

Voilà  en fait ce que je voulais faire.

 

Les Mamies c'est bien, mais ça se lève la nuit pour satisfaire un besoin bien naturel.

Seulement les Mamies ça ne veut pas déranger, alors ça n'allume pas la lumière.

Résultat, ça se casse la gueule dans les meubles et ça réveille toute la maison.

 

J'ai donc mis un détecteur FGMS001 dans le couloir. Dès que Mamie sort de sa chambre, une lampe du salon s'allume et donne assez de lumière pour rejoindre les toilettes. Tant que Mamies baguenaude entre sa chambre, les toilettes ou la salle de bain, la lumière reste allumée.

Après 2 mn ça s’éteint.

--[[
%% properties
52 value
52 armed
%% globals
--]]

-- c'est le jour alors stop

if (fibaro:getGlobalValue("Day_Night") == "DAY") then
  fibaro:abort();
end

fibaro:debug("Start");

local val = fibaro:getValue(52, "value");
local arm = fibaro:getValue(52, "armed");
local scenenum = fibaro:countScenes();

fibaro:debug("Etat "..val.."  "..arm);
fibaro:debug("scene n "..scenenum);

-- premier déclanchement du détecteur
-- on allume et stop

if (val == "1" and scenenum == 1) then
  fibaro:call(163, "turnOn");
  fibaro:abort();
end

-- déclanchements suivants on attend 120s
-- pour éteindre

setTimeout(function()
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(52, "value");


fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0);
    
if (( (tonumber(val) == 0 and tonumber(arm) == 0) ) and (os.time() - deviceLastModification0) >= 120) then
	delayedCheck0 = true;
end

if ( delayedCheck0 == true ) then
	fibaro:call(163, "turnOff");
end
end, 120000)

fibaro:debug("End");
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Tu as raison Nico, mais si j'installe GEA je n'apprends pas LUA.... CQFD !!! ;)

 

PS: Si Fibaro avait de la jujotte, ils achèteraient les droits de GEA, écriraient une interface graphique avec plein de zolis widgets, ça génèrerait les commandes GEA automatiquement et hop!!!ils auraient un outils extraordinaire.

Oui, heu !!! ils ont du boulot avec la V4....

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

Berale24 : Oui bien sûr pour l'apprentissage du lua, sorry :)

En fait je suis partisans de la simplification maximum, donc j'essaie d'avoir le minimum de chose qui tourne en même temps.

Lien vers le commentaire
Partager sur d’autres sites

@Nico: Moi aussi. la grande majorité de mes scènes est actionnée par des triggers. Tout ce qui dépend d'un timer est géré par le petit scheduler que j'ai publié quelque part sur le forum. Il ne reste que la filtration de la piscine et de la PaC qui méritent un traitement à  part.

 

Avec la HCL j'avais plein de scène, maintenant en LUA et en rationalisant c'est de désert ! :)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...