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!
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“