Aller au contenu
pepite

Aide Code Lua Rgb

Recommended Posts

 Donc là , les bandeaux passent bien en programme 546 (je les avais allumé en prog 6) pendant les 15 secondes puis s'éteignent alors qu'ils auraient dà» reprendre sur le programme 6.

Le debug:

[DEBUG] 11:10:24: Démarrage du script : 26/02/2016 11:10:24
[DEBUG] 11:10:24: Valeur CeL : 0
[DEBUG] 11:10:24: Couleur Master :0,0,0,0
[DEBUG] 11:10:24: Programme Master :6
[DEBUG] 11:10:24: Couleur Slave :0,0,0,0
[DEBUG] 11:10:24: Programme slave :6
[DEBUG] 11:10:24: Affectation PROG aux variables
[DEBUG] 11:10:24: RGB sur Programme 546
[DEBUG] 11:10:24: tempo de 15 secs
[DEBUG] 11:10:39: Remise valeur précédente Master
[DEBUG] 11:10:39: Remise valeur précédente Slave
[DEBUG] 11:10:39: Réinitialisation des variables

Partager ce message


Lien à poster
Partager sur d’autres sites

 Attends, il faut que j'épluche un peu mieux mes tests, je l'ai vu bien fonctionner quand un des bandeaux était éteint.

Partager ce message


Lien à poster
Partager sur d’autres sites

On avance ;-)

 

Bon j'ai rajouté des debug pour verifier si les valeurs du programme sont bien récupérees dans les Variables Globales et j'ai modifié les derniers IF


 


--[[
%% properties
208 value
%% globals
--]]
 
local id_master = 239 -- ID des Master (ID Master)
local id_slaves = 545 -- ID des Slaves {1}, {1,2,3}
local prog_rgb = 546
local var_global_master = "RGB_Previous1"
local var_global_slave = "RGB_Previous2"
local debug = true -- Debug

local CeL = fibaro:getValue(208,  'value'  )
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
local VGMaster = tonumber(fibaro:getGlobalValue(var_global_master))
local VGSlave = tonumber(fibaro:getGlobalValue(var_global_slave))
 
if debug then
    fibaro:debug("Démarrage du script : " ..currentdate)
    fibaro:debug("Valeur CeL : " ..CeL)
end
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end

--Recup couleur et Prog du RGB Master
local result = split(fibaro:getValue(id_master, "color"), ',')
local ProgMaster = fibaro:getValue(id_master, "currentProgramID")
-- Recup couleur et Prog du RGB slave
local resultat = split(fibaro:getValue(id_slaves, "color"), ',')
local ProgSlave = fibaro:getValue(id_slaves, "currentProgramID")

 
--Affichage dans le debug des couleurs de RGB Master et RGB Slave
if debug then
    fibaro:debug("Couleur Master :" ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme Master :" ..ProgMaster)
    fibaro:debug("Couleur Slave :" ..resultat[1]..","..resultat[2]..","..resultat[3]..","..resultat[4])
    fibaro:debug("Programme slave :" ..ProgSlave)
end

-- Affectation PROG aux VG
fibaro:debug("Affectation PROG aux variables")
fibaro:setGlobal(var_global_master, ProgMaster)
fibaro:setGlobal(var_global_slave, ProgSlave)
fibaro:debug("Valeur  VGMaster :" ..VGMaster)
fibaro:debug("Valeur  VGSlave :" ..VGSlave)

-- SI activation cellule 208, les 2 RGB avec le programme 546
fibaro:debug("RGB sur Programme : " ..prog_rgb)
fibaro:call(id_master, "startProgram", prog_rgb)    
fibaro:call(id_slaves, "startProgram", prog_rgb)

-- Tempo de 15 secs
fibaro:debug("tempo de 15 secs")
fibaro:sleep(15*1000)

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Master")
if (result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") then
    fibaro:call(id_master, "startProgram", VGMaster)
    fibaro:debug("Prog :" ..VGMaster.. "sur" ..id_master)
else
    fibaro:call(id_master, "setColor", result[1], result[2], result[3], result[4])
    fibaro:debug("Couleur sur :" ..id_master)
end

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Slave")
if (resultat[1] == "0" and resultat[2] == "0" and resultat[3] == "0" and resultat[4] == "0") then
    fibaro:call(id_slaves, "startProgram", VGSlave)
    fibaro:debug("Prog :" ..VGSlave.. "sur" ..id_slaves)
else
    fibaro:call(id_slaves, "setColor", resultat[1], resultat[2], resultat[3], resultat[4])
    fibaro:debug("Couleur sur :" ..id_slaves)
end


--Reinitialisation des variables
fibaro:debug("Réinitialisation des variables")
fibaro:setGlobal(var_global_master, "")
fibaro:setGlobal(var_global_slave, "")
fibaro:debug("Valeur après réinitialisation VGMaster :" ..VGMaster)
fibaro:debug("Valeur après réinitialisation VGSlave :" ..VGSlave)

Partager ce message


Lien à poster
Partager sur d’autres sites

 J'ai mis ton dernier code pour faire les tests, alors quand les deux bandeaux sont allumés sur un programme, même différent, le déclenchement de 208 lance bien le prog 546 pendant la tempo et le tout revient sur le programme en cours avant (y compris si les programmes étaient différents) donc ça c'est bien.  :bravo:

Le debug:

[DEBUG] 13:28:22: Démarrage du script : 26/02/2016 13:28:22
[DEBUG] 13:28:22: Valeur CeL : 1
[DEBUG] 13:28:22: Couleur Master :0,0,0,0
[DEBUG] 13:28:22: Programme Master :6
[DEBUG] 13:28:22: Couleur Slave :0,0,0,0
[DEBUG] 13:28:22: Programme slave :6
[DEBUG] 13:28:22: Affectation PROG aux variables
[DEBUG] 13:28:22: line 70: attempt to concatenate local 'VGMaster' (a nil value)
[DEBUG] 13:28:24: Démarrage du script : 26/02/2016 13:28:24
[DEBUG] 13:28:24: Valeur CeL : 0
[DEBUG] 13:28:24: Couleur Master :0,0,0,0
[DEBUG] 13:28:24: Programme Master :6
[DEBUG] 13:28:24: Couleur Slave :0,0,0,0
[DEBUG] 13:28:24: Programme slave :6
[DEBUG] 13:28:24: Affectation PROG aux variables
[DEBUG] 13:28:24: Valeur VGMaster :6
[DEBUG] 13:28:24: Valeur VGSlave :6
[DEBUG] 13:28:24: RGB sur Programme : 546
[DEBUG] 13:28:24: tempo de 15 secs
[DEBUG] 13:28:39: Remise valeur précédente Master
[DEBUG] 13:28:39: Prog :6sur239
[DEBUG] 13:28:39: Remise valeur précédente Slave
[DEBUG] 13:28:39: Prog :6sur545
[DEBUG] 13:28:39: Réinitialisation des variables
[DEBUG] 13:28:39: Valeur après réinitialisation VGMaster :6
[DEBUG] 13:28:39: Valeur après réinitialisation VGSlave :6

Par contre, si un des bandeaux est éteint ou les deux, le programme 546 se lance mais ne s'arrête plus (sur celui qui était éteint, celui qui était allumé revient bien sur son programme), le debug:

[DEBUG] 13:32:00: Démarrage du script : 26/02/2016 13:32:00
[DEBUG] 13:32:00: Valeur CeL : 1
[DEBUG] 13:32:00: Couleur Master :0,0,0,0
[DEBUG] 13:32:00: Programme Master :0
[DEBUG] 13:32:00: Couleur Slave :0,0,0,0
[DEBUG] 13:32:00: Programme slave :0
[DEBUG] 13:32:00: Affectation PROG aux variables
[DEBUG] 13:32:00: line 70: attempt to concatenate local 'VGMaster' (a nil value)
[DEBUG] 13:32:02: Démarrage du script : 26/02/2016 13:32:02
[DEBUG] 13:32:02: Valeur CeL : 0
[DEBUG] 13:32:02: Couleur Master :0,0,0,0
[DEBUG] 13:32:02: Programme Master :0
[DEBUG] 13:32:02: Couleur Slave :0,0,0,0
[DEBUG] 13:32:02: Programme slave :0
[DEBUG] 13:32:02: Affectation PROG aux variables
[DEBUG] 13:32:02: Valeur VGMaster :0
[DEBUG] 13:32:02: Valeur VGSlave :0
[DEBUG] 13:32:02: RGB sur Programme : 546
[DEBUG] 13:32:02: tempo de 15 secs
[DEBUG] 13:32:17: Remise valeur précédente Master
[DEBUG] 13:32:17: Prog :0sur239
[DEBUG] 13:32:17: Remise valeur précédente Slave
[DEBUG] 13:32:17: Prog :0sur545
[DEBUG] 13:32:17: Réinitialisation des variables
[DEBUG] 13:32:17: Valeur après réinitialisation VGMaster :0
[DEBUG] 13:32:17: Valeur après réinitialisation VGSlave :0

Partager ce message


Lien à poster
Partager sur d’autres sites

ca avance bien ;-) 

Ah zut, ca s'eteint pas hihih

 

Et comme ceci, rajout de conditions dans les IF/elseif/else et de debug pour suivre


--[[
%% properties
208 value
%% globals
--]]
 

local id_master = 239 -- ID des Master (ID Master)
local id_slaves = 545 -- ID des Slaves {1}, {1,2,3}
local prog_rgb = 546
local var_global_master = "RGB_Previous1"
local var_global_slave = "RGB_Previous2"
local debug = true -- Debug

local CeL = fibaro:getValue(208,  'value'  )
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
local VGMaster = tonumber(fibaro:getGlobalValue(var_global_master))
local VGSlave = tonumber(fibaro:getGlobalValue(var_global_slave))
 
if debug then
    fibaro:debug("Démarrage du script : " ..currentdate)
    --fibaro:debug("Valeur CeL : " ..CeL)
end
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end

--Recup couleur et Prog du RGB Master
local result = split(fibaro:getValue(id_master, "color"), ',')
local ProgMaster = fibaro:getValue(id_master, "currentProgramID")
-- Recup couleur et Prog du RGB slave
local resultat = split(fibaro:getValue(id_slaves, "color"), ',')
local ProgSlave = fibaro:getValue(id_slaves, "currentProgramID")

 
--Affichage dans le debug des couleurs de RGB Master et RGB Slave
if debug then
    fibaro:debug("Couleur Master :" ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme Master :" ..ProgMaster)
    fibaro:debug("Couleur Slave :" ..resultat[1]..","..resultat[2]..","..resultat[3]..","..resultat[4])
    fibaro:debug("Programme slave :" ..ProgSlave)
end

-- Affectation PROG aux VG
fibaro:debug("Affectation PROG aux variables")
fibaro:setGlobal(var_global_master, ProgMaster)
fibaro:setGlobal(var_global_slave, ProgSlave)
fibaro:debug("Valeur  VGMaster :" ..VGMaster)
fibaro:debug("Valeur  VGSlave :" ..VGSlave)

-- SI activation cellule 208, les 2 RGB avec le programme 546
fibaro:debug("RGB sur Programme : " ..prog_rgb)
fibaro:call(id_master, "startProgram", prog_rgb)    
fibaro:call(id_slaves, "startProgram", prog_rgb)

-- Tempo de 15 secs
fibaro:debug("tempo de 15 secs")
fibaro:sleep(15*1000)

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Master")
if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (VGMaster > "0")) then
    fibaro:call(id_master, "startProgram", VGMaster)
    fibaro:debug("Prog : " ..VGMaster.. " sur " ..id_master)
    
elseif ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (VGMaster == "0"))
    fibaro:call(id_master, "turnOff")
    fibaro:debug("Extinction : " ..id_master)
    
else
    fibaro:call(id_master, "setColor", result[1], result[2], result[3], result[4])
    fibaro:debug("Couleur sur : " ..id_master)
end

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Slave")
if (resultat[1] == "0" and resultat[2] == "0" and resultat[3] == "0" and resultat[4] == "0") and (VGSlave > "0") then
    fibaro:call(id_slaves, "startProgram", VGSlave)
    fibaro:debug("Prog : " ..VGSlave.. " sur " ..id_slaves)
    
elseif ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (VGSlave == "0"))
    fibaro:call(id_slaves, "turnOff")
    fibaro:debug("Extinction : " ..id_slaves)
    
else
    fibaro:call(id_slaves, "setColor", resultat[1], resultat[2], resultat[3], resultat[4])
    fibaro:debug("Couleur sur :" ..id_slaves)
end


--Reinitialisation des variables
fibaro:debug("Réinitialisation des variables")
fibaro:setGlobal(var_global_master, "0")
fibaro:setGlobal(var_global_slave, "0")
fibaro:debug("Valeur après réinitialisation VGMaster :" ..VGMaster)
fibaro:debug("Valeur après réinitialisation VGSlave :" ..VGSlave)

Question bete, je n'ai pas de RGB, mais quand tu remets les couleurs à  0,0,0,0 ca l'eteint non ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 Alors là , plus rien ne s'allume, qu'ils soient allumés ou éteint avant.

[DEBUG] 14:50:39: line 90: 'then' expected near 'fibaro'
[DEBUG] 14:50:41: line 90: 'then' expected near 'fibaro'

Pour éteindre, je fais

fibaro:call(239, "turnOff")

mais effectivement, cette commande éteint aussi le bandeau.

fibaro:call(239, "setColor", "0", "0", "0", "0")

Partager ce message


Lien à poster
Partager sur d’autres sites

lol, le boulet, j'avais oublie le "Then" des "elseif" ;-)

 

Ok ca eteint aussi, donc pas besoin des "elseif", ceci doit fonctionner en changer les IF :

 

Si les couleurs sont = 0,0,0,0 ET valeur du PROG > 0

ALORS remettre le programme de la variable globale

SINON remettre les couleurs 0,0,0,0 ca derait l'etiendre

 

enfin je pense

 

Teste, ca sent bon la fin ;-) lol

--[[
%% properties
208 value
%% globals
--]]
 
local id_master = 239 -- ID des Master (ID Master)
local id_slaves = 545 -- ID des Slaves {1}, {1,2,3}
local prog_rgb = 546
local var_global_master = "RGB_Previous1"
local var_global_slave = "RGB_Previous2"
local debug = true -- Debug

------
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
local VGMaster = tonumber(fibaro:getGlobalValue(var_global_master))
local VGSlave = tonumber(fibaro:getGlobalValue(var_global_slave))
--------
 
if debug then
    fibaro:debug("Démarrage du script : " ..currentdate)
end
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end

--Recup couleur et Prog du RGB Master
local result = split(fibaro:getValue(id_master, "color"), ',')
local ProgMaster = fibaro:getValue(id_master, "currentProgramID")
-- Recup couleur et Prog du RGB slave
local resultat = split(fibaro:getValue(id_slaves, "color"), ',')
local ProgSlave = fibaro:getValue(id_slaves, "currentProgramID")

 
--Affichage dans le debug des couleurs de RGB Master et RGB Slave
if debug then
    fibaro:debug("Couleur Master :" ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme Master :" ..ProgMaster)
    fibaro:debug("Couleur Slave :" ..resultat[1]..","..resultat[2]..","..resultat[3]..","..resultat[4])
    fibaro:debug("Programme slave :" ..ProgSlave)
end

-- Affectation PROG aux VG
fibaro:debug("Affectation PROG aux variables")
fibaro:setGlobal(var_global_master, ProgMaster)
fibaro:setGlobal(var_global_slave, ProgSlave)
fibaro:debug("Valeur  VGMaster :" ..VGMaster)
fibaro:debug("Valeur  VGSlave :" ..VGSlave)

-- SI activation cellule 208, les 2 RGB avec le programme 546
fibaro:debug("RGB sur Programme : " ..prog_rgb)
fibaro:call(id_master, "startProgram", prog_rgb)    
fibaro:call(id_slaves, "startProgram", prog_rgb)

-- Tempo de 15 secs
fibaro:debug("tempo de 15 secs")
fibaro:sleep(15*1000)

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Master")
if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (VGMaster > "0")) then
    fibaro:call(id_master, "startProgram", VGMaster)
    fibaro:debug("Prog : " ..VGMaster.. " sur " ..id_master)   
else
    fibaro:call(id_master, "setColor", result[1], result[2], result[3], result[4])
    fibaro:debug("Couleur sur : " ..id_master)
end

-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Slave")
if (resultat[1] == "0" and resultat[2] == "0" and resultat[3] == "0" and resultat[4] == "0") and (VGSlave > "0") then
    fibaro:call(id_slaves, "startProgram", VGSlave)
    fibaro:debug("Prog : " ..VGSlave.. " sur " ..id_slaves)       
else
    fibaro:call(id_slaves, "setColor", resultat[1], resultat[2], resultat[3], resultat[4])
    fibaro:debug("Couleur sur :" ..id_slaves)
end

--Reinitialisation des variables
fibaro:debug("Réinitialisation des variables")
fibaro:setGlobal(var_global_master, "0")
fibaro:setGlobal(var_global_slave, "0")
fibaro:debug("Valeur après réinitialisation VGMaster :" ..VGMaster)
fibaro:debug("Valeur après réinitialisation VGSlave :" ..VGSlave)



 

Partager ce message


Lien à poster
Partager sur d’autres sites

 Désolé @pepite,

 

Pas encore la fin, j'ai allumé le 545 sur le programme 6 et laissé éteint le 239 et ça passe en 546 mais reste bloqué dessus.

[DEBUG] 18:54:22: Démarrage du script : 26/02/2016 18:54:22
[DEBUG] 18:54:22: Couleur Master :0,0,0,0
[DEBUG] 18:54:22: Programme Master :0
[DEBUG] 18:54:22: Couleur Slave :0,0,0,0
[DEBUG] 18:54:22: Programme slave :6
[DEBUG] 18:54:22: Affectation PROG aux variables
[DEBUG] 18:54:23: line 70: attempt to concatenate local 'VGMaster' (a nil value)
[DEBUG] 18:54:25: Démarrage du script : 26/02/2016 18:54:25
[DEBUG] 18:54:25: Couleur Master :0,0,0,0
[DEBUG] 18:54:25: Programme Master :0
[DEBUG] 18:54:25: Couleur Slave :0,0,0,0
[DEBUG] 18:54:25: Programme slave :6
[DEBUG] 18:54:25: Affectation PROG aux variables
[DEBUG] 18:54:25: Valeur VGMaster :0
[DEBUG] 18:54:25: Valeur VGSlave :6
[DEBUG] 18:54:25: RGB sur Programme : 546
[DEBUG] 18:54:25: tempo de 15 secs
[DEBUG] 18:54:40: Remise valeur précédente Master
[DEBUG] 18:54:40: line 84: attempt to compare string with number

Les deux allumés ne repassent pas non plus sur le prog initial.

[DEBUG] 19:03:20: Démarrage du script : 26/02/2016 19:03:20
[DEBUG] 19:03:20: Couleur Master :0,0,0,0
[DEBUG] 19:03:20: Programme Master :6
[DEBUG] 19:03:20: Couleur Slave :0,0,0,0
[DEBUG] 19:03:20: Programme slave :6
[DEBUG] 19:03:20: Affectation PROG aux variables
[DEBUG] 19:03:20: Valeur VGMaster :0
[DEBUG] 19:03:20: Valeur VGSlave :6
[DEBUG] 19:03:20: RGB sur Programme : 546
[DEBUG] 19:03:20: tempo de 15 secs
[DEBUG] 19:03:22: Démarrage du script : 26/02/2016 19:03:22
[DEBUG] 19:03:22: Couleur Master :0,0,0,0
[DEBUG] 19:03:22: Programme Master :546
[DEBUG] 19:03:22: Couleur Slave :0,0,0,0
[DEBUG] 19:03:22: Programme slave :546
[DEBUG] 19:03:22: Affectation PROG aux variables
[DEBUG] 19:03:22: Valeur VGMaster :6
[DEBUG] 19:03:22: Valeur VGSlave :6
[DEBUG] 19:03:22: RGB sur Programme : 546
[DEBUG] 19:03:22: tempo de 15 secs
[DEBUG] 19:03:35: Remise valeur précédente Master
[DEBUG] 19:03:35: line 84: attempt to compare string with number
[DEBUG] 19:03:37: Remise valeur précédente Master
[DEBUG] 19:03:37: line 84: attempt to compare string with number

 Merci @pepite pour ton abnégation, je vois déjà  ce que tu vas me répondre: que ça te permet de progresser, certes mais vraiment mille merci de te défoncer pour moi (et peut-être d'autre). :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

oui moi :D !

 

ben les gars vous en voulez ou moi j'ai baissez les bras :P

Partager ce message


Lien à poster
Partager sur d’autres sites

 C'est surtout @pepite qu'il faut féliciter. :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Did,

 

Tu as raison et c'est avec plaisir que je le fais.

 

Plantage sur des comparaisons, une chaine avec un nombre, ca ne risquait pas de fonctionner, enfin c'est ce que je comprends ;-)

 

Modif : comparaison avec tonumber ;-)

--[[
%% properties
208 value
%% globals
--]]
 
local id_master = 239 -- ID des Master (ID Master)
local id_slaves = 545 -- ID des Slaves {1}, {1,2,3}
local prog_rgb = 546
local var_global_master = "RGB_Previous1"
local var_global_slave = "RGB_Previous2"
local debug = true -- Debug
 
------
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
local VGMaster = tonumber(fibaro:getGlobalValue(var_global_master))
local VGSlave = tonumber(fibaro:getGlobalValue(var_global_slave))
--------
 

fibaro:debug("Démarrage du script : " ..currentdate)

 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
 
--Recup couleur et Prog du RGB Master
local result = split(fibaro:getValue(id_master, "color"), ',')
local ProgMaster = fibaro:getValue(id_master, "currentProgramID")
-- Recup couleur et Prog du RGB slave
local resultat = split(fibaro:getValue(id_slaves, "color"), ',')
local ProgSlave = fibaro:getValue(id_slaves, "currentProgramID")
 
 
--Affichage dans le debug des couleurs de RGB Master et RGB Slave
if debug then
    fibaro:debug("Couleur Master : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme Master : " ..ProgMaster)
    fibaro:debug("Couleur Slave : " ..resultat[1]..","..resultat[2]..","..resultat[3]..","..resultat[4])
    fibaro:debug("Programme slave : " ..ProgSlave)
end
 
-- Affectation PROG aux VG
fibaro:debug("Affectation PROG aux variables")
fibaro:setGlobal(var_global_master, ProgMaster)
fibaro:setGlobal(var_global_slave, ProgSlave)
fibaro:debug("Valeur  VGMaster : " ..VGMaster)
fibaro:debug("Valeur  VGSlave : " ..VGSlave)
 
-- SI activation cellule 208, les 2 RGB avec le programme 546
fibaro:debug("RGB sur Programme : " ..prog_rgb)
fibaro:call(id_master, "startProgram", prog_rgb)    
fibaro:call(id_slaves, "startProgram", prog_rgb)
 
-- Tempo de 15 secs
fibaro:debug("tempo de 15 secs")
fibaro:sleep(15*1000)
 
-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Master")
if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(VGMaster) > "0")) then
    fibaro:call(id_master, "startProgram", VGMaster)
    fibaro:debug("Prog : " ..VGMaster.. " sur " ..id_master)   
else
    fibaro:call(id_master, "setColor", result[1], result[2], result[3], result[4])
    fibaro:debug("Couleur sur : " ..id_master)
end
 
-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Slave")
if ((resultat[1] == "0" and resultat[2] == "0" and resultat[3] == "0" and resultat[4] == "0") and (tonumber(VGSlave) > "0")) then
    fibaro:call(id_slaves, "startProgram", VGSlave)
    fibaro:debug("Prog : " ..VGSlave.. " sur " ..id_slaves)       
else
    fibaro:call(id_slaves, "setColor", resultat[1], resultat[2], resultat[3], resultat[4])
    fibaro:debug("Couleur sur :" ..id_slaves)
end
 
--Reinitialisation des variables
fibaro:debug("Réinitialisation des variables")
fibaro:setGlobal(var_global_master, "0")
fibaro:setGlobal(var_global_slave, "0")
fibaro:debug("Valeur après réinitialisation VGMaster :" ..VGMaster)
fibaro:debug("Valeur après réinitialisation VGSlave :" ..VGSlave)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bonjour @pepite,

Le prog 546 ne s'éteint pas, qu'ils soient allumés ou éteints avant.

[DEBUG] 12:23:14: Démarrage du script : 27/02/2016 12:23:14
[DEBUG] 12:23:14: Couleur Master : 0,0,0,0
[DEBUG] 12:23:14: Programme Master : 0
[DEBUG] 12:23:14: Couleur Slave : 0,0,0,0
[DEBUG] 12:23:14: Programme slave : 6
[DEBUG] 12:23:14: Affectation PROG aux variables
[DEBUG] 12:23:14: Valeur VGMaster : 546
[DEBUG] 12:23:14: Valeur VGSlave : 546
[DEBUG] 12:23:14: RGB sur Programme : 546
[DEBUG] 12:23:14: tempo de 15 secs
[DEBUG] 12:23:16: Démarrage du script : 27/02/2016 12:23:16
[DEBUG] 12:23:16: Couleur Master : 0,0,0,0
[DEBUG] 12:23:16: Programme Master : 546
[DEBUG] 12:23:16: Couleur Slave : 0,0,0,0
[DEBUG] 12:23:16: Programme slave : 546
[DEBUG] 12:23:16: Affectation PROG aux variables
[DEBUG] 12:23:16: Valeur VGMaster : 0
[DEBUG] 12:23:16: Valeur VGSlave : 6
[DEBUG] 12:23:16: RGB sur Programme : 546
[DEBUG] 12:23:16: tempo de 15 secs
[DEBUG] 12:23:29: Remise valeur précédente Master
[DEBUG] 12:23:29: line 84: attempt to compare string with number
[DEBUG] 12:23:31: Remise valeur précédente Master
[DEBUG] 12:23:31: line 84: attempt to compare string with number

Partager ce message


Lien à poster
Partager sur d’autres sites

normal a priori avec les lignes de comparaison bugguees, la 84, j'essaie autre chose.

 

Et comme ceci ?

Essai num 586 342 lol

--[[
%% properties
208 value
%% globals
--]]
 
local id_master = 239 -- ID des Master (ID Master)
local id_slaves = 545 -- ID des Slaves {1}, {1,2,3}
local prog_rgb = 546
local var_global_master = "RGB_Previous1"
local var_global_slave = "RGB_Previous2"
local debug = true -- Debug
 
------
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
local VGMaster = tonumber(fibaro:getGlobalValue(var_global_master))
local VGSlave = tonumber(fibaro:getGlobalValue(var_global_slave))
--------
 

fibaro:debug("Démarrage du script : " ..currentdate)

 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
 
--Recup couleur et Prog du RGB Master
local result = split(fibaro:getValue(id_master, "color"), ',')
local ProgMaster = fibaro:getValue(id_master, "currentProgramID")
-- Recup couleur et Prog du RGB slave
local resultat = split(fibaro:getValue(id_slaves, "color"), ',')
local ProgSlave = fibaro:getValue(id_slaves, "currentProgramID")
 
 
--Affichage dans le debug des couleurs de RGB Master et RGB Slave
if debug then
    fibaro:debug("Couleur Master : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme Master : " ..ProgMaster)
    fibaro:debug("Couleur Slave : " ..resultat[1]..","..resultat[2]..","..resultat[3]..","..resultat[4])
    fibaro:debug("Programme slave : " ..ProgSlave)
end
 
-- Affectation PROG aux VG
fibaro:debug("Affectation PROG aux variables")
fibaro:setGlobal(var_global_master, ProgMaster)
fibaro:setGlobal(var_global_slave, ProgSlave)
fibaro:debug("Valeur  VGMaster : " ..VGMaster)
fibaro:debug("Valeur  VGSlave : " ..VGSlave)
 
-- SI activation cellule 208, les 2 RGB avec le programme 546
fibaro:debug("RGB sur Programme : " ..prog_rgb)
fibaro:call(id_master, "startProgram", prog_rgb)    
fibaro:call(id_slaves, "startProgram", prog_rgb)
 
-- Tempo de 15 secs
fibaro:debug("tempo de 15 secs")
fibaro:sleep(15*1000)
 
-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Master")
if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(VGMaster) > 0)) then
    fibaro:call(id_master, "startProgram", VGMaster)
    fibaro:debug("Prog : " ..VGMaster.. " sur " ..id_master)   
else
    fibaro:call(id_master, "setColor", result[1], result[2], result[3], result[4])
    fibaro:debug("Couleur sur : " ..id_master)
end
 
-- Remise prog/couleur des RGB en cours avant activation cellule 208
fibaro:debug("Remise valeur précédente Slave")
if ((resultat[1] == "0" and resultat[2] == "0" and resultat[3] == "0" and resultat[4] == "0") and (tonumber(VGSlave) > 0)) then
    fibaro:call(id_slaves, "startProgram", VGSlave)
    fibaro:debug("Prog : " ..VGSlave.. " sur " ..id_slaves)       
else
    fibaro:call(id_slaves, "setColor", resultat[1], resultat[2], resultat[3], resultat[4])
    fibaro:debug("Couleur sur :" ..id_slaves)
end
 
--Reinitialisation des variables
fibaro:debug("Réinitialisation des variables")
fibaro:setGlobal(var_global_master, "0")
fibaro:setGlobal(var_global_slave, "0")
fibaro:debug("Valeur après réinitialisation VGMaster :" ..VGMaster)
fibaro:debug("Valeur après réinitialisation VGSlave :" ..VGSlave)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bingo, c'est bon ce coup ci, je vais tester tout ce week-end et ajouter mes lignes pour le Sonos.

Merci @pepite. :13:

Autre question:

Si j'ajoutes un nouveau bandeau (pour avoir cette signalisation à  l'étage), je rajoutes le nouvel Id dans les slaves (séparé par une virgule) et une nouvelle variable "RGB_Previous3" dans le panneau?

Partager ce message


Lien à poster
Partager sur d’autres sites

Au bout du 452 645 ème essai ;-)

 

Peux tu mettre le debug stp ?  il ya tout de même des choses pas top ;-) bien que cela fonctionne..

 

Le code n'est pas ecrit pour lire dans des tables pour l'instant, pas du tout optimise..

Les experts du forum en lisant mon code vont s'arracher les cheveux ;-)

Donc tu ne pourras pas tel quel, il faudra rajouter une variable pour le nouveau RGB, puis une nouvelle Variable Globale RGB Previous et enfin des lignes pour recupere les valeurs precedentes et les remettre apres.

 

Maintenant que cela fonctionne, vais tenter de le faire pour plusieurs RGB, et1 variable serait plus simple. et non X variables pour X RGB tel qu'actuellement.

 

Peux plus "jouer" auj, mais demain certainement un peu plus de temps.

Partager ce message


Lien à poster
Partager sur d’autres sites

 Ah, moi je croyais que c'était bon, alors le debug:

[DEBUG] 12:55:01: Démarrage du script : 27/02/2016 12:55:01
[DEBUG] 12:55:01: Couleur Master : 0,0,0,0
[DEBUG] 12:55:01: Programme Master : 0
[DEBUG] 12:55:01: Couleur Slave : 0,0,0,0
[DEBUG] 12:55:01: Programme slave : 6
[DEBUG] 12:55:01: Affectation PROG aux variables
[DEBUG] 12:55:01: Valeur VGMaster : 546
[DEBUG] 12:55:01: Valeur VGSlave : 546
[DEBUG] 12:55:01: RGB sur Programme : 546
[DEBUG] 12:55:02: tempo de 15 secs
[DEBUG] 12:55:03: Démarrage du script : 27/02/2016 12:55:03
[DEBUG] 12:55:03: Couleur Master : 0,0,0,0
[DEBUG] 12:55:03: Programme Master : 546
[DEBUG] 12:55:03: Couleur Slave : 0,0,0,0
[DEBUG] 12:55:03: Programme slave : 546
[DEBUG] 12:55:03: Affectation PROG aux variables
[DEBUG] 12:55:03: Valeur VGMaster : 0
[DEBUG] 12:55:03: Valeur VGSlave : 6
[DEBUG] 12:55:03: RGB sur Programme : 546
[DEBUG] 12:55:03: tempo de 15 secs
[DEBUG] 12:55:17: Remise valeur précédente Master
[DEBUG] 12:55:17: Prog : 546 sur 239
[DEBUG] 12:55:17: Remise valeur précédente Slave
[DEBUG] 12:55:17: Prog : 546 sur 545
[DEBUG] 12:55:17: Réinitialisation des variables
[DEBUG] 12:55:17: Valeur après réinitialisation VGMaster :546
[DEBUG] 12:55:17: Valeur après réinitialisation VGSlave :546
[DEBUG] 12:55:18: Remise valeur précédente Master
[DEBUG] 12:55:18: Couleur sur : 239
[DEBUG] 12:55:18: Remise valeur précédente Slave
[DEBUG] 12:55:18: Prog : 6 sur 545
[DEBUG] 12:55:18: Réinitialisation des variables
[DEBUG] 12:55:18: Valeur après réinitialisation VGMaster :0
[DEBUG] 12:55:18: Valeur après réinitialisation VGSlave :6

Pas de soucis, quand tu peux.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Did,

 

si ca fonctionne, mais il y a des choses en double dans le debug que je ne comprends pas bien ;-)

 

Sinon, garde ta scene qui tourne et essaie ca, pour pouvoir rajouter autant de RGBs que l'on veut, sans passer par des VG

--[[
%% properties
208 value
%% globals
--]]

------ User settings -----
local id_RGBs = {239, 545}
local ProgRGB = 546
---------------

local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)

-- fonction split ----

function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
----------


for i = 1, #id_RGBs do
    -- Recup Couleur et programme des RGBs
    local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
    local Prog = fibaro:getValue(id_RGBs[i], "currentProgramID")

    -- Debug valeur result et prog
    fibaro:debug("Couleur : " ..id_RGBs[i].. " : " ..result[i][1]..","..result[i][2]..","..result[i][3]..","..result[i][4])
    fibaro:debug("Programme : " ..id_RGBs[i] " : " ..Prog[i])

    -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
    fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB)
    fibaro:call(id_RGBs[i], "startProgram", ProgRGB)

    -- Tempo de 15 secs
    fibaro:debug("tempo de 15 secs")
    fibaro:sleep(15*1000)

    -- Remise prog/couleur des RGBs en cours avant activation cellule 208
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[i][1] == "0" and result[i][2] == "0" and result[i][3] == "0" and result[i][4] == "0") and (tonumber(Prog[i]) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog[i])
            fibaro:debug("Prog : " ..Prog[i].. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[i][1], result[i][2], result[i][3], result[i][4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

 Gardes ta scène, c'est à  dire , je met où ces nouvelles lignes, dans une nouvelle scène?

Partager ce message


Lien à poster
Partager sur d’autres sites

oops, pardon, j'ai pas ete tres clair.

 

Oui teste une nouvelle scene pour ce code, vraiment rien de sur ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Avec les deux scènes en route, pas de soucis sur la première mais voici le debug de la seconde:

[DEBUG] 16:44:13: Démarrage du script : 28/02/2016 16:44:13
[DEBUG] 16:44:13: line 50: attempt to concatenate field '?' (a nil value)
[DEBUG] 16:44:19: Démarrage du script : 28/02/2016 16:44:19
[DEBUG] 16:44:19: line 50: attempt to concatenate field '?' (a nil value)

Je n'ai pas compris à  quoi sert cette deuxième scène. Je n'ai pas encore ajouté de troisième FGRGB.

J'ai aussi cru remarqué, mais c'est indépendant de cette nouvelle scène, que si une voiture reste entre les cellules plus que la tempo de 15 secondes, les bandeaux restent tout de même bloqués sur le programme 546.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @did,

 

C'est une autre scene, en fait qui ferait la meme chose que la 1ere scene mais en se passant des variables globales et en mettant autant de RGB que l'on veut.

 

Erreur des les 1ers Debugs ;-)

--[[
%% properties
208 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545}
local ProgRGB = 546
---------------
 
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
 
-- fonction split ----
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
----------
 
 
for i = 1, #id_RGBs do
    -- Recup Couleur et programme des RGBs
    local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
    local Prog = fibaro:getValue(id_RGBs[i], "currentProgramID")
 
    -- Debug valeur result et prog
    fibaro:debug("Couleur : " ..(id_RGBs[i].. " : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme : " ..id_RGBs[i] " : " ..Prog[i])
 
    -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
    fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB)
    fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
 
    -- Tempo de 15 secs
    fibaro:debug("tempo de 15 secs")
    fibaro:sleep(15*1000)
 
    -- Remise prog/couleur des RGBs en cours avant activation cellule 208
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[i][1] == "0" and result[i][2] == "0" and result[i][3] == "0" and result[i][4] == "0") and (tonumber(Prog[i]) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog[i])
            fibaro:debug("Prog : " ..Prog[i].. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[i][1], result[i][2], result[i][3], result[i][4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

Pour la 1ere scene faudrait reussir a contourner les 15 secs alors ?

 

SI jamais tu testes la 2eme scene,  essaie de le faire en commentant le 208 value de la scene qui fonctionne. pour eviter que les 2 scenes se lancent en meme temps.

Partager ce message


Lien à poster
Partager sur d’autres sites

 J'ai décoché active pour que la première scène ne tourne pas et avec cette nouvelle, ça ne démarre pas.

[DEBUG] 23:14:16: line 52: ')' expected (to close '(' at line 51) near 'fibaro'
[DEBUG] 23:14:18: line 52: ')' expected (to close '(' at line 51) near 'fibaro'

Partager ce message


Lien à poster
Partager sur d’autres sites

re,

 

et ben oops, une parenthese de trop s'etait glissée dans le code lol

--[[
%% properties
208 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545}
local ProgRGB = 546
---------------
 
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
 
-- fonction split ----
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
----------
 
 
for i = 1, #id_RGBs do
    -- Recup Couleur et programme des RGBs
    local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
    local Prog = fibaro:getValue(id_RGBs[i], "currentProgramID")
 
    -- Debug valeur result et prog
    fibaro:debug("Couleur : " ..id_RGBs[i].. " : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme : " ..id_RGBs[i] " : " ..Prog[i])
 
    -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
    fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB)
    fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
 
    -- Tempo de 15 secs
    fibaro:debug("tempo de 15 secs")
    fibaro:sleep(15*1000)
 
    -- Remise prog/couleur des RGBs en cours avant activation cellule 208
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[i][1] == "0" and result[i][2] == "0" and result[i][3] == "0" and result[i][4] == "0") and (tonumber(Prog[i]) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog[i])
            fibaro:debug("Prog : " ..Prog[i].. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[i][1], result[i][2], result[i][3], result[i][4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

Partager ce message


Lien à poster
Partager sur d’autres sites

Non plus

[DEBUG] 10:33:25: Démarrage du script : 29/02/2016 10:33:25
[DEBUG] 10:33:25: Couleur : 239 : 0,0,0,0
[DEBUG] 10:33:25: line 52: attempt to call field '?' (a number value)
[DEBUG] 10:33:28: Démarrage du script : 29/02/2016 10:33:28
[DEBUG] 10:33:28: Couleur : 239 : 0,0,0,0
[DEBUG] 10:33:28: line 52: attempt to call field '?' (a number value)

Partager ce message


Lien à poster
Partager sur d’autres sites

au moins avec le debug, j'arrive presque à  comprendre ou je me trompe, mais je pige qd meme pas tout

 

Au fait, merci did

--[[
%% properties
208 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545}
local ProgRGB = 546
---------------
 
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
 
-- fonction split ----
 
function split(s, pattern, maxsplit)
  local pattern = pattern or ' '
  local maxsplit = maxsplit or -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  return t
end
----------
 
 
for i = 1, #id_RGBs do
    -- Recup Couleur et programme des RGBs
    local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
    local Prog = fibaro:getValue(id_RGBs[i], "currentProgramID")
 
    -- Debug valeur result et prog
    fibaro:debug("Couleur : " ..id_RGBs[i].. " : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("Programme : " ..id_RGBs[i] " : " ..Prog)
 
    -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
    fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB)
    fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
 
    -- Tempo de 15 secs
    fibaro:debug("tempo de 15 secs")
    fibaro:sleep(15*1000)
 
    -- Remise prog/couleur des RGBs en cours avant activation cellule 208
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[i][1] == "0" and result[i][2] == "0" and result[i][3] == "0" and result[i][4] == "0") and (tonumber(Prog[i]) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog[i])
            fibaro:debug("Prog : " ..Prog[i].. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[i][1], result[i][2], result[i][3], result[i][4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

Partager ce message


Lien à poster
Partager sur d’autres sites

×