local deBug = true; local Hueid = 63 local dim_time = 5 -- seconds from min to max dimlevel local dim_step = 10 -- Size of each dimming step on a scale from 0 to 255. Making this too small increases zwave traffic local dimlevel = 255 local button_source=json.encode(sourceTrigger.value.keyId) --fibaro.debug("button_source", button_source) local keyAttribute=json.encode(sourceTrigger.value.keyAttribute) --fibaro.debug("keyAttribute", keyAttribute) if keyAttribute == '"Pressed"' then fibaro.debug("Trigger","SingleClick") if((tonumber(fibaro.getValue(Hueid, 'value'))) > 0) then fibaro.call(Hueid, 'turnOff') else fibaro.call(Hueid, 'turnOn') end -- TrippleClick Brightness til 255 elseif keyAttribute == '"Pressed3"' then fibaro.debug("Trigger","TrippleClick") fibaro.call(Hueid, "changeBrightness", 255) elseif keyAttribute == '"Pressed2"' then fibaro.debug("Trigger","DoubleClick") --fibaro.call(Hueid, "changeBrightness", 80) if(tonumber(fibaro.getValue(Hueid, "brightness")) > 240) then fibaro.call(Hueid, "changeBrightness", 80) elseif ((tonumber(fibaro.getValue(Hueid, "brightness")) > 140) and (tonumber(fibaro.getValue(Hueid, "brightness")) < 240)) then fibaro.call(Hueid, "changeBrightness", 255) else fibaro.call(Hueid, "changeBrightness", 150) end elseif keyAttribute == '"Released"' then fibaro.debug("Trigger","Release") elseif keyAttribute == '"HeldDown"' then fibaro.debug("Trigger","HeldDown") if((tonumber(fibaro.getValue(Hueid, 'value'))) <= 0) then fibaro.call(Hueid, "turnOn") end dimDirection = "up" dimlevel = tonumber(fibaro.getValue(Hueid, "brightness")) fibaro.debug("Hueid",Hueid) fibaro.debug("dimlevel",dimlevel) while true do if dimlevel == 255 then dimDirection = "down" end if dimlevel == 0 then dimDirection = "up" end if dimDirection == "up" then dimlevel = math.min(dimlevel + dim_step,255) else dimlevel = math.max(dimlevel - dim_step,0) end fibaro.call(Hueid, "changeBrightness", dimlevel) -- fibaro.debug('Dimlevel', tostring(dimlevel)) -- Suspends execution of a script for a specified time in milliseconds. -- 3 x 1000 / (255/10) = 120ms/step fibaro.sleep(dim_time*1000/(255/dim_step)) end end { conditions = { { id = 25, isTrigger = true, operator = "==", property = "centralSceneEvent", type = "device", value = { keyAttribute = "HeldDown", keyId = 1 } }, { id = 25, isTrigger = true, operator = "!=", property = "centralSceneEvent", type = "device", value = { keyAttribute = "Released", keyId = 1 } } }, operator = "any" }