scene kann man bestimmt besser machen

Hallo,
da ich mich so nach und nach in Lua einarbeite und hier im Forum immer gute Ideen zu finden sind, habe ich mir mal ein Script ausgeborgt.
Ich habe mit einem “the Button” schon einiges realisiert. Aber ich denke man kann es sicherlich besser machen.

Deshalb mal hier einen Auszug aus meinem Script

 
--[[
%% properties
%% weather
%% events
195 CentralSceneEvent
%% globals
--]]

local button_source = fibaro:getSourceTrigger()["event"]["data"]
 
if (tostring(button_source["keyAttribute"]) == "Pressed") then
  	fibaro:debug('Fibaro Button 1x gedrückt.')
	local deviceValue1 = tonumber(fibaro:getValue(224, "value")); --WP Schlafen
  	local deviceValue2 = tonumber(fibaro:getValue(220, "value")); --Licht GästeWC
  	local deviceValue3 = tonumber(fibaro:getValue(226, "value")); --Licht Heizung
	if (deviceValue1 > 0) then
    	if (deviceValue2 > 0) then fibaro:call(220, "turnOff");end
    	if (deviceValue3 > 0) then fibaro:call(226, "turnOff");end
      	fibaro:call(224, "turnOff");
    	fibaro:debug('Fibaro Button 1x gedrückt. TV ist aus')
	else
		fibaro:call(224, "turnOn");
    	fibaro:debug('Fibaro Button 1x gedrückt. TV ist an')
	end

elseif (tostring(button_source["keyAttribute"]) == "Pressed2") then
    fibaro:debug('Fibaro Button 2x gedrückt.')
elseif (tostring(button_source["keyAttribute"]) == "Pressed3") then
    fibaro:debug('Fibaro Button 3x gedrückt.')

ist es möglich, was im Bereich 11 bis 24 ein wenig geschmeidger zu machen?

Danke an Euch
Gruß secundani

Hallo Secundani,

Ich habe mir aus ebenfalls von hier “geborgten” Skripten eine kleine aber feine Steuerung für meine Außenjalousien zusammengebastelt.
Ziel war es nicht jede einzeln zu definieren, sondern sie alle einer Schleife abzufragen und zu schliessen, wenn sie offen sind!
Derzeit sind es zwar nur zwei, aber bald werden es mehrere sein :wink:
Vielleicht magst du es ja als Anregung nehmen …

if (fibaro:countScenes()>1) then  fibaro:abort() end -- lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

jalIDs = {354,357}

function CheckJal(IDs)
  for i=1, #IDs do
    local DeviceValue = tonumber(fibaro:getValue(IDs[i],"value"))
    local DeviceName   = fibaro:getName(IDs[i])
    local DeviceRoom = fibaro:getRoomNameByDeviceID(IDs[i])
      if (DeviceValue > 0) then
        fibaro:call(IDs[i], "close")
        Debug("green",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wird geschlossen")))
      else
        Debug("cyan",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." ist schon zu")))
    end
  end
end
CheckJal(jalIDs)

Hallo pblacky,
Danke für den Denkanstoß. Werde mal sehen, ob ich es umsetzen kann.
gruß