Aller au contenu
pepite

Aide Code Lua Rgb

Recommended Posts

ce n'est pas moi mais @did  :60:  :60:  :60: 

 

C'est certainement un programme personnalisé ;-).

Attendons qu'il le confirme ;-)

 

Après tu peux mettre ce que tu veux ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est cool @did ce mets au lua dans peu de temps il va etre au top en électricité icône et lua lol

Envoyé de mon SM-G900F en utilisant Tapatalk

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 J'avais à  l'époque, en v3 un FGRGB avec un seul programme d'ajouté qui avait pris le n°6, et récemment en v4, ajouter d'autres FGRGB et j'ai refait des nouveaux programmes (clignotements vert, bleu, jaune, rouge que je vais attribuer à  différents retour d'état: boite aux lettres, passage devant cellules, température congel anormale, etc...) qui ont pris le n° suivant d'Id, le module a pris le 545 et les programmes après le n°6, ont pris 546, 547, 548, etc... Le dernier FGRGB inclus à  l'Id554. J'ai découvert aussi que les programmes lumineux se retrouvent sur tous les modules FGRGB.

J'ai passé le nombre d'instances à  3 car j'avais une notification.

Le message TTS passe bien aussi pendant le clignotement de mes bandeaux donc parfait. Il n'y a pas besoin de retirer les lignes de debug? On attend peut-être que je termine mes tests et que je l'expérimente.

Je n'ai pas suivi pour la "temporisation variabilisée", qu'est-ce que je dois faire?

Merci @pepite.

Partager ce message


Lien à poster
Partager sur d’autres sites

Super pour le TTS @did

 

Alors pour la temporisation de 15 secondes, j'vais rajoute une variable "Tempo" dans les "User Settings" au début de la scène.

Comme tu as testé le TTS, ca a l'air de fonctionner aussi avec la variable "Tempo"

 

Rajout d'une Variable  "Debug" (true/false) dans le "User Settings" pour afficher ou non les Debugs, à  tester ;-)

--[[
%% properties
208 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545} -- liste des IDs des RGBs concernés
local ProgRGB = 546 -- Programme "alerte" souhaité à  mettre sur les RGBs
local Tempo = 15 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes
local Debug = true -- true : affichage dans le debug/false : pas d'affichage
--------------------
 
--------- Limitation à  1 seule instance ---------
if (fibaro:countScenes() > 1) then
fibaro:abort()
end
----------------------------------------------
 
if Debug then
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
end
 
-- 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
        if Debug then
        fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
        fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog)
        end
        
        -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
        if Debug then fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) end
        fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
            
        setTimeout(
            function()
             if Debug then fibaro:debug("Remise des valeurs précédentes sur les RGBs") end
                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)
                    if Debug then fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) end
                else
                    fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
                    if Debug then fibaro:debug("Couleur sur : " ..id_RGBs[i]) end
                end
        end, Tempo*1000) --tempo
     end
end
----------
 
--- Message TTS ----
fibaro:call(535, "pressButton", 2)
 
-- Lancement fonction ---
GetPutValueRGBs()
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

  Pas mal non plus la variable Tempo, j'ai essayé 45 secondes et ça fonctionne. :60: :60: :60:

[DEBUG] 23:53:19: Démarrage du script : 02/03/2016 23:53:19
[DEBUG] 23:53:19: RGB num 239 avait comme Couleur : 0,0,0,0
[DEBUG] 23:53:19: RGB num 239 était sur le Programme 6
[DEBUG] 23:53:19: Mise des RGBs sur Programme : 546
[DEBUG] 23:53:19: RGB num 545 avait comme Couleur : 0,0,0,0
[DEBUG] 23:53:19: RGB num 545 était sur le Programme 0
[DEBUG] 23:53:19: Mise des RGBs sur Programme : 546
[DEBUG] 23:53:19: RGB num 554 avait comme Couleur : 0,0,0,0
[DEBUG] 23:53:19: RGB num 554 était sur le Programme 6
[DEBUG] 23:53:19: Mise des RGBs sur Programme : 546
[DEBUG] 23:53:49: Remise des valeurs précédentes sur les RGBs
[DEBUG] 23:53:49: Prog 6 sur 239
[DEBUG] 23:53:49: Remise des valeurs précédentes sur les RGBs
[DEBUG] 23:53:49: Couleur sur : 545
[DEBUG] 23:53:49: Remise des valeurs précédentes sur les RGBs
[DEBUG] 23:53:49: Prog 6 sur 554

Me reste à  tester demain l'arrêt prolongé devant les cellules et le debug sur False.

Merci @pepite.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Petit test, ajout d'une fonction de Debug avec des couleurs pour faire beau ;-) si Debug = true

 

Pas sur de la syntaxe ;-)

--[[
%% properties
208 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545, 554} -- liste des IDs des RGBs concernés
local ProgRGB = 546 -- Programme "alerte" souhaité à  mettre sur les RGBs
local Tempo = 15 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes
local Debug = true -- true : affichage dans le debug/false : pas d'affichage
--------------------
 
--------- Limitation à  1 seule instance ---------
if (fibaro:countScenes() > 1) then
fibaro:abort()
end
----------------------------------------------

---- Function Debug ------------
function Debug( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
end
------------------

 
if Debug then
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
Debug("Green", "Démarrage du script : " ..currentdate)
end


 
-- 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
        if Debug then
        Debug("Red", "RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
        Debug("Red", "RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog)
        end
        
        -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
        if Debug then Debug("Green", "Mise des RGBs sur Programme : " ..ProgRGB) end
        fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
            
        setTimeout(
            function()
             if Debug then Debug("Green", "Remise des valeurs précédentes sur les RGBs") end
                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)
                    if Debug then Debug("Red", "Prog " ..Prog.. " sur " ..id_RGBs[i]) end
                else
                    fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
                    if Debug then Debug("Red", "Couleur sur : " ..id_RGBs[i]) end
                end
        end, Tempo*1000) --tempo
     end
end
----------
 
--- Message TTS ----
if Debug then Debug("Green", "Message TTS") end
fibaro:call(535, "pressButton", 2)
 
-- Lancement fonction ---
GetPutValueRGBs()

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bon, j'ai enfin testé le stationnement prolongé devant les cellules et le programme 546 se lance et se coupe au bout de la tempo donc c'est bon pour moi.

Le debug sur False est OK aussi donc parfait @pepite et merci. :13:

Je viens aussi de décliner cette même scène pour le capteur de ma boite aux lettres avec un clignotement des bandeaux dans une autre couleur (nouveau programme RGB) et c'est bon. :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite

 

Il va falloir faire un beau tuto/explications des options pour les noobs (dont moi) :D:P

Partager ce message


Lien à poster
Partager sur d’autres sites

 Encore une petite question:

Les lignes qui surveillent le FGBS (Id 208) ne déclenchent que sur un value=1 ou un changement d'état parce que pour ma boite aux lettres, le paramètre 2 du FGBS (délai de l'annulation de l'alarme) est à  14400 secondes, cela me permet de laisser l'icône actif pendant ces 4 heures et le problème, c'est qu'au bout des 4 heures, les bandeaux clignotent quand l'icône revient au repos.

Partager ce message


Lien à poster
Partager sur d’autres sites

@domodial,

 

Très simple : ca permet d'avoir une alerte visuelle avec des RGBs en fonction d'un déclencheur quelconque, module, variable globale...enfin tout ce qui peut-etre utilisé en déclencheur.

 -- l'état des RGBS précédant l'alerte est enregistre et remis à  la fin de l'alerte visuelle.

 

A modifier donc dans le script :

 - le déclencheur, ici 208 value pour les besoins de @Did

 - les parametres "User Settings" soit :

------ User settings -----
local id_RGBs = {239, 545, 554} -- liste des IDs des RGBs concernéslocal 
ProgRGB = 546 -- Programme "alerte" souhaité à  mettre sur les RGBs
local Tempo = 15 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes
local Debug = true -- true : affichage dans le debug/false : pas d'affichage

 1- local id_RGBs : la liste des RGBs devant être allumés pour l'alerte visuelle

 2- ProgRGB : le programme voulu à  mettre sur les RGBS "ALERTE"

 3- Tempo : duree d'allumage de l'alerte visuelle

 4- Debug : true/false, affichage ou non dans le debug

 

@Did

la scene reagit avec le changement d'etat de 208, c'est--dire le passage de 0 à  1

effectivement si tu laisses une duree, je pensais pas que le passage de 1 à  0 provoquait qqch pour la boite. je ne savais pas que cela reagissait comme ceci

A reflechir comment le contourner, la de suite je t'avoue je ne vois pas ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bonjour @pepite,

Le déclencheur (Id 208) n'est à  déclarer que dans l'entête?

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Did,

 

Oui c'est le déclencheur de la scene.

A quoi penses tu ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 Non a rien, c'est parce que c'est le seul endroit où j'ai vu un 208 dans le script et je me demandais si j'en avais zappé ailleurs.

Partager ce message


Lien à poster
Partager sur d’autres sites

Moi je dis que vous avez fais du super boulot.   :D

 

Et que ça mériterai un petit Tuto dédié svp...  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

 C'est surtout @pepite a qui revient le mérite. :13:

Je n'ai fais que tester et quelques aller-retour dans la cour. :P

Il faut que je m'installe un bouton relié à  un contact de FGBS près du PC pour mes tests.

Encore un petit truc à  régler avec le délai de l'annulation de l'alarme (paramètre 2 du FGBS) qui redéclenche la scène au terme de ce réglage.

Partager ce message


Lien à poster
Partager sur d’autres sites

je me suis bien eclate ;-) merciiii

 

heuu tuto..heuuu ;-)

 

@Did

faut peut-etre modifier la scene pour la boite aux lettres.

Pourquoi tu laisses l'actif pendant 4h ? 

 

poste ta scene pour la boite aux lettres stp.

Partager ce message


Lien à poster
Partager sur d’autres sites

 C'est pour contrôler facilement à  la tablette au mur si j'ai reçu du courrier pendant mon absence, l'icône reste active pendant ces quatre heures.

La scène est la même que celle des cellules.

--[[
%% properties
66 value
%% globals
--]]

------ User settings -----
local id_RGBs = {239, 545, 554} -- liste des IDs des RGBs concernés
local ProgRGB = 547 -- Programme "alerte" souhaité à  mettre sur les RGBs
local Tempo = 20 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes
local Debug = false -- true : affichage dans le debug/false : pas d'affichage
--------------------
 
--------- Limitation à  1 seule instance ---------
if (fibaro:countScenes() > 1) then
fibaro:abort()
end
----------------------------------------------
 
if Debug then
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
end
 
-- 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
        if Debug then
        fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
        fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog)
        end
        
        -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
        if Debug then fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) end
        fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
            
        setTimeout(
            function()
             if Debug then fibaro:debug("Remise des valeurs précédentes sur les RGBs") end
                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)
                    if Debug then fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) end
                else
                    fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
                    if Debug then fibaro:debug("Couleur sur : " ..id_RGBs[i]) end
                end
        end, Tempo*1000) --tempo
     end
end
----------
 
--- Message TTS ----
fibaro:call(535, "pressButton", 5)
fibaro:call(90, "pressButton", 1)
 
-- Lancement fonction ---
GetPutValueRGBs()

Je m'aperçois que je n'ai pas modifié l'Id 208 dans les lignes commentées.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Et si pas de TSS on peut désactiver les lignes TTS et le VD dans l'entete ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu retires les lignes 87 & 88 mais rien dans l'entête.

Partager ce message


Lien à poster
Partager sur d’autres sites

et du coup dans l'entete c'est quoi ? Un module ou le numéro de la scène ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 Dans la scène juste au dessus, le 66 value, c'est le contact de mon FGBS dans ma boite aux lettres, c'est le seul endroit à  renseigner mais on ne peut pas en mettre plusieurs.

Partager ce message


Lien à poster
Partager sur d’autres sites

hum c'est mal barré...

Moi j'ai rien a mettre ici...

Partager ce message


Lien à poster
Partager sur d’autres sites

tu peux mettre ce que tu veux @domodial pou declencher la scene alerte, ca depend de ton besoin, qu'aimerais tu pouvoir faire ?

 

 

 

@Did,

 

Pour contourner le parametre 2 du FGBS, peut-etre comme ceci, à  tester evidemment.

- Laisse le 66 value dans l'entete

- Cree une variable non predefinie : Alerte_Bal

 

L'idée, rajouter des conditions pour que la scene se lance :

  1- l'etat du 66 value

  2- la valeur de la variable globale mise à  jour avec GEA

 lorsque value 66 = 1 alors "Alerte_Bal" = ON

lorsque Value 66 = 0 apres les 4h, GEA regarde et au bout de 5 mins ou moins, met à  jour la variable à  OFF

 

La scene ne se lancera que si value 66 = 1 et que si Alerte_Bal = OFF sinon on avorte ;-)

 

les lignes GEA

-- Si FGBS à  1, variable Alerte_Bal à  ON, donc pendant le 4h, parametre 2 FGBS
GEA.add(id["BAL"], -1, "", {{"Global", "Alerte_Bal", "ON"}})
-- Apres les 4h, si FGBS à  0 pendant 5 mins, variable à  OFF pour éviter le declenchement de la scene au passage de 1 à  0
GEA.add(id["BAL"], 5*60, "", {{"Inverse"}, {"Global", "Alerte_Bal", "OFF"}})

la scene


--[[
%% properties
66 value
%% globals
--]]
 
------ User settings -----
local id_RGBs = {239, 545, 554} -- liste des IDs des RGBs concernés
local ProgRGB = 547 -- Programme "alerte" souhaité à  mettre sur les RGBs
local Tempo = 20 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes
local Debug = false -- true : affichage dans le debug/false : pas d'affichage
--------------------
 
--------- Limitation à  1 seule instance ---------
if (fibaro:countScenes() > 1) then
fibaro:abort()
end
----------------------------------------------
 
if Debug then
local currentdate = os.date("%d/%m/%Y %H:%M:%S")
fibaro:debug("Démarrage du script : " ..currentdate)
end
 
-- 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
        if Debug then
        fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4])
        fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog)
        end
        
        -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB
        if Debug then fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) end
        fibaro:call(id_RGBs[i], "startProgram", ProgRGB)
            
        setTimeout(
            function()
             if Debug then fibaro:debug("Remise des valeurs précédentes sur les RGBs") end
                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)
                    if Debug then fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) end
                else
                    fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4])
                    if Debug then fibaro:debug("Couleur sur : " ..id_RGBs[i]) end
                end
        end, Tempo*1000) --tempo
     end
end
----------
 
--- Message TTS ----
fibaro:call(535, "pressButton", 5)
fibaro:call(90, "pressButton", 1)
 

local Bal = fibaro:getValue(66, "value") > 0
local Alerte_Bal = fibaro:getGlobalValue("Alerte_Bal")
 -- Lancement fonction ---
if (Bal and (Alerte_Bal == "OFF"))  then -- 66 value à  1 et Alerte_Bal à  ON (VG mise à  jour par GEA en focntion etat de 66)
    GetPutValueRGBs()
else
    fibaro:abort()
end

Partager ce message


Lien à poster
Partager sur d’autres sites

 Merci @pepite,

Tant qu'à  créer une variable, autant remettre le paramètre 2 à  0 (comme le 208 des cellules) et mettre à  jour la variable à  l'ouverture de la boite (pour une durée de 4 heures ou même 8), non?

Où même seulement changer l'icône d'un VD et le remettre 4 ou 8 heures après?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui pourquoi pas, avec GEA possible mais tuperdrais le visuel sur ta tablette

Partager ce message


Lien à poster
Partager sur d’autres sites

×