Aller au contenu
flamalex

Allumage Si Detection De Mouv/extinction Si Abs Mouv

Recommended Posts

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites


--[[

%% 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)  

Partager ce message


Lien à poster
Partager sur d’autres sites

à  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!!!!" :)))  :60:

 

le sujet est presque résolu, qu'en pensez vous?

il me reste à  tester ce soir et voir cette histoire de dimmer

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé pepite, mais ce script démarre avec un trigger, donc pas besoin de autostart et pas possible de faire un VD. :(

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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! :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Berale, bonne idee d'utiliser le numscene comme ceci, et j'aime bien la verif de la fourchette de temps ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça ne marche qu'entre 19h et 21h :-)

6s c'est un peu short. Mets 30s.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

:) 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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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-15
Le temps est calculé à  partir de la formule: temps = 0,5 x (valeur de 1)
Par défaut: 15 (8 secondes).

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

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) 

Partager ce message


Lien à poster
Partager sur d’autres sites

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

Partager ce message


Lien à poster
Partager sur d’autres sites

×