jjacques68 Posté(e) le 13 août 2016 Signaler Posté(e) le 13 août 2016 bonjour à tous, je bug devant un problème certainement tout bête, mais je bloque... J'ai réalisé un simulateur d'aube avec les lampes de chevet de mon lit. Un module FGD-211, un module virtuel qui me permet d'activer ou non le réveil et de choisir l'heure de celui-ci. Ces valeurs sont stockées dans des variables. Tout marche nickel sauf que je n'arrive pas à interrompre la séquence d'allumage (qui dure 15 min). Soit je dois attendre la fin, soit je dois allé sur la HC et arrêter manuellement la scène. Je souhaiterai pour l'arrêter, allumer complètement la lumière l'éteindre ! avec son interrupteur classique ! Qui réagit bien d'ailleurs car si je fait 2 actions sur l'interrupteur, la lampe s'allume à fond (1 pression l'éteint) Mais 9 secondes après (voir mon script) elle reprend le cycle d'allumage !!!! voici le code de ma scène (très court...) --[[ %% autostart %% properties %% events %% globals --]] local i,j function ReveilG() --si l'heure correspond et que la variable auto = oui if os.date("%H:%M") == fibaro:getGlobal("HeureReveilG") and fibaro:getGlobal("ReveilAutoG") == "oui" then i=1 fibaro:debug("début du réveil") --boucle de 1 à 100 correspondant à la valeur du module ET devrait s'interrompre si le module arrive à 99 ou plus while i < 100 and tonumber(fibaro:getValue(30, "value")) <= 99 do --envoie la valeur au module fibaro:call(30, "setValue", i) --incrémente la valeur i=i+1 --attend 9 seconde (qui me fera au total 9*100 soit 15 min) fibaro:sleep(9*1000) end fibaro:debug("Fin du réveil") end setTimeout(ReveilG, 60*1000) end ReveilG() Ma 2eme condition dans la boucle while devrait me faire sortir de la boucle ! nan ?! si vous avez des idées ??!!! Merci à vous !!!
jjacques68 Posté(e) le 14 août 2016 Auteur Signaler Posté(e) le 14 août 2016 Alors je me réponds à moi-même : j'ai changé la condition de la loop --boucle tant que la valeur du module est < 99 while tonumber(fibaro:getValue(30, "value")) < 99 do en fait, je test que la valeur du module. Et quand celui-ci est allumé à fond (suite à un double appui sur l'interrupteur) il passe à 99 et non 100 ! donc c'est normal qu'avant il ne sortait pas de ma boucle. j'ai ajouter un décalage de 15 min pour le début du cycle pour que l'ampoule soit allumé au maximum à l'heure sélectionnée dans le VD. if os.date("%H:%M", os.time()+15*60) == fibaro:getGlobal("HeureReveilG") and fibaro:getGlobal("ReveilAutoG") == "oui" then et je fait éteindre 2h après l'ampoule (pour pas qu'elle reste allumé si je suis pas là ) --extinction 2 heures après if os.date("%H:%M", os.time()-2*60*60)==fibaro:getGlobal("HeureReveilG") then fibaro:debug("extinction 2h après") fibaro:call(30, "turnOff") end et je prévois un petit réveil à pile au cas où !
Messages recommandés