Dimmer nach 10 Uhr auf 30%

Hallo,

ich würde gerne im Flur, wo ich einen Fibaro Dimmer EFGD-212 verbaut habe, von 22 bis 6 Uhr, wenn man einmal den Taster drückt die Lampen nur auf 30% hochfahren wollen.
Rest der Tages 100%.
Des weiteren, wenn ich zwischen 22 Uhr und 6 Uhr den Taster zweimal drücke, dann sollen die Lampen 100% hochfahren.

Habe versucht das über eine Blockszene darzustellen, das ist aber nicht möglich und in LUA kapier ich das überhaupt nicht.

Hat einer schon mal sowas gemacht oder hat eine Idee/Script, wie ich das realisieren kann?

Danke

Schlanke Lösung: bau dir eine Blockszene, die um 22:00 auf 30% einschaltet und eine Sekunde später ausschaltet. Um 6:00 das gleiche mit 100%. Der Parameter für das Einschalten auf den letzten Stand sollte ab Werk schon richtig gesetzt sein. Problem dabei ist, falls Punkt 22:00 oder 6:00 das Licht zufällig gerade an sein sollte, wird es ausgeschaltet. Das lässt sich über Blockszenen nur sehr krampfig lösen, das wäre nur über LUA gut zu machen. So etwas in der Art baue ich mir demnächst fürs Bad abends, damit das Zähneputzen zwischen Sofa und Bett nicht ganz so hell ist. Mangelt im Moment nur an Zeit, um den Dimmer zu verbauen…

Viele Grüße
Schnuckman

Hallo Schnuckman,

vielen Dank für die Antwort.

Das mit dem Licht kurz ein- und ausschalten mag ich nicht, da springt meine Frau im Dreieck (WAF nicht gegeben).

Wenn Du mit Deinem LUA Script fertig hast, könntest Du das hier mal bitte posten?
btw. für das Bad brauche ich das auch.

Danke! :slight_smile:

Moin!

Habs endlich geschafft, den Dimmer in die Wand zu werfen. Hier das Script, was bei mir nach derzeitigem Teststand gut funktioniert:

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
PresentState
--]]

local sourceTrigger = fibaro:getSourceTrigger();

function tempFunc()
local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

local DimmerID = 296;
local DimDownTime = 		"21:15";
local DimUpTime = 		"05:30";
local DimUpTimeWeekend = 	"08:30";
local DimDownLevel = 5;
local DimUpLevel = 100;
  
if tonumber(fibaro:getGlobalValue("Feiertag_heute")) == 1  --am Wochenende später
    then DimUpTime = DimUpTimeWeekend;
end
  
if 
		currentTime == DimDownTime 				-- ABENDS --
	
then
    	fibaro:debug("Abend! Zeit, runterzudimmen");
    	if fibaro:getGlobalValue("Automatik")=="aus"
      	then fibaro:debug("Automatik ist aus");
      	else
      
      		fibaro:debug("Prüfe, ob Licht an ist");
      		while tonumber(fibaro:getValue(296, "value")) > 0 do --warten, bis Licht aus ist, falls an
        		  fibaro:debug("Licht ist noch an");
        		  fibaro:sleep(1000);
        	end
          	
      		fibaro:debug("Dimme auf "..DimDownLevel.."%");
        	fibaro:call(DimmerID, "setValue", DimDownLevel); --Runterdimmen
          	fibaro:sleep(100); --kurz warten
      		fibaro:call(DimmerID, "turnOff"); --ausschalten
      		fibaro:debug("----------------------");
      	end
end
      
if 
		currentTime == DimUpTime 				-- MORGENS --
	
then 	
    	fibaro:debug("Morgen! Zeit, hochzudimmen");
    	if fibaro:getGlobalValue("Automatik")=="aus"
      	then fibaro:debug("Automatik ist aus");
      	else
      
      		while tonumber(fibaro:getValue(296, "value")) > 0 do --warten, bis Licht aus ist, falls an
        		  fibaro:debug("Licht ist noch an");		
        		  fibaro:sleep(1000);
        	end
          	
      		fibaro:debug("Dimme auf "..DimUpLevel.."%");
      		fibaro:call(DimmerID, "setValue", DimUpLevel); --Hochdimmen
          	fibaro:sleep(300); --kurz warten
      		fibaro:call(DimmerID, "turnOff"); --ausschalten
   			fibaro:debug("----------------------");
      	end
end

setTimeout(tempFunc, 60*1000)
end --tempFunc

--- MAINLOOP ---
    
if (sourceTrigger["type"] == "autostart") then --Autostart
tempFunc()

else --manueller Start
  	fibaro:debug("manueller Start, Dimmen auf "..DimDownLevel.."%");	
  	fibaro:call(DimmerID, "setValue", DimDownLevel); --Runterdimmen
    fibaro:sleep(100); --kurz warten
    fibaro:call(DimmerID, "turnOff"); --ausschalten
      
end

Beim abendlichen kurzzeitigen Runterdimmen (zum Speichern des Wertes) springen meine Philips LEDs nicht an, beim Hochdimmen morgen leider schon. Wenn also um genau 5:30 jemand im Bad sein sollte, wird er morgens 0,3sec lang geblitzdingst, da muss er (sie) dann durch.

Viele Grüße
Schnuckman

1 „Gefällt mir“

Mist, da war noch ein Fehler im Code. Hier etwas besser:

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
PresentState
--]]

local sourceTrigger = fibaro:getSourceTrigger();

local DimmerID = 296;
local DimDownTime = 		"21:15";
local DimUpTime = 			"05:30";
local DimUpTimeWeekend = 	"08:30";
local DimDownLevel = 5;
local DimUpLevel = 100;

function tempFunc()
local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

if tonumber(fibaro:getGlobalValue("Feiertag_heute")) == 1  --am Wochenende später
    then DimUpTime = DimUpTimeWeekend;
end
  
if 
		currentTime == DimDownTime 				-- ABENDS --
	
then
    	fibaro:debug("Abend! Zeit, runterzudimmen");
    	if fibaro:getGlobalValue("Automatik")=="aus"
      	then fibaro:debug("Automatik ist aus");
      	else
      
      		fibaro:debug("Prüfe, ob Licht an ist");
      		while tonumber(fibaro:getValue(296, "value")) > 0 do --warten, bis Licht aus ist, falls an
        		  fibaro:debug("Licht ist noch an");
        		  fibaro:sleep(1000);
        	end
          	
      		fibaro:debug("Dimme auf "..DimDownLevel.."%");
        	fibaro:call(DimmerID, "setValue", DimDownLevel); --Runterdimmen
          	fibaro:sleep(100); --kurz warten
      		fibaro:call(DimmerID, "turnOff"); --ausschalten
      		fibaro:debug("----------------------");
      	end
end
      
if 
		currentTime == DimUpTime 				-- MORGENS --
	
then 	
    	fibaro:debug("Morgen! Zeit, hochzudimmen");
    	if fibaro:getGlobalValue("Automatik")=="aus"
      	then fibaro:debug("Automatik ist aus");
      	else
      
      		while tonumber(fibaro:getValue(296, "value")) > 0 do --warten, bis Licht aus ist, falls an
        		  fibaro:debug("Licht ist noch an");		
        		  fibaro:sleep(1000);
        	end
          	
      		fibaro:debug("Dimme auf "..DimUpLevel.."%");
      		fibaro:call(DimmerID, "setValue", DimUpLevel); --Hochdimmen
          	fibaro:sleep(300); --kurz warten
      		fibaro:call(DimmerID, "turnOff"); --ausschalten
   			fibaro:debug("----------------------");
      	end
end

setTimeout(tempFunc, 60*1000)
end --tempFunc

--- MAINLOOP ---
    
if (sourceTrigger["type"] == "autostart") then --Autostart
tempFunc()

else --manueller Start
  	fibaro:debug("manueller Start, Dimmen auf "..DimDownLevel.."%");	
  	fibaro:call(DimmerID, "setValue", DimDownLevel); --Runterdimmen
    fibaro:sleep(100); --kurz warten
    fibaro:call(DimmerID, "turnOff"); --ausschalten
      
end

Viele Grüße
Schnuckman

1 „Gefällt mir“