Dieses Thema wurde in unserer Facebook Gruppe behandelt. Da es hier besser wiederzufinden und zu kommentieren ist, nochmal im Detail.
Das Posting ist hier zu finden.
In dem Bild siehst Du die SceneActivation wenn du sie Dir als Blockszene zusammen klickst. Die Leinwand ist dein RollerShutter. Die Aussage dieser Szene ist, wenn 2 mal der Eingang S1 geklickt wird, soll die Szene Pin Parse gestartet werden. Du brauchst aber keine Szene Starten, sondern kannst dies auch für ein Kommando (ein oder ausschalten etc.) benutzen. Wenn Du diese Szene dann Du diese Szene dann in Lua konvertierst (HC2) bekommst Du einen ähnlichen Code wie den, den Georg Hauer gepostet hat.
Der konvertierte Code ist der nächste Screenshot.
Die SceneID´s des RollerShutters findet Ihr hier
Der Code hier ist ein Beispiel für ein Kommando mit Gegenzustand. Es wird also auf einem 3xKlick auf Eingang S2 geprüft ob die RGB Leiste an oder aus ist. Der jeweilige Gegenzustand wird dann geschaltet.
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==26)
then fibaro:debug("3 click s2 "..name);
local rgb2 = tonumber(fibaro:getValue(RGB2, "value"));
if (rgb2 > 0) then
fibaro:call(RGB2, "turnOff");
else
fibaro:call(RGB2, "turnOn");
fibaro:call(RGB2, "setColor", "124","31","0","48");
end
Eine gesamte Szene (in meinem Fall die Standard-Szene für alle meine Dimmer2)
RGB1 und RGB2 sind 2 Stripes in einem Fenster.
Die ID 13 ist in diesem Fall ein Dimmer, könnte aber auch der Rollershutter sein.
--[[
%% properties
13 sceneActivation
%% globals
--]]
local id= 13;
local RGB1 = 16
local RGB2 = 23
local name = fibaro:getName(id)
fibaro:debug(name);
local name = tonumber(fibaro:getValue(id, "sceneActivation"));
if (tonumber(fibaro:getValue(id, "sceneActivation"))==16)
then
fibaro:debug("1 click s1 "..name);
-- fibaro:setGlobal("sbzw", "1");
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==26)
then
fibaro:debug("1 click s2 "..name);
local rgb = tonumber(fibaro:getValue(RGB1, "value"));
if (rgb > 0) then
fibaro:call(RGB1, "turnOff");
else
fibaro:call(RGB1, "turnOn");
fibaro:call(RGB1, "setColor", "0","0","0","255");
end
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==25)
then
fibaro:debug("3 click s2 "..name);
local rgb2 = tonumber(fibaro:getValue(RGB2, "value"));
if (rgb2 > 0) then
fibaro:call(RGB2, "turnOff");
else
fibaro:call(RGB2, "turnOn");
fibaro:call(RGB2, "setColor", "124","31","0","48");
end
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==15)
then
fibaro:debug("3 click s1 "..name);
--fibaro:call(241, "turnOn");
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==14)
then
fibaro:debug("2 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==24)
then
fibaro:debug("2 click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==12)
then
fibaro:debug("hold click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==13)
then
fibaro:debug("release click s1 "..name);
--fibaro:call(241, "turnOff");
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==22)
then
fibaro:debug("hold click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==23)
then
fibaro:debug("release click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==10)
then
fibaro:debug("change from turn off to turn on s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==11)
then
fibaro:debug("change from turn on to turn off s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==20)
then
fibaro:debug("change from turn off to turn on s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==21)
then
fibaro:debug("change from turn on to turn off s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==17)
then
fibaro:debug("up "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==18)
then
fibaro:debug("down "..name);
end;