Aller au contenu

Aide Lua : Détection Automatique Éclairage


Eliah

Messages recommandés

Bonjour, j'ai tenter d'utiliser le script de yannick pour la détection de lumière mais je rencontre un problème.. le script fonctionne bien tant que l'on bouge durant la phase ou le détecteur est en alerte. Mais si je bouge une fois qu'il s'est remis en position normale et avant la fin des 60 secondes, le script bug et la lumière reste allumé indéfiniment...

 

en gros si on fait les actions suivante :

 

- 0 sec : je bouge, la lumière s'allume, le détecteur est en alerte pour 30 sec

- 30 sec : le détecteur passe en mode normal

- 35 sec : je bouge, le détecteur passe en mode alerte

Là , la lumière reste allumé à  l'infini.

 

Par contre si je rebouge après 60 sec, la lumière s'éteint bien au bout de 60 nouvelles secondes.

 

bref si je fais :

 

0:00 : lumière s'allume

0:55 : je bouge

1:56 : je rebouge

2:56 : la lumière s'éteint

 

Mais si je sors entre 0:55 et 1:55 la lumière restera allumé indéfiniment..

 

Une idée du script à  modifié ?


--[[
%% properties
92 value
94 value
%% globals
--]]
local id_lampe = 31
local id_mouv_couloir = 92
local id_lux_couloir = 94
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(92, "value");
local HeureActuelle = os.date("*t");
 
 
-- si il y a plus d'une instance en route alors on arrête
 
if (fibaro:countScenes() > 1) then fibaro:abort() end;
 
-- ça c'est pour la forme 
fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min'])
fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")
 
-- entre 18h et 7h du matin s'il y a un mouvement et que les lux < à  10 alors on allume tant qu'il y a du mouvement
-- sinon on éteint après 1 minute de calme
 
if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7) 
and
 ( tonumber(fibaro:getValue(id_mouv_couloir, "value")) > 0 )
and
 ( tonumber(fibaro:getValue(id_lux_couloir, "value")) <= 10 )
)
then
	fibaro:call(id_lampe, "turnOn");
    fibaro:sleep(60*1000);
  end
 
if (( tonumber(fibaro:getValue(id_mouv_couloir, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60)
  then
	delayedCheck0 = true;
    end
if 
 ( delayedCheck0 == true )
    then
    fibaro:call(id_lampe, "turnOff")
end

Merci d'avance !

Lien vers le commentaire
Partager sur d’autres sites

Salut Eliah

 

Je t'avoue que j'ai le même souci en fait, j'ai essayé de rajouter un test en fin de script pour vérifier au bout de 10 min si les lumières sont allumées et dans ce cas les éteindre mais parfois, je ne sais pas pourquoi, cela reste allumé tout le temps. jusqu'au moment où je remets en alerte le capteur alors cela s'éteint et la boucle se remets en fonctionnement. je comprends pas non plus. 

 

il doit y a voir une subtilité quelque part. 

 

Je chercher encore, si je trouve je te dirais

Lien vers le commentaire
Partager sur d’autres sites

Salut, 

 

les commentaire tu les a mis juste pour la capture d'écran ou ils y sont en temps normal.

 

car il faut exclure des " ' " apostrophes.

 

C'est peut etre pas la solution mais ca fera un peu plus propre :-)

 

 

bon courage pour la résolution de ton soucis.

Lien vers le commentaire
Partager sur d’autres sites

Avec le script GEA, j'ai mis un timer sur toutes les lumières (ma femme a tendance à  tout laisser allumer et ne jamais éteindre), certaines avec un capteur de mouvement qui redémarre le timer en cas de mouvement (ou présence du coups), d'autres sans.

 

Que ce soit avec ou sans timer, si la lumière s'éteint et que je le rallume dans les 30s, celle-ci reste allumée indéfiniment. Mais si j'attends un peu avant de la rallumer, j'ai bien mon timer qui fonctionne.

Je pense donc que la subtilité se situe au niveau de la lumière et non pas au niveau du capteur.

 

A contrario, j'ai des capteurs qui allument certaines lumières en cas de mouvement et faible luminosité. Si la lumière s'éteint par le timer et que je bouge de suite (genre moins de 10 secondes), la lumière ne se rallume pas. Un peu comme si on ne pouvait pas envoyer 2 ordres très rapprochés au FGS211 (ou FGS221)...

Bizarre...

Lien vers le commentaire
Partager sur d’autres sites

Je crois que vous avez tous resumer la situation de cet oeil de lynx à  moitié borgne ;

 

J'ai exactement les meme soucis, après plusieurs test, sur l'oeil, sur le module, avec des variables et hier soir en sortant dans le jardin, rien .pas d'allumage auto.

 

(ou réduire le délai de l'oeil puisque qui l'es dis, : que pendant 5 à  10 sec l'oeil ne détectera pas de mouvement après ca remise de alerte en normal ou j'ai meme eu le cas, ou l'allumage de l'éclairage fait que le Lux me bascule en Mode Jour, puisque supérieur à  200 Lux quand lumière allumer .) hein hein obliger de jouer avec de Lux, un avant et arrière en espérant que les deux ne s'allume pas en meme temps, ou tempo mais j'aime bien laisser l'éclairage jardin 20 min open,,,,

Alors j'ai creé un module et variable pour un mode Forcer,,,,ON alors manuel sans detection de l'oeil.

Lien vers le commentaire
Partager sur d’autres sites


--[[
%% properties
92 value
%% globals
--]]
local luminosite = tonumber(fibaro:getValue(94, "value"))
local mouvement = tonumber(fibaro:getValue(92, "value"))
local now = tonumber((os.date("%H")))
local seuilluminosite = 10
local heuredebut = 18
local heurefin = 7


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(31, "turnOn")
    fibaro:abort();
end
 -- ici pour les passages suivants devant le fgms
 -- après 60sec sans mouvement on éteint
setTimeout(function()
 local delayedCheck0 = false;
 local tempDeviceState0, deviceLastModification0 = fibaro:get(92, "value")


 fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0)


 if (mouvement == 0 and (os.time() - deviceLastModification0) >= 60)
 then delayedCheck0 = true;
 end
 if ( delayedCheck0 == true )
 then fibaro:call(31, "turnOff")
 end
 end,60000)
 
 

ci dessus, adapté à  ton scénario

à  tester

il y a la fonction "setimeout"

voici mes parametres FGMS

 

1 -> 8

2-> 6

3-> 2 impulsions

4-> 12 sec

6-> 4 sec

8-> actif

9->1 Lux

12-> par defaut

14-> 255

16-> 0

20-> 15

 

ce scénario fonctionnera dans ton cas, car tu es sur 1 minutes

pour mon cas c'est pas encore ça (9sec), car le fgms tourne en boucle, au point d’arrêter l’éclairage même lorsque le MOUV=1 jusqu’à  ce que la boucle s’arrête (le MOUV passe à  0) puis la scène repart normalement jusqu’à  une nouvelle anomalie.

ce qui n'est pas normal, j'attends toujours un coup de main la dessus, car mon support n'est toujours pas résolu à  cause de cela.

voila, j’espère que ça t'aidera, tout comme la communauté la fait et la fait encore pour moi.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

@Lazer, merci pour l'info, je testerais ça. Il est vrai que ce n'est pas super gênant, la probabilité pour qu'on rallume une lumière moins de 30s après l'avoir éteinte est minime, mais c'est vrai que c'est déjàarrivé.

J'ai aussi remarqué que de temps en temps, je dois redémarrer la scène GEA, car il ne semble plus exécuter aucun scénario...déjàrencontré ce cas ?

Lien vers le commentaire
Partager sur d’autres sites

petite question sue la scene,,,

 

si tu as deux 2 Mouve détecteur ,?  

 

et si en plus , il y a une variable a rajouter , a savoir mode "détecteur Auto " ou " détecteur Off" pour les été en extérieur sans éclairage ?

 

 

J'ai meme une scene, si alarme ON et Mouv jardin, Notif phone lol

Lien vers le commentaire
Partager sur d’autres sites

Bon et bien chez moi ça ne marche pas du tout aucune détection et aucun allumage. je n'ai pas vérifier les paramètres de mon FGMS mais je doute que cela vienne de là  !

 

il faut que je reteste mais je ne comprends pas.

 

Si tu peux m'aider Flamalex !

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

au moment de tes tests

vérifies:

- les horaires ( de 19 à  7h)

- l'ID de tes modules

- la luminosité "ici à  10LUX"  si tu fais tests >10 Lux, il se passera rien

et enfin, regardes mes reglages de FGMS pour une config à  9sec

Lien vers le commentaire
Partager sur d’autres sites

Salut Flamalex,

 

Toutes les conditions lors de mes tests sont réunies, j'ai modifié les réglages de mon FGMS avec tes paramètres, mais il ne se passe réellement rien du tout.. 

 

Je vais essayer de m'accrocher au post de ez3kiel ici http://www.domotique-fibaro.fr/index.php/topic/6151-smart-lights-gestion-auto-de-votre-eclairage/?p=93253

 

cela résoudra peut-être toutes mes problématiques d'allumages de lampes. 

 

Pour l'instant, je reste avec ma scène qui fonctionnote pas trop trop ma à  part quelque fois où ça merdouille.

 

Mais merci pour le coup de main

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

en effet le post de EZ3KIEL est super

je testerai prochainement

de rien, pour le coup de main, je suis nouveau, et il y a des supers gars qui m'ont aidé

je n'ai fait que te communiquer leurs codes qui pour moi fonctionnent,

j'ai donc peut être oublié un paramètre.

en retour, si tu trouves la solution, tiens nous informé

ca peut servir

merci àtoi

Lien vers le commentaire
Partager sur d’autres sites

Salut flamalex,

 

j'ai compris pourquoi ça marchait pas !!!

local heuredebut = 18
local heurefin = 7
 
 
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();

inversion des heures de début et de fin !!!

 

Le script ne fonctionnait qu'en mon absence et pas au moment voulu... donc je vais tester ce soir

local heuredebut = 18
local heurefin = 7
 
 
fibaro:debug("Il est "..now)
 -- test si on est dans la fourchette horaire sinon STOP
 --if (HeureActuelle > heuredebut or HeureActuelle < heurefin) 
if (now > heurefin and now < heuredebut)then
  fibaro:abort();
Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

au moment de tes tests

vérifies:

- les horaires ( de 19 à  7h)

- l'ID de tes modules

- la luminosité "ici à  10LUX"  si tu fais tests >10 Lux, il se passera rien

et enfin, regardes mes reglages de FGMS pour une config à  9sec

 

Salut Yannick,

c'est pour cela que je t'avais précisé "les horaires"

 

alors maintenant, est ce que ca fonctionne?

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

salut

 

Flamalex et les autres j'ai un souci et je ne comprends pas. Je suis passé en V4.058Beta et depuis ma scène ne  fonctionne plus. J'ai bien réglé les instances à  10 max, j'ai rajouter une condition dans le script qui dit que quand le nombre de scènes actives arrive à  5 on remets à  0 mais rien n'y fait. Les lumières se déclenchent bien au mouvement mais ne s'éteignent jamais... une idée ????

Merci

 

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

je suis tjr dans mon code Escalier mais en GEA.

mon code LUA, ci dessous, fonctionne encore

 

--[[
%% properties
90 value
%% globals
--]]

local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour)..":".. string.format("%02d",currentDate.min);
local luminosite = tonumber(fibaro:getValue(92, "value"))
local mouvement = tonumber(fibaro:getValue(90, "value"))
local seuilluminosite = 100 
fibaro:debug("Il est "..currentTime)
 -- test si on est dans la fourchette horaire sinon STOP
 if currentTime < "16:30" or currentTime > "20:40"
  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 9sec 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) >= 9) 
 then delayedCheck0 = true;
      else fibaro:call(88, "turnOn")
  end
       
 if ( delayedCheck0 == true ) 
 then fibaro:call(88, "turnOff") 
      end
 end,9000) 

il faudrait que je teste avec ta remise de compteur à  0

postes ton code stp

merci

Lien vers le commentaire
Partager sur d’autres sites

Voilàmon code

--[[
%% properties
92 value
94 value
%% globals
--]]
local luminosite = tonumber(fibaro:getValue(94, "value"))
local mouvement = tonumber(fibaro:getValue(92, "value"))
local now = tonumber((os.date("%H")))
local seuilluminosite = 10
local heuredebut = 16
local heurefin = 10
 
 
fibaro:debug("Il est "..now)
 -- test si on est dans la fourchette horaire sinon STOP
 --if (HeureActuelle > heuredebut or HeureActuelle < heurefin) 
if (now > heurefin and now < heuredebut) then
  fibaro:abort();
end
 
 
local scenenum = fibaro:countScenes();
fibaro:debug("Nombre de scènes : "..scenenum);
if scenenum >= 5 then Fibaro:abort();
 end 
 -- 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(29, "turnOn")
    fibaro:call(171, "turnOn")
    fibaro:abort();
end
 -- ici pour les passages suivants devant le fgms
 -- après 60sec sans mouvement on éteint
setTimeout(function()
 local delayedCheck0 = false;
 local tempDeviceState0, deviceLastModification0 = fibaro:get(92, "value")
 
 
 fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0)
 
 
 if (mouvement == 0 and (os.time() - deviceLastModification0) >= 60)
 then delayedCheck0 = true;
 end
 if ( delayedCheck0 == true )
 then fibaro:call(29, "turnOff")
      fibaro:call(171, "turnOff")
 end
 end,60000)
Lien vers le commentaire
Partager sur d’autres sites

Yannick,

 

essaie ça (mm si tu es en LUA, ca fonctionne aussi)

 

"maintenant il y a une limitation sur les scenes.

 

Ouvre la scène et dans l'onglet général tu auras le nombre maxi d'instances autorisées pour une scène: pour GEA mettre à  au moins 2"

 

je tenais à  remercier NIKKO, qui m'a communiqué cette info, permettant de palier à  un de mes problèmes 

 

cela te concerne peut etre aussi Yannick

 

je regarderai ton code demain

 

EDIT:

autant pour moi, lol

je viens de relire ton message

tu as deja essayé les instances 

bon ! je regarde ca

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...