Hallo zusammen,
bin neu hier im Forum und bei Fibaro allgemein.
Hatte bislang fhem auf einem Raspberry laufen, bin aber vor kurzem zu einer HC2 gewechselt - das hat mir das Leben deutlich leichter gemacht
Einige einfache LUA-Scripts habe ich schon erstellt, das klappte auch ganz gut. Jetzt hänge ich aber an einem Skript, das folgendes tun soll:
alle Rollos im Erdgeschoss sollen 30min nach Sonnenuntergang geschlossen werden, sofern auch die Terrassentür geschlossen ist.
Wenn die Terrassentür offen ist, sollen alle Rollos bis auf das der Terrassentür runtergehen.
Das Rollo der Terrassentür wird dann später beim schließen der Terrassentür mit einem anderen Script geschlossen bzw. wieder geöffnet, falls man die Terrassentür bei geschlossenem Rollo nochmal öffnen sollte. Dieses Script funktioniert auch, nur das “Haupt-Script” will nicht.
Das Problem scheint an den Wochentagen bzw. der Zeit nach Sonnenuntergang zu liegen.
Wenn ich in folgendem Code in den Zeilen 15 - 17 die if-Anweisung mit der Zeit gegen irgendwas beliebiges austausche klappt es.
--[[
%% properties
%% events
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local Terrassentuer_Zu = (tonumber(fibaro:getValue(20, "value")) == 0);
local Terrassentuer_Auf = (tonumber(fibaro:getValue(20, "value")) == 1);
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and os.date("%H:%M", os.time()-30*60) == fibaro:getValue(1, "sunsetHour") ) )
) then
if Terrassentuer_Zu then
fibaro:setGlobal("Rollos", "unten");
fibaro:setGlobal("Kontrolletti", "unten");
local value_Rollos = fibaro:getGlobal('Rollos');
local value_Kontrolletti = fibaro:getGlobal('Kontrolletti');
fibaro:debug('Terrassentuer ist geschlossen');
fibaro:debug('Rollozeit: ' ..value_Rollos);
fibaro:debug('Status Terrassentuer: ' ..value_Kontrolletti);
fibaro:call(6, "close");
fibaro:call(8, "close");
fibaro:call(12, "close");
fibaro:call(14, "close");
fibaro:call(16, "open");
end
if Terrassentuer_Auf then
fibaro:setGlobal("Rollos", "unten");
fibaro:setGlobal("Kontrolletti", "oben");
local value_Rollos = fibaro:getGlobal('Rollos');
local value_Kontrolletti = fibaro:getGlobal('Kontrolletti');
fibaro:debug('Rollozeit: ' ..value_Rollos);
fibaro:debug('Status Terrassentuer: ' ..value_Kontrolletti);
fibaro:debug('Terrassentuer ist geöffnet');
fibaro:call(8, "close");
fibaro:call(12, "close");
fibaro:call(14, "close");
fibaro:call(16, "open");
end
end
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
if Terrassentuer_Zu then
fibaro:setGlobal("Rollos", "unten");
fibaro:setGlobal("Kontrolletti", "unten");
local value_Rollos = fibaro:getGlobal('Rollos');
local value_Kontrolletti = fibaro:getGlobal('Kontrolletti');
fibaro:debug('Terrassentuer ist geschlossen');
fibaro:debug('Rollozeit: ' ..value_Rollos);
fibaro:debug('Status Terrassentuer: ' ..value_Kontrolletti);
fibaro:call(6, "close");
fibaro:call(8, "close");
fibaro:call(12, "close");
fibaro:call(14, "close");
fibaro:call(16, "open");
end
if Terrassentuer_Auf then
fibaro:setGlobal("Rollos", "unten");
fibaro:setGlobal("Kontrolletti", "oben");
local value_Rollos = fibaro:getGlobal('Rollos');
local value_Kontrolletti = fibaro:getGlobal('Kontrolletti');
fibaro:debug('Rollozeit: ' ..value_Rollos);
fibaro:debug('Status Terrassentuer: ' ..value_Kontrolletti);
fibaro:debug('Terrassentuer ist geöffnet');
fibaro:call(8, "close");
fibaro:call(12, "close");
fibaro:call(14, "close");
fibaro:call(16, "open");
end
end
end
Wenn ich das Script wie gezeigt ausführe, dann kommt keine Fehlermeldung im Debuger.
Da ich mit Lua noch recht unbedarft bin, habe ich keine Idee, woran das Problem liegen könnte.
Habe zunächst eine grafische Szene erstellt, soweit ich gekommen bin und diese dann in eine Lua-Szene umgewandelt.
Der Rollo-shutter mit ID16 ist falsch verkabelt worden, daher steht dort ein “open” obwohl “close” gemeint ist.
Kann mir jemand helfen?
Vielen Dank und schöne Pfingsten,
Max