Aller au contenu

Détection Avec Le Motion Sensor


Rem's

Messages recommandés

Bonjour à  tous,

 

Mon talent de programmeur en Lua n'étant plus à  refaire, je n'arrive évidemment pas à  mes fins. Je pense ne pas avoir de problème de matériel (mon oeil de sauron fonctionne semble t il).

Je vous expose mon objectif dans cette Sdb :

Déclencher un Wall plug (bandeau led IKEA), entre 21h et 7h30 (ou alors intensité inf à  45 lux), pendant une durée de 90 sec. Si cela redéclenche, la scène doit repartir au début (ou alors de nouveau 90 sec).

pour l'instant ca clignote, et c'est tout  :angry:

Lien vers le commentaire
Partager sur d’autres sites

Voici une idée de scène 


--[[
%% properties
100 value
%% globals
--]]


local wallplug = 50
local mss = 100
local mss_lux = 102

local nom_variable_global = "ETEINDRE"

-- si la luminosité est suffisante, on ne fait rien
if (tonumber(fibaro:getValue(mss_lux, "value")) > 45)  then fibaro:abort() end 

-- pour chaque déclenchement on met à  jour l'heure de l'extinction dans une variable globale
-- soit ( maintenant + 90 secondes )
if (tonumber(fibaro:getValue(mss, "value")) > 0) then
	fibaro:setGlobal(nom_variable_global, os.time()+90)
end

-- si cette scène tourne déjà  on stoppe
if (fibaro:countScenes() > 1) then 
	fibaro:abort() 
end 

-- On allume le bandeau
fibaro:call(wallplug, "turnOn")

-- On attends d'avoir atteint l'heure d'exctinction.
while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do
	fibaro:sleep(1000);
end

-- On éteint le bandeau
fibaro:call(wallplug, "turnOff")
Lien vers le commentaire
Partager sur d’autres sites

Super !!! Merci pour ton retour.

Il m'embête encore un peu :

(Error) 20:18:34: Line 33 : Attempt to compare nil with number  :( 

Cela correspond à  la ligne while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do, puisque j'ai rajouté 1 debug apres le "turn on" et "turn off".

 

Une idée ... ? merci pour ton aide

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Steven, de retour d'un p'tit WE, j'ai fait plusieurs tentatives mais je n'arrive pas à  un résultat normal. Il déclenche en micro coupure.

Il n'y aurait pas des réglages à  faire dans les paramètres du détecteur ?

PS : J'ai crée une variable Timerdate, j'ai laissé les "" dans ton script (en lieu et place de ETEINDRE).

 

Merci encore pour ton aide.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Steven, c'est super cool de ta part

--[[
%% properties
91 value
93 value
%% globals
--]]
 
 
local wallplug = 112
local mss = 91
local mss_lux = 93
 
local nom_variable_global = "Timerdate"
 
-- si la luminosité est suffisante, on ne fait rien
if (tonumber(fibaro:getValue(mss_lux, "value")) > 55)  then fibaro:abort() end 
 
-- pour chaque déclenchement on met à  jour l'heure de l'extinction dans une variable globale
-- soit ( maintenant + 90 secondes )
if (tonumber(fibaro:getValue(mss, "value")) > 0) then
	fibaro:setGlobal(nom_variable_global, os.time()+90)
end
 
-- si cette scène tourne déjà  on stoppe
if (fibaro:countScenes() > 1) then 
	fibaro:abort() 
end 
 
-- On allume le bandeau
fibaro:call(wallplug, "turnOn")
fibaro:debug("Allumage led")
 
-- On attends d'avoir atteint l'heure d'exctinction.
while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do
	fibaro:sleep(1000);
end
 
-- On éteint le bandeau
fibaro:call(wallplug, "turnOff")
fibaro:debug("Extinction led")

Sinon, a défaut d'intensité en lux, la condition entre 20h et 8h du mat.

 

Encore merci.

Lien vers le commentaire
Partager sur d’autres sites

Ok, j'ai installé ton code à  la maison, j'ai modifié les ID par contre, il va falloir attendre ce soir que je puisse être sur place pour tester.

 

Juste un petit commentaire, ta ligne numéro 5 : "93 value" est à  supprimer. Si tu la laisse cette scène va s’exécuter chaque fois qu'il y aura un changement de luminosité ce qui va poser problème. Ce que tu veux est que cette scène ne se lance que lorsque qu'il y a détection de mouvement, rien de plus.

 

je te tiens au courant ce soir.

Lien vers le commentaire
Partager sur d’autres sites

Voilà... testé et approuvé :)

--[[
%% properties
91 value
%% globals
--]]

local wallplug = 112
local mss = 91
local mss_lux = 93
 
local nom_variable_global = "Timerdate"

--local heure = string.format(os.date("%H"), "%2d")..string.format(os.date("%M"), "%2d")
--local heureValable = heure >= "2100" or heure < "0730"

local faibleLumiere = (tonumber(fibaro:getValue(mss_lux, "value")) < 55)
local enAlerte = (tonumber(fibaro:getValue(mss, "value")) > 0) 

-- A chaque fois que le détecteur sera en alerte et que la luminosité
-- sera faible, on va modifier la variable globale
if enAlerte and faibleLumiere then
  	local extinction = os.time() + 90
	fibaro:setGlobal(nom_variable_global, extinction)
  	fibaro:debug("Extinction prévu à" ..os.date("%X", extinction))
else
    fibaro:abort() 
end 

-- Si plus d'une scène tourne en même temps, on arrête celle-ci
if (fibaro:countScenes() > 1) then
  fibaro:abort()
end

-- On allume le bandeau
fibaro:call(wallplug, "turnOn")
fibaro:debug("Allumage à" .. os.date("%X"))
 
-- On attends d'avoir atteint l'heure d'exctinction.
while (os.time() < tonumber(fibaro:getGlobalValue(nom_variable_global))) do
	fibaro:sleep(1000);
end
 
-- On éteint le bandeau
fibaro:call(wallplug, "turnOff")
fibaro:debug("Extinction à" .. os.date("%X"))
Lien vers le commentaire
Partager sur d’autres sites

Oh P ... !!, t'es mon idole !

Je crois que ca marche impec, j'ai essayé de changer les lux et la plage horaire, ca semble bon (tu t'en doutais, hein !!!).

Dans les trucs que je n'ai pas compris, j'ai compris que les lignes 14 et 15 étaient en gris : Je croyais que ce n'était que des explications, commentaires, et non pas des lignes de programmation. Hors là , c'est la plage horaire ... tu pourrais m'expliquer ?

 

Je te tiens au courant ce soir, je remets les paramètres initiaux.

Encore merci.

 

PS : Je vais essayer de faire de même avec une ouverture de porte et un wall plug, si tu veux bien, tu pourrais me corriger ? 

Lien vers le commentaire
Partager sur d’autres sites

On avais le choix entre luminosité ou plage horaire, je me suis dis que la luminosité était plus appropriée mais j'ai quand même fait le code pour la plage horaire.

 

Si tu veux l'utiliser, il faut décommenter les lignes 14 et 15, puis à  la place de 

if enAlerte and faibleLumiere then

mettre 

if enAlerte and heureValable then

Voilà .

 

Pour ton prochain script, aucun soucis.

Lien vers le commentaire
Partager sur d’autres sites

Salut Bouliboune,

Tu vas dans panneaux, puis panneau variables, la tu as 1premier tableau avec en bas un bouton ajouter. Tu click, et tu renseigne , nom de la variable par Timerdate (ou autre chose plus parlante pour to, le truc c'est de bien respecter les changements et majuscule), puis le bouton sauver.

Lien vers le commentaire
Partager sur d’autres sites

Pour moi ça marche super bien. En gros a chaque fois que je bouge sous le détecteur, la scène recommence àzéro et repart pour 90 sec. La lumière reste donc toujours allumé en ma présence et s éteindre 90 secondes après mon dernier mouvement/passage.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...