Aller au contenu
Ludoblues

Synchronisation des contrôleurs RGBW

Recommended Posts

Bonjour,

 

Je viens d'être livré d'un appartement acheté sur plan et j'ai décidé d'y apporter une petite touche de domotique.

Je pars donc de 0 dans le domaine, j'ai commencé à chercher un thermostat connecté, puis dans mes recherches je suis remonté à l'existence des box domotique (via Somfy), puis j'ai découvert la Fibaro, et me voilà ici ! 

J'essaye donc de trouver la combinaison d'équipements "parfaite" pour l'installation que je souhaite mettre en place, d'autant plus que je suis en plein travaux !

 

Je compte tout d'abord me prendre un HC2 pour piloter le tout, et 3 contrôleurs RGBW pour piloter 3 zones d'éclairages indirectes 2 rubans à LED et un groupe de 8 LEDs.

Ces 3 zones sont déjà pilotées via un interrupteur commun.


Ce que j'aimerais, c'est de pouvoir "synchroniser" ces 3 zones, c'est à dire pouvoir les piloter ensemble OU de manières distinctes via l'application.

Je ne connais pas encore l'application derrière le HC2 mais en gros la question est de savoir on peut créer 4 "widgets" dans la section luminaires du genre:

  • Zone A (qui correspond au contrôleur RGBW A)
  • Zone B (qui correspond au contrôleur RGBW B)
  • Zone C (qui correspond au contrôleur RGBW C)
  • Combinaison ABC (qui correspond aux contrôleurs RGBW A, B et C) en pilotant les 3 via une même action sur l'application (changement de couleur, extinction etc...)

 

Merci !

Modifié par Ludoblues
Typo

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux contrôler et synchroniser tes leds rgbw en LUA.

 

Voila le site qui m'avait aidé à realiser cette operation :

 

http://www.fibarouk.co.uk/synchronising-rgbw-modules/

 

--[[
%% properties
-- ID RGBW Master 
81 currentProgramID
81 color
%% globals
--]]

-- ID RGBW Master 
local fromID = 81
-- ID RGBW Slave
local toID = 402
 
-- Allows us to set the colour from a string like 'r,g,b,w'
function setTheColour (deviceID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end
 
  fibaro:call(deviceID, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
end
 
local trigger = fibaro:getSourceTrigger()
if (trigger['type'] == 'property') then
  if (trigger['propertyName'] == 'currentProgramID') then
    fibaro:call(toID, 'startProgram', fibaro:getValue(fromID, 'currentProgramID'))
    if (fibaro:getValue(fromID, 'currentProgramID') == '0') then
      setTheColour(toID, fibaro:getValue(fromID, 'color'))
    end
  elseif (trigger['propertyName'] == 'color') then
    if (fibaro:getValue(fromID, 'currentProgramID') == '0') then
      setTheColour(toID, fibaro:getValue(fromID, 'color'))
    end
  end
end

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Voir cet exemple http://www.fibarouk.co.uk/synchronising-rgbw-modules/ et ci-dessous déjà pour trois RGWB.

Et VB pour activer et désactiver la synchronisation (en VD variable  'id_sync' est le numéro de scène avec le code ci-dessous

Sync_RGBW.vfibSync_RGBW.vfib

--[[
%% autostart
%% properties
80 currentProgramID
80 color
%% globals
%% killOtherInstances
--]]
 
local fromID = 80  -- ID of first RGBW controler. Use this for control all 3 together. Remember add number of this RGBW Device in %%properties
local toID1 = 87
local toID2 = 97

print("sync..ing")
-- Allows us to set the colour from a string like "r,g,b,w"
function setTheColour (deviceID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end
 
  fibaro:call(deviceID, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
end
 
local trigger = fibaro:getSourceTrigger()
if (trigger["type"] == "property") then
  if (trigger["propertyName"] == "currentProgramID") then
    fibaro:call(toID1, "startProgram", fibaro:getValue(fromID, "currentProgramID"))
    fibaro:call(toID2, "startProgram", fibaro:getValue(fromID, "currentProgramID"))
    if (fibaro:getValue(fromID, "currentProgramID") == "0") then
      setTheColour(toID1, fibaro:getValue(fromID, "color"))
      setTheColour(toID2, fibaro:getValue(fromID, "color"))
    end
  elseif (trigger["propertyName"] == "color") then
    if (fibaro:getValue(fromID, "currentProgramID") == "0") then
      setTheColour(toID1, fibaro:getValue(fromID, "color"))
      setTheColour(toID2, fibaro:getValue(fromID, "color"))
    end
  end
end

 

Modifié par drboss
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Merci pour vos réponses qui pointent vers un script interessant.
Ce que j'en comprends, c'est qu'un des contrôleurs sert de "master" pour piloter les 3 autres.

 

C'est interessant mais je me demande comment ça se traduit sur l'application (d'un point de vue utilisation), car je veux pouvoir piloter chaque controleur de manière autonome et avoir une 4ème option qui serait le mode synchronisé.
Je précise que je n'ai pas encore acheté le matériel et ne peut donc pas encore tester.

 

@drboss cette possibilité de sync/unsync est interessante, mais comment effectuer ce changement d'état via l'application (le script crée un genre de bouton ON/OFF quelque part ?) ?
Aussi, une fois activé, du coup c'est le bouton permettant de contrôler le contrôleur "master" qui pilote le tout (donc plus possible d'éteindre les LEDs derrière ce contrôleur uniquement à moins de faire une désynchronisation avant ?) ?

 

C'est une bonne nouvelle que ce soit possible mais si c'est bien ça je ne trouve pas ça très pratique...
Je vois dans le script VB que tu proposes qu'il y a une notion de "virtual device", il n'y a pas de possibilité d'avoir un bouton par contrôleur, et d'ajouter un "virtual device" qui serait le "master" et piloterait les 3 contrôleur (et du coup ne plus avoir à switcher entre un mode sync/unsync) ?

Merci !

Modifié par Ludoblues

Partager ce message


Lien à poster
Partager sur d’autres sites

@Ludoblues Vous pouvez utiliser chacun contrôler séparément.
Cependant, si vous modifiez les paramètres du contrôle principal, les autres changeront (si la synchronisation est activée par VD). Changer les réglages du contrôleur auxiliaire ne change pas les autres
Vous pouvez également créer un VD qui peut modifier les paramètres des 4 contrôleurs par exemple: les couleurs RGBW, la luminosité, la mise sous tension, la couleur préférée, l'activation de la couleur ou l'extinction du programme. Vous avez des boutons et des potentiomètres disponibles et vous devez avoir une certaine expérience avec LUA, mais c'est un langage de programmation facile :-)
Ensuite, vous n'avez pas besoin d'utiliser un contrôleur comme "master". Chacun travaille seul ou ensemble contrôlé par VD
Par ailleurs, ce n'est pas le langage VB et LUA

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour votre retour !

 

Pour le VB, je pensais que c'est ce que vous vouliez dire par "VD" mais je viens de comprendre qu'il s'agit de "Virtual Device" !

C'est donc bien ce que j'espérais pouvoir faire.

 

J'ai hate de voir si j'arrive à mettre ça en place, je vous tiendrai au courant une fois équipé !

 

Bonne soirée.

Partager ce message


Lien à poster
Partager sur d’autres sites

×