- 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"
- }