Aller au contenu
pepite

Aide Code Lua Rgb

Recommended Posts

 Quand tu parlais de la parenthèse, j'ai vu la différence mais là  sur la ligne 52, je ne vois toujours pas.

[DEBUG] 11:33:59: Démarrage du script : 29/02/2016 11:33:59
[DEBUG] 11:34:00: Couleur : 239 : 0,0,0,0
[DEBUG] 11:34:00: line 52: attempt to call field '?' (a number value)
[DEBUG] 11:34:01: Démarrage du script : 29/02/2016 11:34:01
[DEBUG] 11:34:02: Couleur : 239 : 0,0,0,0
[DEBUG] 11:34:02: line 52: attempt to call field '?' (a number value)

Partager ce message


Lien à poster
Partager sur d’autres sites

ah oui moi non plus

je l'ai force en nombre peut-etre

--[[
%% 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 = tonumber(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] " : " tonumber(..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

 Toujours rien.

[DEBUG] 13:09:57: line 52: ')' expected near 'tonumber'
[DEBUG] 13:09:59: line 52: ')' expected near 'tonumber'

Partager ce message


Lien à poster
Partager sur d’autres sites

je comprends pas ce qu'elle a cette ligne

un simple debug

--[[
%% 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 = tonumber(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

 Je nage depuis longtemps (même plutôt noyé).

[DEBUG] 13:35:38: Démarrage du script : 29/02/2016 13:35:38
[DEBUG] 13:35:38: Couleur : 239 : 0,0,0,0
[DEBUG] 13:35:38: line 52: attempt to call field '?' (a number value)
[DEBUG] 13:35:39: Démarrage du script : 29/02/2016 13:35:39
[DEBUG] 13:35:39: Couleur : 239 : 0,0,0,0
[DEBUG] 13:35:39: line 52: attempt to call field '?' (a number value)

Partager ce message


Lien à poster
Partager sur d’autres sites

et comme ca :

--[[
%% 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 = tonumber(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)
    fibaro:debug(tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID")) " de prog pour : " ..id_RGBs[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[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog)
            fibaro:debug("Prog : " ..Prog.. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

Partager ce message


Lien à poster
Partager sur d’autres sites

 C'est ce qu'il me propose, bon on passe à  la suivante.

[DEBUG] 22:35:45: Démarrage du script : 29/02/2016 22:35:45
[DEBUG] 22:35:45: Couleur : 239 : 0,0,0,0
[DEBUG] 22:35:45: line 53: attempt to call a number value
[DEBUG] 22:35:46: Démarrage du script : 29/02/2016 22:35:46
[DEBUG] 22:35:46: Couleur : 239 : 0,0,0,0
[DEBUG] 22:35:46: line 53: attempt to call a number value

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors ça avance ou il faut que je commande un module rgb car ça j'ai pas en stock lol

Envoyé de mon SM-G900F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

 Salut @mprinfo,

Que mettrais tu pour ces lignes de debug récalcitrantes?

@pepite,

Dans ma lancée, j'ai commenté la ligne 53 et enfin ça s'allume mais avec un allumé et l'autre éteint, ce dernier passe au programme 546 plus de 5 secondes après l'autre et ensuite ça reste bloqué sur le prog546.

Partager ce message


Lien à poster
Partager sur d’autres sites

un tonumber dans un debug ? je vois pas trop l’intérêt ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 Pardon, j'ai oublié le debug.

[DEBUG] 22:58:34: Démarrage du script : 29/02/2016 22:58:34
[DEBUG] 22:58:34: Couleur : 239 : 0,0,0,0
[DEBUG] 22:58:34: Mise des RGBs sur Programme : 546
[DEBUG] 22:58:34: tempo de 15 secs
[DEBUG] 22:58:37: Démarrage du script : 29/02/2016 22:58:37
[DEBUG] 22:58:37: Couleur : 239 : 0,0,0,0
[DEBUG] 22:58:37: Mise des RGBs sur Programme : 546
[DEBUG] 22:58:37: tempo de 15 secs
[DEBUG] 22:58:49: Remise valeur précédente des RGBs
[DEBUG] 22:58:49: Prog : 6 sur 239
[DEBUG] 22:58:49: Couleur : 545 : 0,0,0,0
[DEBUG] 22:58:49: Mise des RGBs sur Programme : 546
[DEBUG] 22:58:49: tempo de 15 secs
[DEBUG] 22:58:52: Remise valeur précédente des RGBs
[DEBUG] 22:58:52: Prog : 546 sur 239
[DEBUG] 22:58:52: Couleur : 545 : 0,0,0,0
[DEBUG] 22:58:52: Mise des RGBs sur Programme : 546
[DEBUG] 22:58:52: tempo de 15 secs
[DEBUG] 22:59:04: Remise valeur précédente des RGBs
[DEBUG] 22:59:04: Couleur sur : 545
[DEBUG] 22:59:07: Remise valeur précédente des RGBs
[DEBUG] 22:59:07: Prog : 546 sur 545

On teste, il n'y en avait pas avant.

Partager ce message


Lien à poster
Partager sur d’autres sites

pour la ligne 52

fibaro:debug("Programme : " ..id_RGBs[i] " : " ..Prog)

je pense que c'est mieux comme cela

fibaro:debug("Programme : " ..id_RGBs[i].. " : " ..Prog)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Merci @mprinfo,

à‡a passe avec cette ligne de debug, j'ai aussi supprimé la ligne 53 avec le tonumber, ça marche aussi mais les deux bandeaux ne démarrent pas en même temps mais à  la suite: quand le 239 a terminer de clignoter, le 545 commence et revient bien sur son programme en cours.

--[[
%% 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 = tonumber(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[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog)
            fibaro:debug("Prog : " ..Prog.. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end

Partager ce message


Lien à poster
Partager sur d’autres sites

 Et j'ai encore oublié le debug:

[DEBUG] 23:52:21: Démarrage du script : 29/02/2016 23:52:21
[DEBUG] 23:52:21: Couleur : 239 : 0,0,0,0
[DEBUG] 23:52:21: Programme : 239 : 0
[DEBUG] 23:52:21: Mise des RGBs sur Programme : 546
[DEBUG] 23:52:21: tempo de 15 secs
[DEBUG] 23:52:36: Remise valeur précédente des RGBs
[DEBUG] 23:52:36: Couleur sur : 239
[DEBUG] 23:52:36: Couleur : 545 : 0,0,0,0
[DEBUG] 23:52:36: Programme : 545 : 6
[DEBUG] 23:52:36: Mise des RGBs sur Programme : 546
[DEBUG] 23:52:36: tempo de 15 secs
[DEBUG] 23:52:51: Remise valeur précédente des RGBs
[DEBUG] 23:52:51: Prog : 6 sur 545

Partager ce message


Lien à poster
Partager sur d’autres sites

ah put..bien vu @mprinfo, j'vais oublie les 2 points lol

 

le boulet hihihih

pourtant j'ai regarde et relu plein de fois, je ne voyais vraiment pas lol

 

 

Cool ;-)

 

Bon, je pige pas pourquoi 5 secs après ? ce serait pas 15 secs apres ?

 

Dansla boucle, il passe le 1er ID, le 239, :

le passe en 546, puis le sleep, puis le remet à  la valeur précédente ?

 

Commente le tempo de 15 secs, ca devrait etre bon je pense,

 

après si ca fonctionne on le sortira de la boucle

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bizarre, ils ne sont pas passés en 546

[DEBUG] 10:40:40: Démarrage du script : 01/03/2016 10:40:40
[DEBUG] 10:40:40: Couleur : 239 : 0,0,0,0
[DEBUG] 10:40:40: Programme : 239 : 6
[DEBUG] 10:40:40: Mise des RGBs sur Programme : 546
[DEBUG] 10:40:40: Remise valeur précédente des RGBs
[DEBUG] 10:40:40: Prog : 6 sur 239
[DEBUG] 10:40:40: Couleur : 545 : 0,0,0,0
[DEBUG] 10:40:40: Programme : 545 : 0
[DEBUG] 10:40:40: Mise des RGBs sur Programme : 546
[DEBUG] 10:40:40: Remise valeur précédente des RGBs
[DEBUG] 10:40:41: Couleur sur : 545
[DEBUG] 10:40:42: Démarrage du script : 01/03/2016 10:40:42
[DEBUG] 10:40:42: Couleur : 239 : 0,0,0,0
[DEBUG] 10:40:42: Programme : 239 : 6
[DEBUG] 10:40:42: Mise des RGBs sur Programme : 546
[DEBUG] 10:40:42: Remise valeur précédente des RGBs
[DEBUG] 10:40:42: Prog : 6 sur 239
[DEBUG] 10:40:42: Couleur : 545 : 0,0,0,0
[DEBUG] 10:40:42: Programme : 545 : 0
[DEBUG] 10:40:42: Mise des RGBs sur Programme : 546
[DEBUG] 10:40:42: Remise valeur précédente des RGBs
[DEBUG] 10:40:42: Couleur sur : 545

Partager ce message


Lien à poster
Partager sur d’autres sites

sans le sleep, ca a du enchainer : 546 puis valeur précédente, on va tenter autre chose alors ;-)

 

Comme ceci, peut-etre plus coherent :

1- recup des valeurs en cours sur les RGBs puis mise sur porg alerte : 546

2- sleep de 15 secondes

3- Remise des valeurs précéentes sur les RGBs

--[[
%% 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 = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID"))
 
    -- Debug valeur result et prog
    fibaro:debug("RGB num : " ..id_RGBs[i].. " avec Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("RGB num " ..id_RGBs[i].. "sur le Programme" ..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)
end

 -- 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
for i = 1, #id_RGBs do
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog)
            fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end
Modifié par pepite

Partager ce message


Lien à poster
Partager sur d’autres sites

 Là , le prog 546 démarre sur les deux bandeaux mais ne s'arrêtent plus.

[DEBUG] 11:31:08: Démarrage du script : 01/03/2016 11:31:08
[DEBUG] 11:31:08: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 11:31:08: RGB num 239sur le Programme6
[DEBUG] 11:31:08: Mise des RGBs sur Programme : 546
[DEBUG] 11:31:08: RGB num : 545 avec Couleur : 0,0,0,0
[DEBUG] 11:31:08: RGB num 545sur le Programme0
[DEBUG] 11:31:08: Mise des RGBs sur Programme : 546
[DEBUG] 11:31:08: tempo de 15 secs
[DEBUG] 11:31:09: Démarrage du script : 01/03/2016 11:31:09
[DEBUG] 11:31:09: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 11:31:09: RGB num 239sur le Programme546
[DEBUG] 11:31:09: Mise des RGBs sur Programme : 546
[DEBUG] 11:31:09: RGB num : 545 avec Couleur : 0,0,0,0
[DEBUG] 11:31:09: RGB num 545sur le Programme546
[DEBUG] 11:31:09: Mise des RGBs sur Programme : 546
[DEBUG] 11:31:09: tempo de 15 secs
[DEBUG] 11:31:23: Remise valeur précédente des RGBs
[DEBUG] 11:31:23: line 67: attempt to index global 'result' (a nil value)
[DEBUG] 11:31:24: Remise valeur précédente des RGBs
[DEBUG] 11:31:24: line 67: attempt to index global 'result' (a nil value)

Partager ce message


Lien à poster
Partager sur d’autres sites

ah oui normal, la variable result et prog sont declarées dans la 1ere boucle, donc il ne retrouve pas la valeur a remettre ;-)

 

Ceci ? Test numero 895 654 ;-)

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 = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID"))
    
    -- Debug valeur result et prog
    fibaro:debug("RGB num : " ..id_RGBs[i].. " avec Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
    fibaro:debug("RGB num " ..id_RGBs[i].. " sur le Programme " ..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)
end

 -- 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
for i = 1, #id_RGBs do
    -- Recup Couleur et programme des RGBs
    local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
    local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID"))
    
    fibaro:debug("Remise valeur précédente des RGBs")
        if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then
            fibaro:call(id_RGBs[i], "startProgram", Prog)
            fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i])
        else
            fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
            fibaro:debug("Couleur sur : " ..id_RGBs[i])
        end
end
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Si tu le dis, mais ils ne s'éteignent pas.

[DEBUG] 13:03:29: Démarrage du script : 01/03/2016 13:03:29
[DEBUG] 13:03:29: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 13:03:29: RGB num 239 sur le Programme 6
[DEBUG] 13:03:29: Mise des RGBs sur Programme : 546
[DEBUG] 13:03:29: RGB num : 545 avec Couleur : 0,0,0,0
[DEBUG] 13:03:29: RGB num 545 sur le Programme 0
[DEBUG] 13:03:29: Mise des RGBs sur Programme : 546
[DEBUG] 13:03:29: tempo de 15 secs
[DEBUG] 13:03:30: Démarrage du script : 01/03/2016 13:03:30
[DEBUG] 13:03:30: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 13:03:30: RGB num 239 sur le Programme 546
[DEBUG] 13:03:30: Mise des RGBs sur Programme : 546
[DEBUG] 13:03:30: RGB num : 545 avec Couleur : 0,0,0,0
[DEBUG] 13:03:30: RGB num 545 sur le Programme 546
[DEBUG] 13:03:30: Mise des RGBs sur Programme : 546
[DEBUG] 13:03:30: tempo de 15 secs
[DEBUG] 13:03:44: Remise valeur précédente des RGBs
[DEBUG] 13:03:44: Prog 546 sur 239
[DEBUG] 13:03:44: Remise valeur précédente des RGBs
[DEBUG] 13:03:44: Prog 546 sur 545
[DEBUG] 13:03:45: Remise valeur précédente des RGBs
[DEBUG] 13:03:45: Prog 546 sur 239
[DEBUG] 13:03:45: Remise valeur précédente des RGBs
[DEBUG] 13:03:45: Prog 546 sur 545

Partager ce message


Lien à poster
Partager sur d’autres sites

hihi ah ben oui mais non suis bete, si on fait le result et prog dans la 2eme boucle, lorsqu'il remet les valeurs precedentes il recupere le 546, soit ce qu'il y a en cours sur les RGB

hihi

 

je modifie encors et toujours

si t'en as marre n'hesite pas a le dire ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Non non, comment pourrais-je avoir marre que quelqu'un se démène à  faire fonctionner un script que je ne pourrais pas faire seul?

J'ai l'impression que dans les clignotements (après le sleep), il figeait sur la couleur du 546 puis rebouclais sur le prog 546 (clignotement en vert pour ce programme).

Partager ce message


Lien à poster
Partager sur d’autres sites

oui c'est cela, vu que j'avais modifie en faisant 2 boucles "For..do..end" avec les "local result et local prog" il a recup les 1eres valeurs precedentes, mis le prog 546, recupere de nouveau les valeurs en cours soit 546, puis a remis le prog 546, les valeurs précédentes lol

 

on est pas loin, mais je n'arrive pas à  bien mettre le tempo pour ne pas que les bandeaux clignotent l'1 après l'autre.

 

J'ai changé le style avec des fonctions et ai utilisé un settimeout, 1 premiere pour  moi


--[[
%% 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
----------

--------------function GetPutValueRGB----
function GetPutValueRGBs(id)
     for i = 1, #id_RGBs do
        -- Recup Couleur et programme des RGBs
        local result = split(fibaro:getValue(id_RGBs[i], "color"), ',')
        local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID"))
    
        -- Debug valeur result et prog
        fibaro:debug("RGB num : " ..id_RGBs[i].. " avec Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
        fibaro:debug("RGB num " ..id_RGBs[i].. "sur le Programme" ..Prog)
            
        settimeout(
            function()
            fibaro:debug("Remise valeur précédente des RGBs")
                if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then
                    fibaro:call(id_RGBs[i], "startProgram", Prog)
                    fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i])
                else
                    fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
                    fibaro:debug("Couleur sur : " ..id_RGBs[i])
                end
        end, 15000) --tempo 15 secs
     end
end
----------

function PutAlerteRGBs(id)
    for i = 1, #id_RGBs do
         -- 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)
    end
end
-------------

GetPutValueRGBs()
PutAlerteRGBs()

   


Modifié par pepite

Partager ce message


Lien à poster
Partager sur d’autres sites

 Ce coup ci, ça ne démarre pas, c'est pile la ligne qui bloque (le settimeout).

[DEBUG] 15:33:02: Démarrage du script : 01/03/2016 15:33:02
[DEBUG] 15:33:02: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 15:33:02: RGB num 239sur le Programme6
[DEBUG] 15:33:02: line 56: attempt to call global 'settimeout' (a nil value)
[DEBUG] 15:33:03: Démarrage du script : 01/03/2016 15:33:03
[DEBUG] 15:33:04: RGB num : 239 avec Couleur : 0,0,0,0
[DEBUG] 15:33:04: RGB num 239sur le Programme6
[DEBUG] 15:33:04: line 56: attempt to call global 'settimeout' (a nil value)

Partager ce message


Lien à poster
Partager sur d’autres sites

×