Bonjour,
La question du jour ;-) bon le code c'est pas trop trop mon truc. Pour aider notre king de l'electricite nommé @Did, je suis parti d'un code posté par @steven et j'ai essayé de l'adapter au mieux pour les besoins de @Did.
Pourriez-vous corriger et me dire s'il y a des boulettes ? et si vous comprenez le besoin ?
Et du code de @steven je ne comprends pas bien le if (g) ..;si vous avez envie de m'expliquer lol
Code de @steven
local var_global = "RGB_PREVIOUS"
local id = 27
if (fibaro:getGlobalValue(var_global) == "" or fibaro:getGlobalValue(var_global) == nil) then
-- On stock l'état du ruban
-- et on lance l'alarme
local prog = fibaro:getValue(id, "currentProgram")
local color = fibaro:getValue(id, "color")
if (prog == 0) then
-- on stocke la couleur du ruban car pas de programme en cours
fibaro:setGlobal(var_global, color)
else
-- on stocke le programme en cours
fibaro:setGlobal(var_global, prog)
end
fibaro:call(id, "setColor", "0", "0", "255", "100" )
else
-- on récupère les valeurs précédentes et on les remets sur le ruban
local r,g,b,w = string.match(fibaro:getGlobalValue(var_global), "(%d),(%d),(%d),(%d)")
if (g) then
fibaro:call(id, "setColor", r, g, b, w)
else
fibaro:call(id, "startProgram", r)
end
-- On désactive la variable
fibaro:setGlobal(var_global, "")
end
Le code modifié
local var_global = {"RGB_Previous1", "RGB_Previous2"}
local idRGB = {239, 545}
local prog_rgb = 546
local CeL = fibaro:getValue(208, 'value' )
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
function GetValueRGB(id)
local prog = tonumber(fibaro:getValue(id, "currentProgram"))
local color = fibaro:getValue(id, "color")
for i = 1,#var_global do
if (prog == 0) then
-- on stocke la couleur du ruban car pas de programme en cours
-- si éteint : color = 0,0,0,0
fibaro:setGlobal(var_global[i], color)
else
-- on stocke le programme en cours
fibaro:setGlobal(var_global[i], prog)
end
end
end
function PutValueRGB(id)
for i = 1,#var_global do
local r,g,b,w = string.match(fibaro:getGlobalValue(var_global[i]), "(%d),(%d),(%d),(%d)")
if (g) then
fibaro:call(id, "setColor", r, g, b, w)
else
fibaro:call(id, "startProgram", r)
end
end
end
for i = 1, #idRGB do
fibaro:debug("Démarrage du script : " ..currentdate)
if ((fibaro:getGlobalValue(var_global1) == "" or fibaro:getGlobalValue(var_global1) == nil) and (CeL == '1')) then
GetValueRGB(idRGB[i])
fibaro:call(idRGB[i], "startProgram", prog_rgb)
fibaro:sleep(15*1000)
PutValueRGB(idRGB[i])
for i = 1,#var_global do
fibaro:setGlobal(var_global[i], "")
end
fibaro:call(idRGB[i], "turnOff")
end
end