Aller au contenu
Yannick

Allumage Lampe Sur Détection De Mouvement

Recommended Posts

Salut à  tous, je viens d'écrire un scénario et je voulais juste vous le soumettre.

 

Ce que je veux faire, c'est entre 18 h et 7h du matin, si la luminosité de ma pièce passe en dessous de 10 lux, j'allume la lampe qui reste allumer tant qu'il y a du mouvement dans la pièce et si après 1 minute de calme rien ne se passe, elle s'éteint.

 

Je vais l'essayer ce soir mais je voulais quand même votre avis. s'il vous plaît

 

Merci les gars !!!

 

 

  1.  
  2. --[[
  3. %% properties
  4. 92 value
  5. 94 value
  6. %% globals
  7. --]]
  8.  
  9. local delayedCheck0 = false;
  10. local tempDeviceState0, deviceLastModification0 = fibaro:get(92, "value");
  11. local HeureActuelle = os.date("*t");
  12.  
  13. if (fibaro:countScenes() > 1) then fibaro:abort() end;
  14.  
  15. fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min'])
  16. fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")
  17. if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7)
  18. and
  19. ( tonumber(fibaro:getValue(92, "value")) > 0 )
  20. and
  21. ( tonumber(fibaro:getValue(94, "value")) <= 10 )
  22. )
  23. then
  24.     fibaro:call(29, "turnOn");
  25. fibaro:sleep(60*1000);
  26. end
  27.  
  28. if (( tonumber(fibaro:getValue(92, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60)
  29. then
  30.     delayedCheck0 = true;
  31. end
  32. if
  33. ( delayedCheck0 == true )
  34. then
  35. fibaro:call(29, "turnOff")
  36. end

Partager ce message


Lien à poster
Partager sur d’autres sites

Comme ça c'est mieux


--[[
%% properties
92 value
94 value
%% globals
--]]
 
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(92, "value");
local HeureActuelle = os.date("*t");
 
if (fibaro:countScenes() > 1) then fibaro:abort() end;
 
fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min'])
fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")
if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7)
and
( tonumber(fibaro:getValue(92, "value")) > 0 )
and
( tonumber(fibaro:getValue(94, "value")) <= 10 )
)
then
    fibaro:call(29, "turnOn");
fibaro:sleep(60*1000);
end
 
if (( tonumber(fibaro:getValue(92, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60)
then
    delayedCheck0 = true;
end
if
( delayedCheck0 == true )
then
fibaro:call(29, "turnOff")
end

Partager ce message


Lien à poster
Partager sur d’autres sites

et pourquoi pas en GEA ? => 2 lignes

GEA.add ({id["détecteur_mvt"], {"Value-", id["lix"], 10}}, -1, "Allumer lumière", {{"Time", "18:00", "07:00"}, {"turnOn",id["Lampe"]}})
GEA.add (id["détecteur_mvt"], 1*60, "Eteindre lampe car pas mouvement depuis #duration#", {{"Inverse"}, {"turnOff", id["Lampe]}})

Partager ce message


Lien à poster
Partager sur d’autres sites

ah cher Jojo, Salut à  toi

 

Pas GEA parce que je ne m'y suis tout simplement pas mis et j'ai envie d'apprendre à  coder en LUA.

 

Qu'en pense tu ?

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

le meilleur verdict, est est-ce que ça fonctionne ou pas ?

Je t'avoue ne pas avoir essayer de comprendre toutes la logique que tu as mise en place (pas fait de rétro-engineering).

Maintenant de ce que j'ai lu, c'est propre et clair.

Peut-être une petite remarque pour encore plus de lisibilité.

assigne pour chaque device une variable locale au début, comme ça en plus si tu veux partager ton code ou que l'id d'un d"vice change, c'est plus simple

Partager ce message


Lien à poster
Partager sur d’autres sites

pas faux !! je vais faire ça ...

 

A priori ça fonctionne bien .. à  part 1 fois où la lampe est restée toute la nuit et je ne sais pas pourquoi.

 

Est ce que je dois mettre un fibaro:getSourceTrigger en début de code ? j'avoue ne pas bien comprendre l'utilité de cette commande.

Partager ce message


Lien à poster
Partager sur d’autres sites

non, le fibaro:getSourceTrigger est utile si tu veux connaitre l'origine du démarrage de la scène

Partager ce message


Lien à poster
Partager sur d’autres sites

meme avis que @jojo sur les id des devices

sinon code tres comprehensible.. :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

Enfin des gens qui veulent apprendre le lua c'est cool

@jojo arrête des les détourner vers GEA Grrrrr

Je sur mon téléphone donc pas simple àlire

Il faudrait ajouter un test pour qu'en cas de problème la lampe s'éteigne du style si allumé depuis une heure on refait un test de présence

Envoyé de mon SM-G900F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Putain de module !!

 

66% de batterie hier à  16h et d'un seul coup vers 18h... rideau !! module éteint. Je comprends rien j'ai dà» merder sur un paramètre parce que j'en ai un autre dans mons salon qui lui fonctionne toujours depuis plus de 6 mois sans soucis !!! et le pire c'est que le niveau de la batterie est à  ... 100 % !!!! plus qu'à  racheter une stock de pile à  10 balles la pile....

Sinon je viens de voir sur un autre sujet @mprinfo, tu demandais les paramètres du module pour que cela remonte les bonnes infos. moi j'ai fait ça

Partager ce message


Lien à poster
Partager sur d’autres sites

×