MasterBT Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 Hello,Voila j'ai une scène qui gère l'allumage automatique de ma cuisine. Un motion sensor (n°150) pour le capteur de mouvement + luminositéLes éclairages: Cuisine n°16 et plan de travail n°17 sont branché sur un IPX donc piloté via des VD.L'allumage auto allume la cuisine mais l'arrête doit s'appliquer sur Cuisine + Plan de travail.C'est une scène que j'avais copier de notre ami en Dordogne. 1er mouvement si luminosité < xx on allumePuis temps qu'il y à du mouvement on reste alluméSi pas de mouvement pendant plus de xx seconde alors on stop tout. Cette scène à bien tournée pendant pas mal de temps et puis un jour, l'arrête auto ne marchait plus. Etant assez fatigué et la tête dans le cul en se moment en temps que nouveau papa, j'ai cherché rapidement la cause (Capteur, VD, reboot, etc..)Alors soit j'ai modifier la scène un jour où j'aurais pas du m'approcher du clavier soit...Bref ca n'a rien d'urgent, mais des fois au lieu de chercher pendant pas mal de temps, un regard neuf peut apporter une réponse rapide: --[[ %% properties 150 value %% globals --]] fibaro:debug("Start"); local val = fibaro:getValue(150, "value"); local lumino = fibaro:getValue(152, "value"); local scenenum = fibaro:countScenes(); fibaro:debug("Etat "..val); fibaro:debug("Luminosité "..lumino); fibaro:debug("scene n "..scenenum); -- premier déclanchement du détecteur -- on allume et stop la scène if (val == "1" and scenenum == 1 and tonumber(lumino) <= 55) then fibaro:debug("On allume") fibaro:call(16, "pressButton", "1") fibaro:abort(); end -- déclanchements suivants on attend XXs -- pour éteindre setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(150, "value"); fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0); if (( (tonumber(val) == 0) ) and (os.time() - deviceLastModification0) >= 26) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:debug("On stop") fibaro:call(16, "pressButton", "2") fibaro:call(17, "pressButton", "2"); end end, 20000) fibaro:debug("End");
jojo Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 et le debug fonctionne-t-il ? (pour savoir si c'est le VD ou la scène qui pose problème ) ?
jojo Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 as-tu comparé avec le script original ? Je ne comprends pas tout, mais je ne vois pas d'appel àla fonction setTimeout()
Berale64 Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 Salut, C'est le mec de la Dordogne sous un soleil de mois de mai Ce qui me choque dans ta scène est que tu mets 26 secondes en ligne 38 et que le settimeout s'arrête au bout de 20 secondes. Donc tu ne peux pas atteindre ton délai. @jojo: settimeout n'est pas une fonction mais une instruction qui englobe une fonction. On n'appelle donc pas settimeout.
MasterBT Posté(e) le 7 novembre 2015 Auteur Signaler Posté(e) le 7 novembre 2015 Salut Berale, Effectivement, j'étais à 16s, je sais qu'il faut pas toucher aux scènes la tête dans le #@çè, Avec 26s ca pouvait pas le faire. Merci, tu m'a fais gagné du temps . Et encore merci pour la scène au fait. J'ai plusieurs pièces en auto de cette façon 100% WAF Par contre pour le coup dans certaines pièces, je rentre et j'attends comme un con que la lumière s'allume.. Puis au bout d'une seconde, je me dis: Appuis sur l'inter sinon ca va pas le faire ^^
jojo Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 merci Berale24, Je me souviens maintenant que tu avais un sujet àce propos
Messages recommandés