Alerte fenêtres ouvertes
Publié : 26 oct. 2022, 20:16
Bonjour à tous,
Je démarre dans les scripts Lua. et je cherche à me faire une alerte (device Générale on/off 2 fois de suite) lorsque la température extérieure est inférieure à 14°c et que certaines fenêtres sont ouvertes depuis 30 minutes. puis si toujours pas fermés, relancer l'alerte toutes les 30 minutes.
Je penses ne pas arriver à mémoriser l'heure d'ouverture de chaque fenêtre comme il faut.
Ce matin dès que j'ai ouvert la "fenêtre nous", j'ai eu l'alerte direct.
Voici ce que j'ai tenté de faire en récupérant des morceaux à gauche à droite:
En blocky, ça fonctionne parfaitement.
Merci pour votre aide
Je démarre dans les scripts Lua. et je cherche à me faire une alerte (device Générale on/off 2 fois de suite) lorsque la température extérieure est inférieure à 14°c et que certaines fenêtres sont ouvertes depuis 30 minutes. puis si toujours pas fermés, relancer l'alerte toutes les 30 minutes.
Je penses ne pas arriver à mémoriser l'heure d'ouverture de chaque fenêtre comme il faut.
Ce matin dès que j'ai ouvert la "fenêtre nous", j'ai eu l'alerte direct.
Voici ce que j'ai tenté de faire en récupérant des morceaux à gauche à droite:
Code : Tout sélectionner
-- Température extérieur <= 14°C
time = os.date("*t")
function timedifference(d)
s = otherdevices_lastupdate[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
function round(num, dec)
if num == 0 then
return 0
else
local mult = 10^(dec or 0)
return math.floor(num * mult + 0.5) / mult
end
end
local temps_ouv_fnous = timedifference('Fenêtre Nous')
local temps_ouv_fsdb = timedifference('Fenêtre Salle de bain')
local delais = 1800 --1800 secondes
local consigne = 14 --14°C
commandArray = {}
local repetn = round(temps_ouv_fnous/delais,0)
local delain = round((temps_ouv_fnous-((repetn-1)*delais)),0)
local repetsdb = round(temps_ouv_fsdb/delais,0)
local delaisdb = round((temps_ouv_fsdb-((repetsdb-1)*delais)),0)
--print("fnous : "..temps_ouv_fnous.." "..repetn.." "..delain)
--print("sdb : "..temps_ouv_fsdb.." "..repetsdb.." "..delaisdb)
if ((otherdevices['Fenêtre Nous']=='Open') and delain>=delais) or ((otherdevices['Fenêtre Salle de bain']=='Open') and delaisdb>=delais) then
if (devicechanged['Temp extérieur']) then
local tempex = round(devicechanged[string.format('%s_Temperature', 'Temp extérieur')],1)
if tempex <= consigne then
commandArray[1]={['Générale']='Off AFTER 1'}
commandArray[2]={['Générale']='On AFTER 2'}
commandArray[3]={['Générale']='Off AFTER 3'}
commandArray[4]={['Générale']='On AFTER 4'}
if (otherdevices['Fenêtre Nous']=='Open') then
print("durée totale d'ouverture fnous : "..temps_ouv_fnous)
print("nbr repetition nous: "..repetn)
print("délai nous : "..delain)
elseif (otherdevices['Fenêtre Salle de bain']=='Open') then
print("durée totale d'ouverture fsdb : "..temps_ouv_fsdb)
print("nbr repetition sdb: "..repetsdb)
print("délai sdb: "..delais)
else
print("Ferme les fenetres, ça caille dehors :"..tempex.."°C")
end
end
end
end
return commandArrayMerci pour votre aide