Je viens soliciter votre aide pour un petit script.
Je fais une detection de presence avec trois capteur de mouvement:
-Si un passage devant un capteur, je verifie si il y a deja eu un passage il y a moins de 30 s
Sinon je boucle sur les autres capteurs pour verifier si il y a eu un passage il y a moins de 600 s sur au moins un autre.
Le problème c'est que ma boucle prend en compte les 3 capteurs et je cherche a exclure le premier testé:
Code : Tout sélectionner
local PIR={}
PIR['0']='Motion entree'
PIR['1']='Motion couloir'
PIR['2']='Motion salon'
--recuperer l'etat du device
local etat=devicechanged[next(devicechanged)]
--si un presence etait deja detecté alors j'attends 10min
if etat=='On' and (od['Detection presence']=='Off' or (od['Detection presence']=='On' and lastSeen('Detection presence')>600)) then
--si le motion était déjà a on il y a moins de 30s alors Detection de presence passe a ON
if lastSeen(next(devicechanged))<30 then
warn(script..' 1 Detection presence sur deuxieme etat en moins de 30s valide: '..etat..' '..lastSeen(next(devicechanged)), debug)
switchOn('Detection presence')
--sinon je vérifie qu'au moins un autre motion était à ON depuis 60 secondes
else
for deviceValue,deviceName in pairs(PIR) do
if lastSeen(deviceName)<600 then
switchOn('Detection presence')
warn(script..'1.2 Detection presence sur un autre device: '..deviceName..': '..deviceValue, debug)
break
end
end
end