pepite Posté(e) le 15 octobre 2015 Signaler Posté(e) le 15 octobre 2015 Oui tu as bien modifie, nickel, suggestion, peut-etre fausse mais je le dis qd meme : tes lignes 10 et 38 font doublon tes debugs 25 et 42 veulent dire la meme chose hihihi Pour ton dimmer, tu as deja reussi a l'allumer avec du code lua ? Teste avec une scene block on ne sait jamais avec ton turnOn sur le dimmer ca s'allume tout de même ?
flamalex Posté(e) le 15 octobre 2015 Auteur Signaler Posté(e) le 15 octobre 2015 Oui tu as bien modifie, nickel, suggestion, peut-etre fausse mais je le dis qd meme : tes lignes 10 et 38 font doublon tes debugs 25 et 42 veulent dire la meme chose hihihi Pour ton dimmer, tu as deja reussi a l'allumer avec du code lua ? Teste avec une scene block on ne sait jamais avec ton turnOn sur le dimmer ca s'allume tout de même ? Merci, j'ai fait un mix et donc les copiers coller....... bref j'ai fait les modifs. pour le dimmer, oui avec turnOn ca fonctionne, en fait les 3 leds plafond escalier sont déja au mini quand j'appuie sur l'un des 3 BP de la cage d'escalier, est ce que ce ne serait pas cela qui ferait que si tu demandes au module de s'activer à 10%, lui ne peut pas suivre puisqu'il serait deja au mini je ne sais pas si tu me suis
flamalex Posté(e) le 15 octobre 2015 Auteur Signaler Posté(e) le 15 octobre 2015 --[[ %% properties 90 value 92 value %% globals --]] local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value"); local HeureActuelle = os.date("*t"); local mouvement = tonumber(fibaro:getValue(90, "value")); local luminosite = tonumber(fibaro:getValue(92, "value")); local seuilluminosite = 35; --luminosite local heuredebut = 14; --plage horaire local heurefin = 21; local timeout = 6; --duree d'attente sans mouvement fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min']) fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min") if ((HeureActuelle['hour']>= heuredebut and HeureActuelle['hour'] <= heurefin) -- si heure actu est située entre 19 et 21h and ( mouvement > 0 )----detection de mouv and ( luminosite <= seuilluminosite )) --luminosité <=2Lux then fibaro:call(88, "turnOn"); --allumage module eclairage à 10% end setTimeout(function() local delayedCheck0 = false; if (( mouvement == 0 ) and (os.time() - deviceLastModification0) >= timeout) then delayedCheck0 = true; ----si pas de mouv pdt 6 sec end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") --extinction lumiere end end,12000)
flamalex Posté(e) le 15 octobre 2015 Auteur Signaler Posté(e) le 15 octobre 2015 à ce stade, je tenais à te remercier Pepite pour ta patience et l'interet porté sur le sujet, Berale24 pour relever les détails qui tuent et le fait d'avoir "lancé la machine" avec une premiere piste j'ai beaucoup appris en 2 jours (plus qu'en 2 mois lol) j'ai ma femme qui sfout de moi "2 jours pour allumer 3LED dans la cage d'escalier, pffff!!!!!!, suffisait d'appuyer sur le Bouton!!!!" )) le sujet est presque résolu, qu'en pensez vous? il me reste à tester ce soir et voir cette histoire de dimmer
pepite Posté(e) le 15 octobre 2015 Signaler Posté(e) le 15 octobre 2015 Si je te suis, dans ce cas, mets une valeur superieure à 10 pour tester. avec un steValue ;-) Attention à tes citations de message, ne cite pas le message précedent, les admins et modos vont te retrouver ;-) Au fait, dans ton entete, rajoute un %%autostart : redemarrage de la scene en cas de reboot de la box ;-) Avec plaisir, le forum est la pour ca, merci à toi aussi, j'apprends en même temps que toi ;-) Pour le WAF, on passe tous par la ;-) Ton dernier code me semble pas mal, ca te laisse la possibilité de modifier les valeurs, c'est bien !! bonne habitude je pense Mon avis : j'aurais fait un Vd plutot qu'une scene pour avoir le retour visuel de l'eclairage depuis l'interface ou appli ;-) mais rien ne t'empeche de faire un VD couple à ta scene pour récupérer l'etat des dimmers ;-)
Berale64 Posté(e) le 15 octobre 2015 Signaler Posté(e) le 15 octobre 2015 Désolé pepite, mais ce script démarre avec un trigger, donc pas besoin de autostart et pas possible de faire un VD.
pepite Posté(e) le 15 octobre 2015 Signaler Posté(e) le 15 octobre 2015 ah oui t'as raison, j'avais zappe qu il y avait un trigger ;-) le boulet.. Pour le VD tu peux toujours récupérer l'etat du dimmer
flamalex Posté(e) le 15 octobre 2015 Auteur Signaler Posté(e) le 15 octobre 2015 ah oui t'as raison, j'avais zappe qu il y avait un trigger ;-) le boulet.. Pour le VD tu peux toujours récupérer l'etat du dimmer re, je suis en plein test, mais gros problème pendant la scène, donc lumière allumée, alors qu'il y a toujours mouvement dans la cage escalier, la lumiere s’éteint et se rallume. alors que normalement elle ne doit pas s’éteindre, puisque mouvement >1, le compteur de 6 secondes devrait recompter a chaque détection mouvement pendant la scene, n'est ce pas? de plus pendant cette même scène, avec mouvement dans l'escalier, la lumière s’éteint et s'allume avec des intervalles de temps irréguliers. effectivement, si le mouv passe à 0 et qu'il repasse à 1 avant les 6 sec (timeout) puis il repasse à 0, alors la lumière n'attend pas les 6 sec pour s’éteindre, elle s’éteint instantanément dés qu'il n'y a plus détection donc ca ne va pas. --[[ %% properties 90 value 92 value %% globals --]] local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value"); local HeureActuelle = os.date("*t"); local mouvement = tonumber(fibaro:getValue(90, "value")); local luminosite = tonumber(fibaro:getValue(92, "value")); local seuilluminosite = 10; --luminosite local heuredebut = 20; --plage horaire local heurefin = 21; local timeout = 6; --duree d'attente sans mouvement fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min']) fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min") if ((HeureActuelle['hour']>= heuredebut and HeureActuelle['hour'] <= heurefin) -- si heure actu est située entre 19 et 21h and ( mouvement > 0 )----detection de mouv and ( luminosite <= seuilluminosite )) --luminosité <=2Lux then fibaro:call(88, "turnOn"); --allumage module eclairage à 10% end setTimeout(function() local delayedCheck0 = false; if (( mouvement == 0 ) and (os.time() - deviceLastModification0) >= timeout) then delayedCheck0 = true; ----si pas de mouv pdt 6 sec end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") --extinction lumiere end end,6000)
pepite Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 Bonjour Flamaflex, Attention tu as encore cité dans ta réponse le message précédent. Essaie en augmentant ta variable timeout pour voir. Faudrait aller faire un tour sur les parametres de ton FGMS aussi, le blind, la réactivite, le nombre d 'impulsions.. Il va falloir chercher et diagnostiquer pas à pas. Courage
BenjyNet Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 Franchement, moi je me suis fait bien moins chier pour utiliser le détecteur. J'ai pas de scène aussi complexe, j'ai juste utilisé les réglages du FGMS.
Berale64 Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 Tu commences en affichant le panneau d’évènements. Tu passes devant le FGMS. Et tu regarde le temps écoulé entre "en alerte" et "normal". Pendant ce délai, pas de nouvel envoi d'info à la box. C'est à dire que ton délai d'attente de settimeout doit être supérieur à cette valeur par ailleurs modifiable dans les paramètres.
flamalex Posté(e) le 16 octobre 2015 Auteur Signaler Posté(e) le 16 octobre 2015 Bonjour, oui j'ai repris le message précédent pensant que tu serais averti de mon nouveau message. Berale24, le capteur est actif (état 1) pdt 3 sec, après les 3 sec le timer décompte 6 sec et s’éteint, seulement si pdt les 6 sec il y a mouvement le timer ne redémarre pas et donc dans ts les cas la lumière s’éteint après 6 sec alors qu'il y a présence dans l'escalier et donc Capteur Mouv à l’état 1, c'est pas normal. en utilisant les réglages du FGMS, ce n'est pas adapté exemple: dans les toilettes, j'ai la même chose mais pas de module dimmable, un simple module, la liaison est direct entre capteur et actionneur en effet, tant qu'il y a mouvement dans les toilettes (lol) l'horloge d'extinction se relance, donc ca c'est bien quand on n'a pas la luminosité (dimmer) a régler et la plage horaire. alors comment faire lorsque c'est dans un escalier et que je veux prendre en compte, le dimmer, la plage horaire et la luminosité de la cage d'escalier. sinon, pour mes réglages FGMS, paramètres: 1 -> 8 2-> 6 3-> 2 impulsions 4-> 12 sec 6-> 3 sec 8-> actif 9->1 Lux 12-> par defaut 14-> 255 16-> 0 20-> 15 en fait ce que je souhaite, c'est que la cage d'escalier reste allumée tant qu'il y a présence, et s’éteigne dés qu'il y a absence presque immédiatement et avec une intensité lumineuse très faible. donc je ne souhaite pas laisser allumer lumière pdt 2 minutes ou 2h en cas d'absence (dans l'escalier), pcq sinon ça réveille le petit!
Berale64 Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 Voilàce que je ferai. --[[ %% properties 90 value %% globals --]] local luminosite = tonumber(fibaro:getValue(92, "value")) local mouvement = tonumber(fibaro:getValue(90, "value")) local now = tonumber((os.date("%H"))) local heuredebut = 19 local heurefin = 21 local seuilluminosite = 1 fibaro:debug("Heure actuelle :" ..now) -- test si on est dans la fourchette horaire sinon STOP if (now < heuredebut or now > heurefin) then fibarot:abort(); end local scenenum = fibaro:countScenes(); -- test si première instance de la scène. on allume et stop if (scenenum == 1 and luminosite < seuilluminosite and mouvement == "1") then fibaro:call(88, "setvalue", "10") fibaro:abort(); end -- ici pour les passage suivants devant le fgms -- après 2mn sans mouvement on éteind setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value") fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0) if (mouvement == "0" and (os.time() - deviceLastModification0) >= 120) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") end end,120000) Attention: si ta scène démarre à20h59 elle doit se terminer à21h01 ce qui est supérieure à"heurefin". ta lampe ne s'éteind donc jamais. A toi de faire la modif si tu penses que c'est un problème.
pepite Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 @Berale, bonne idee d'utiliser le numscene comme ceci, et j'aime bien la verif de la fourchette de temps ;-)
flamalex Posté(e) le 16 octobre 2015 Auteur Signaler Posté(e) le 16 octobre 2015 je teste, rien ne se passe, je cherche pourquoi, je ne trouve pas, la lumiere ne s'allume plus pourriez vous m'expliquer le "numscene"? svp merci et que pensez vous de mes parametres de Module? --[[ %% properties 90 value %% globals --]] local luminosite = tonumber(fibaro:getValue(92, "value")) local mouvement = tonumber(fibaro:getValue(90, "value")) local now = tonumber((os.date("%H"))) local seuilluminosite = 35 local heuredebut = 17 local heurefin = 21 fibaro:debug("Il est "..now) -- test si on est dans la fourchette horaire sinon STOP if (now < heuredebut or now > heurefin)then fibaro:abort(); end local scenenum = fibaro:countScenes(); -- test si première instance de la scène. on allume et stop if (scenenum == 1 and luminosite < seuilluminosite and mouvement == "1") then fibaro:call(88, "turnOn") fibaro:abort(); end -- ici pour les passage suivants devant le fgms -- après 2mn sans mouvement on éteind setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value") fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0) if (mouvement == "0" and (os.time() - deviceLastModification0) >= 6) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") end end,6000)
Berale64 Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 Ça ne marche qu'entre 19h et 21h :-) 6s c'est un peu short. Mets 30s. 2
flamalex Posté(e) le 16 octobre 2015 Auteur Signaler Posté(e) le 16 octobre 2015 lol ok, en effet ca fonctionne en mettant 30s/15s et la 8 sec ca passe pouvez vous m'expliquer la ligne 34 et 41 concernant les 6sec ou 8sec ou 120sec et 120000...... prenons l'exemple avec 8 sec que faut il mettre en ligne 34 et 41? merci
Berale64 Posté(e) le 16 octobre 2015 Signaler Posté(e) le 16 octobre 2015 La scène démarre à chaque changement de l'état du FGMS. Quand on passe devant, l'état devient 1 puis après le délai défini dans les paramètres retombe à zero. (donc deux démarrage de la scène). Les 34 à 41 testent si l'état est zéro (plus personne n'est passé devant le fgms) depuis le délai défini en 34 et 41. Je ne sais pas ce que tu veux faire, mais un délai court risque de produire des allumages répétitifs ce qui est préjudiciable pour les ampoules.
flamalex Posté(e) le 16 octobre 2015 Auteur Signaler Posté(e) le 16 octobre 2015 en 34, je peux mettre une valeur différente de la 41?je cherche à ce que le délais d'extinction lorsque le fgms est à 0 (absence) soit très court, c'est pour ça que je souhaite 6 sec ou 7sec, le plus court possible serait mieux. j'ai toujours un problème, avec le scénario ci dessous, voici ce qui se produit: première détection de mouvement, la lumière s'allume et reste allumée tout le temps ou il y a mouvement, pour le moment c'est normal puis plus de mouvement elle s’éteint, puis de nouveau mouvement (le fgms passe à 1 ) et pourtant la lumière ne s'allume plus, tout le temps où le fgms reste à 1, ça peut durer 10 minutes voir même indéfiniment, en fait tout le temps ou il continue de détecter il faut le laisser repasser à l'état 0, pour qu'ensuite ça revienne normalement. une explication????? voici mes réglages du module paramètres: 1 -> 8 2-> 6 3-> 2 impulsions 4-> 12 sec 6-> 3 sec 8-> actif 9->1 Lux 12-> par defaut 14-> 255 16-> 0 20-> 15 --[[ %% properties 90 value %% globals --]] local luminosite = tonumber(fibaro:getValue(92, "value")) local mouvement = tonumber(fibaro:getValue(90, "value")) local now = tonumber((os.date("%H"))) local seuilluminosite = 5 local heuredebut = 17 local heurefin = 22 fibaro:debug("Il est "..now) -- test si on est dans la fourchette horaire sinon STOP --if (HeureActuelle < heuredebut or HeureActuelle > heurefin) if (now < heuredebut or now > heurefin)then fibaro:abort(); end local scenenum = fibaro:countScenes(); -- test si première instance de la scène. on allume et stop if (scenenum == 1 and luminosite < seuilluminosite and mouvement == 1) then fibaro:call(88, "turnOn") fibaro:abort(); end -- ici pour les passage suivants devant le fgms -- après 8sec sans mouvement on éteind setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value") fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0) if (mouvement == 0 and (os.time() - deviceLastModification0) >= 7) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") end end,7000)
Berale64 Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 Les paramètres Fibaro sont souvent impénétrables mais : Paramètre 2 Temps durant lequel le capteur PIR est "aveugle" au mouvement. Ce paramètre spécifie le temps minimum après lequel le capteur PIR est prêt à détecter le prochain mouvement. Plus ce temps est grand, plus la vie de la batterie est longue. La valeur peut être réduite si la détection rapide d'un mouvement par le capteur PIR est nécessaire. Le temps d'inertie doit être inférieur à la durée définie dans le paramètre 6.Plage de valeurs: 0-15Le temps est calculé à partir de la formule: temps = 0,5 x (valeur de 1)Par défaut: 15 (8 secondes).
flamalex Posté(e) le 17 octobre 2015 Auteur Signaler Posté(e) le 17 octobre 2015 je ne l'ai pas modifié dans ma citation plus haut, mais j'avais changé le paramètre 6 qui est donc à4 (et non 3) donc il est supérieur au paramètre 2 qui est en fait à3 sec ce qui ne règle toujours pas le probleme ai je bien fait?
flamalex Posté(e) le 20 octobre 2015 Auteur Signaler Posté(e) le 20 octobre 2015 bonjour, pourriez vous m'expliquer les dernières lignes du script, notamment le "end,8000" je renseigne 8 sec, mais pourquoi dois je mettre 8000? si je laisse 8 sec mais que je change 8000 en 6000 ou 120000, qu'est ce que cela fait? merci --[[ %% properties 90 value %% globals --]] local luminosite = tonumber(fibaro:getValue(92, "value")) local mouvement = tonumber(fibaro:getValue(90, "value")) local now = tonumber((os.date("%H"))) local seuilluminosite = 1 local heuredebut = 20 local heurefin = 21 fibaro:debug("Il est "..now) -- test si on est dans la fourchette horaire sinon STOP --if (HeureActuelle < heuredebut or HeureActuelle > heurefin) if (now < heuredebut or now > heurefin)then fibaro:abort(); end local scenenum = fibaro:countScenes(); -- test si première instance de la scène. on allume et stop if (scenenum >= 1 and luminosite < seuilluminosite and mouvement >= 1 ) then fibaro:call(88, "turnOn") fibaro:abort(); end -- ici pour les passages suivants devant le fgms -- après 8sec sans mouvement on éteint setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value") fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0) if (mouvement == 0 and (os.time() - deviceLastModification0) >= 8) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(88, "turnOff") end end,8000)
flamalex Posté(e) le 20 octobre 2015 Auteur Signaler Posté(e) le 20 octobre 2015 Les paramètres Fibaro sont souvent impénétrables mais : Bonjour Berale24, je ne l'ai pas modifié dans ma citation plus haut, mais j'avais changé le paramètre 6 qui est donc à 4 (et non 3) donc il est supérieur au paramètre 2 qui est en fait à 3 sec ce qui ne règle toujours pas le problème ai je bien fait? mon problème dans cette scène, au bout d'un certain temps, le MOUV est tjr à 1 et pourtant la lumière s'est éteinte il faut alors attendre un certain tps avant que le MOUV passe à 0 et que l'instance de la scène redémarre c'est comme si il y avait un problème de remise à 0 de la scène, ne manque t il pas quelque chose à ce niveau la?
pepite Posté(e) le 20 octobre 2015 Signaler Posté(e) le 20 octobre 2015 Salut @flamaflex : lis ca : http://forum.fibaro.com/index.php?/topic/18752-example-of-settimeout/ C'est la syntaxe de settimeout en ms pour ton 8000 ton 8 sec correspond à la verification de ta condition pour passer delaycheck à true
flamalex Posté(e) le 20 octobre 2015 Auteur Signaler Posté(e) le 20 octobre 2015 Salut Pépite, merci pour le lien, mais je ne comprends pas grand chose en résumé, si tu veux 8 sec tu n'es pas obligé de mettre 8000 que dois tu mettre dans mon cas et pourquoi? concernant mon probleme cité plus haut, ne faudrait il pas remettre la "scenenum " à 0 après un cycle ? merci alex
Messages recommandés