Je suis en train d'élaborer un script pour détecter de la présence dans la maison.
le but est d'élaborer une boucle pour identifier la dernière mise à jour des détecteurs de présence.
en d'alimenter une var bolean en true / false et une autre avec la date et heure de la derniere apparition
voici le script :
Code : Tout sélectionner
--[[
Type: time
Name: Presence
Description: Ce script permet de savoir si il y a du monde a la maison par l'intermediaire
des détecteurs de mouvements ou activation de l'alarme
Usage: Une variable creation de deux variables:
presence (date et heure de la dernière detection de présence dans la maison)
absence (temps d'absence de la maison)
--]]
--------------------------------
------ Variables à éditer ------
--------------------------------
-- nom de zone
local zone = 'maison' -- nom de la zone pour affichage dans les logs et alerte mail
-- capteurs présence
local mv_presence_1 = 'Motion Salon' -- Nom du capteur de mouvement
local mv_presence_2 = 'Detecteur veranda'
local mv_presence_3 = 'Motion salle sport'
local nb_detecteur = 3 -- nombre de detecteur dans la maison
-- alarme
-- local =
local presence = uservariables["presence_maison"]
-- domoticz
local url = '192.168.1.84:8080' -- user:pass@ip:port de domoticz, pour la création des variables
function timedifference(d)
print (d)
local s = d
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
-- quelle date et heure ?
local heure = string.sub(os.date("%X"), 1, 5)
local date = os.date("%x")
-- on regarde depuis combien de temps on est absent
--local absence = string.sub(os.date("!%X", timedifference(presence)), 1, 5) - en heure
presence = false
for i = 1, nb_detecteur, 1 do
local tmp = 'mv_presence_'..tostring(i)
print (tmp)
local absence = string.sub(os.date("!%X", timedifference(otherdevices_lastupdate['mv_presence_'..tostring(i)], 1, 5)))
if absence < '00:10' then
presence = true
end
end
commandArray = {}
return commandArray
dans le log j'ai un
Code : Tout sélectionner
2016-02-22 15:06:00.373 Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_presence.lua:44: bad argument #1 to 'sub' (string expected, got nil) Je n'arrive pas à trouver la solution, une idée ?
merci d'avance;
à bientôt