Installation :
1) Créer une variable utilisateur InterrupteursSansEtat et mettre les noms des interrupteurs séparés par un pipe "|".
exemple : Prise1|Prise2|Ma VMC|Prise4
Le script testera si le device existe (On ou Off) et créera la variable correspondante.
2) Créer un Script LUA de type TIME nommé RENFORCEMENT et changer l'adresse du serveur Domoticz dans la variable "ip"
Code : Tout sélectionner
-- Ce script permet de renvoyer les commandes à certain périphériques
-- aprés 60s et toutes les 30mn
-- de sorte à fiabiliser leur fonctionnement
local ip = '192.168.1.10:8080' -- user:pass@ip:port de domoticz
local switchs={}
InterrupteursSansEtat=uservariables["InterrupteursSansEtat"]
for DeviceName in string.gmatch(InterrupteursSansEtat, "[^|]+") do
switchs[#switchs + 1] = DeviceName
end
function timedifference(s)
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 urlencode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w ])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
commandArray = {}
for key, valeur in pairs(switchs) do
-- Test si l’interrupteur existe
if ( otherdevices[valeur]=='On' or otherdevices[valeur]=='Off' ) then
-- Création de la variable si elle n'existe pas
if(uservariables['R_'..valeur] == nil) then
print('Renforcement : création variable R_'..valeur)
commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command¶m=saveuservariable&vname=R_'..urlencode(valeur)..'&vtype=2&vvalue='..urlencode(otherdevices[valeur])}
end
if ( otherdevices[valeur] ~= uservariables['R_'..valeur] and timedifference(otherdevices_lastupdate[valeur]) > 60) then -- Renforcement aprés changement d'état
print('Renforcement : '..valeur.. ' -> ' ..otherdevices[valeur])
commandArray[valeur] = otherdevices[valeur]
commandArray['Variable:R_'..valeur]=otherdevices[valeur]
elseif (timedifference(otherdevices_lastupdate[valeur]) > 1800) then -- Renforcement aprés 30mn
print('Renforcement 30mn : '..valeur.. ' -> ' ..otherdevices[valeur])
commandArray[valeur] = otherdevices[valeur]
commandArray['Variable:R_'..valeur]=otherdevices[valeur]
end
else
print('RENFORCEMENT : L interrupteur '..valeur..' n existe pas !')
end
end
return commandArray