Om een simpele drukknop te gebruiken om 2 toestellen aan te sturen moet je een onderscheid kunnen maken tussen een “Single Click” = éénmaal drukken en een “Double Click” = tweemaal kort achtereen drukken.
Indien de simpele drukknop geen twee of meer aparte profielen ondersteunt (zoals bvb de NodOn Soft Remote wel doet) kan je met wat programmeren in LUA toch wel zo iets benaderen.
Hiertoe moet je 3 globale variabelen declareren (in het “Variables Panel”) per schakelaar en 2 LUA scenes maken.
1. Globale Variabelen
Maak er 3 aan; voor de naamgeving heb ik hier een conventie gebruikt om ze later gemakkelijk te identificeren. Vervang {{id1}} door het ID van de schakelaar/drukknop, {{id2}} door het ID van de eerste module die je wil schakelen met een enkele druk en {{id3}} door het ID van de derde module die je met dubbel drukken wil schakelen.
- Push{{id1}}_1
- Push{{id1}}_2
- Push{{id1}}_3
2. LUA script voor het druk-event
AdvDrukknop{{id1}}_DRUK
--[[
%% properties
{{id1}} value
%% events
%% globals
--]]
local id1={{id1}} --schakelaar
local id2={{id2}} --advanced drukknop scene
fibaro:debug("Button Push Time: "..tonumber(os.time()))
fibaro:setGlobal("Push"..id1.."_3",fibaro:getGlobalValue("Push"..id1.."_2"))
fibaro:setGlobal("Push"..id1.."_2",fibaro:getGlobalValue("Push"..id1.."_1"))
fibaro:setGlobal("Push"..id1.."_1",tonumber(os.time()))
fibaro:sleep(200)
fibaro:startScene(id2)
3. LUA script voor de schakeling
--[[ %% properties %% events %% globals --]] local id1=37 -- de schakelaar local id2=34 -- module 1 - enkele klik local id3=48 -- module 2 - dubbele klik local p3=fibaro:getGlobalValue("Push"..id1.."_3") local p2=fibaro:getGlobalValue("Push"..id1.."_2") local p1=fibaro:getGlobalValue("Push"..id1.."_1") fibaro:debug('Change detected in '..fibaro:getName(id1)..' with id '..id1) local db=10 local d1=p1-p2 local d2=p2-p3 fibaro:debug('Delta 1: '..d1..' Delta 2: '..d2) if ((d10)) then fibaro:debug("Double click on "..fibaro:getName(id1).." detected ") fibaro:setGlobal("Push"..id1.."_1",0) fibaro:setGlobal("Push"..id1.."_2",0) fibaro:setGlobal("Push"..id1.."_3",0) --basis drukknop routine bij double click (enkel toggle, geen overeenkomst met indicator) local currentstate = fibaro:getValue(id3, 'value') fibaro:debug('Current state of switch '..fibaro:getName(id3)..' : '..currentstate) if (currentstate == "0") then fibaro:call(id3, "turnOn") fibaro:debug("Turning ON switch "..fibaro:getName(id3)) else fibaro:call(id3, "turnOff") fibaro:debug("Turning OFF switch "..fibaro:getName(id3)) end elseif ((d1>=db) and (d2==0)) then fibaro:debug("Single click on "..fibaro:getName(id1).." detected ") fibaro:setGlobal("Push"..id1.."_1",0) fibaro:setGlobal("Push"..id1.."_2",0) fibaro:setGlobal("Push"..id1.."_3",0) --basis drukknop routine bij single click local currentstate = fibaro:getValue(id2, 'value') fibaro:debug('Current state of switch '..fibaro:getName(id2)..' : '..currentstate) if ((currentstate == "0") and (fibaro:getValue(id1,'value')=="1")) then fibaro:call(id2, "turnOn") fibaro:debug("Turning ON switch "..fibaro:getName(id2)) else fibaro:call(id2, "turnOff") fibaro:debug("Turning OFF switch "..fibaro:getName(id2)) end else fibaro:setGlobal("Push"..id1.."_1",0) fibaro:setGlobal("Push"..id1.."_2",0) fibaro:setGlobal("Push"..id1.."_3",0) end