Lorencelot Posté(e) le 18 avril 2020 Signaler Partager Posté(e) le 18 avril 2020 Bonjour, je voudrais effectuer une action si ma fenêtre reste ouverte plus de 10 secondes. Je maîtrise bien le script pour effectuer l’action immédiatement quand la fenêtre s'ouvre, mais pas au bout de 10 secondes :-( Auriez-vous un script pour m’aider? Bien cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
J3R3M Posté(e) le 18 avril 2020 Signaler Partager Posté(e) le 18 avril 2020 (modifié) Bonjour, La première chose est de commencer ton script par le trigger de celui-ci : le module qui s'activera lorsque la fenêtre s'ouvrira. --[[ %% properties 10 value --]] Ce module doit avoir une valeur "contact ouvert" (fenêtre ouverte) et une valeur "contact fermé" (fenêtre fermée). Il faut donc ensuite vérifier l'état de ce contact, puisque la vérification n'est pas nécessaire si la porte vient d'être fermée. if fibaro:getValue(10, "value") == "contact ouvert" then fibaro:abort(); end La suite du code vérifiera toutes les x secondes si la fenêtre est encore ouverte. Si elle est ouverte depuis plus de x secondes -> action. Pour cela, il faut tu te renseignes sur la fonction setTimeout() qui te permettra de temporiser une partie de ton script. Ta scène pourrait ressembler à cela (non testée et à ajuster avec les bonnes valeurs/bons ids) : --[[ %% properties 10 value --]] local duree = 10; -- Actions effectuées après x secondes d'ouverture local intervalle = 1; -- Vérification toutes les x secondes local HeureOuverture = os.time(); local function actions() -- Liste actions à effectuer si toujours ouverte après valeur de la variable duree end local function verif() if fibaro:getValue(10, "value") == "contact fermé" or fibaro:countScene() > 1 then fibaro:debug("Fenêtre fermée ou scène déjà active. Arrêt de cette instance."); fibaro:abort(); end local diff = tonumber(os.time() - HeureOuverture); if diff <= tonumber(duree) then` fibaro:debug("Fenêtre ouverte depuis "..diff.." secondes"); setTimeout(verif,intervalle*1000) else actions(); fibaro:debug("Actions effectuées"); end end verif(); Modifié le 20 avril 2020 par J3R3M Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lorencelot Posté(e) le 18 avril 2020 Auteur Signaler Partager Posté(e) le 18 avril 2020 Merci beaucoup J3R3M, je vais tester tout ça ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés