Dimmen mit Fibaro Button

Hallo zusammen,

hat das schon jemand realisiert? Da meine LUA Kenntnisse noch sehr bescheiden sind, hoffe ich das es so was in Verbindung mit dem Dimmer2 schon gibt. An und Aus kann ich schalten, aber Dimmen nicht.
Schön wären die Funktionen An/Aus und DimUP/DimDown. Eventuell noch Pressedtwice für maximale Helligkeit.
Danke für Eure Unterstützung.

Hi,

ich hab dir mal fix was gebaut.
Nutze als Grundlage das Script von Daniel:
https://www.siio.de/kleine-lua-scripte-teil-9-fibaro-button-lua/

In den Held-Down kannst du das schreiben:

while (tostring(button_source["keyAttribute"]) == "HeldDown") do
  	local Licht= (tonumber(fibaro:getValue(560, "value")));
	local Lichtneu = ( tonumber(Licht +10))
  	fibaro:call(560, "setValue", Lichtneu)
	  	
  	fibaro:sleep(200)	
  	fibaro:debug('Fibaro Button gehalten.')
end

560 ist die ID des Dimmers

Danke für die Hinweise, so ähnlich war meim Script auch, allerdings mit kapitalen Tippfehler. Egal es tut jetzt, aber nicht zuverlässig. Wie Hoogle dass auch schon bemerkt hat wird der “Released” status nicht zuverlässig gemeldet. Gerade mal einfach Klick oder Doppelklick kann man noch akzeptieren. Aber selbst hier gibt es Aussetzer. Ich habe einen gelben und einen roten Button, aber egal welchen ich nehme, es bleibt immer gleich.
In der while schleife habe ich schon mehrere Fallen eingebaut, komme aber dem komischen Verhalten nicht auf die Spur. Aber in Sachen LUA bin ich auch wie ein Kind das gehen lernt.
Ich häng mal den Code hier an, vielleicht erkennt jemand sofort das Problem.
Danke für’s anschauen.

--[[
%% properties
%% events
75 CentralSceneEvent
78 value
%% globals
--]]
 
local button_source = fibaro:getSourceTrigger()["event"]["data"]
local a = 0
if (tostring(button_source["keyAttribute"]) == "HeldDown") then
    while (tostring(button_source["keyAttribute"]) ~= "Released") do
  	   a = a + 1;
          local ButtonState = tostring(button_source["keyAttribute"])
          local Dimmer= (tonumber(fibaro:getValue(78, "value")));
	  local Wertneu = ( tonumber(Dimmer + 10))
          --fibaro:sleep(1000)
  	  fibaro:call(78, "setValue", Wertneu)
	  fibaro:debug('Wert :' .. Wertneu)
  	  fibaro:sleep(1000)	
  	  fibaro:debug('Button: ' .. ButtonState )         
          if (ButtonState == "Released") then 
                print('Losgelassen Zeile 22')
                fibaro:abort()
          break end; 
          if (a > 10) then 
             print('Ende Schleife var a')
             --fibaro:abort();
          end 
               
             if (Dimmer >= 99 or ButtonState == "Released") then 
                print(ButtonState)
                print('Ende Schleife Wert 99')
                break 
             end
     end

--fibaro:debug('Fibaro Button gehalten.')
print('Exit HeldDown')
elseif (tostring(button_source["keyAttribute"]) == "Pressed") then
    if (tonumber(fibaro:getValue(78, "value")) == 0) then
       fibaro:call(78, 'turnOn')
    else
       fibaro:call(78, 'turnOff')
    end
  	fibaro:debug('Button 1x gedrückt.')
  
elseif (tostring(button_source["keyAttribute"]) == "Pressed2") then
    if (tonumber(fibaro:getValue(78, "value")) == 0) then
       fibaro:call(78, "setValue", "99")
    else
       fibaro:call(78, 'turnOff')
    end
  	fibaro:debug('Button 2x gedrückt.')
  
--elseif (tostring(button_source["keyAttribute"]) == "Pressed3") then
--  	fibaro:debug('Fibaro Button 3x gedrückt.')
--elseif (tostring(button_source["keyAttribute"]) == "Pressed4") then
--  	fibaro:debug('Fibaro Button 4x gedrückt.')
--elseif (tostring(button_source["keyAttribute"]) == "Pressed5") then
--  	fibaro:debug('Fibaro Button 5x gedrückt.')

elseif (tostring(button_source["keyAttribute"]) == "Released") then
  	fibaro:debug('Fibaro Button losgelassen. Zeile 66')
end