Hallo zusammen
Könnte mir jemand vielleicht weiterhelfen? Die Szene läuft nicht sauber durch, finde aber keinen Fehler…! Vor einigen Tagen griff die Zeit die Szene im 30 Sekunden Takt ab und jetzt erscheint im Debug manchmal nur der halbe Text!(Siehe Anhang) Vielleicht ein Problem beim Fibaro Server?
Vielen Dank schonmal…
--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
local startSource = fibaro:getSourceTrigger();
local timer = 180 --Sekunden (Zeit ohne Bewegung)
local check = 180000 --Gleiche Zeit wie Timer in Milisekunden
local start = 0800
local ende = 2100
function tempFunc()
--2200 = 22:00 Uhr
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end
if (fibaro:countScenes()> 2)
then
--fibaro:debug("Es laufen mehr als zwei Instanzen (gelöscht)");
fibaro:abort();
end
-- Bei Anwesenheit / nach Ablauf des Timers (ohne erneute Bewegung) auf ABWESENHEIT stellen
if (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
--and fibaro:getGlobalValue("AnwesenheitsCheck") == "Anwesend"
and ((tonumber(fibaro:getValue(101, "value")) == 0)
and (tonumber(fibaro:getValue(134, "value")) == 0)
and (tonumber(fibaro:getValue(165, "value")) == 0)
and (tonumber(fibaro:getValue(182, "value")) == 0)
and (tonumber(fibaro:getValue(271, "value")) == 0))
then
function DT(DATETIME)
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME)))
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday = WD[tonumber(tableDT.wday)]
return ""..tableDT.wday ..', ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '..os.date " / %H:%M Uhr"
end
x= DT(os.date())
fibaro:debug (x)
--ibaro:debug("------------------------------------------------------------------------------------------");
Debug("tan","Anwesenheits Check läuft...")
--Debug("tan",(os.date("Timer ist auf "..timer /60 .." Minuten eingestellt!")));
--fibaro:debug("------------------------------------------------------------------------------------------------");
local currentDate = os.date("*t");
setTimeout(function()
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(101, "value");
if ((tonumber(fibaro:getValue(101, "value")) == 0)
and (os.time() - deviceLastModification0) >= timer)
then
delayedCheck0 = true;
end
local delayedCheck1 = false;
local tempDeviceState1, deviceLastModification1 = fibaro:get(134, "value");
if ((tonumber(fibaro:getValue(134, "value")) == 0)
and (os.time() - deviceLastModification1) >= timer)
then
delayedCheck1 = true;
end
local delayedCheck2 = false;
local tempDeviceState2, deviceLastModification2 = fibaro:get(165, "value");
if ((tonumber(fibaro:getValue(165, "value")) == 0)
and (os.time() - deviceLastModification2) >= timer)
then
delayedCheck2 = true;
end
local delayedCheck3 = false;
local tempDeviceState3, deviceLastModification3 = fibaro:get(182, "value");
if ((tonumber(fibaro:getValue(182, "value")) == 0)
and (os.time() - deviceLastModification3) >= timer)
then
delayedCheck3 = true;
end
local delayedCheck4 = false;
local tempDeviceState4, deviceLastModification4 = fibaro:get(271, "value");
if ((tonumber(fibaro:getValue(271, "value")) == 0)
and (os.time() - deviceLastModification4) >= timer)
then
delayedCheck4 = true;
end
local startSource = fibaro:getSourceTrigger();
if (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and fibaro:getGlobalValue("AnwesenheitsCheck") == "Anwesend"
and ((delayedCheck0 == true
and delayedCheck1 == true
and delayedCheck2 == true
and delayedCheck3 == true
and delayedCheck4 == true))
then
function DT(DATETIME)
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME)))
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday = WD[tonumber(tableDT.wday)]
return ""..tableDT.wday ..', ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '..os.date " / %H:%M Uhr"
end
x= DT(os.date())
fibaro:debug (x)
fibaro:setGlobal("AnwesenheitsCheck", "Abwesend")
--fibaro:debug("------------------------------------------------------------------------------------------");
Debug("tan",(os.date("Innerhalb " ..timer /60 .. " Minuten keine Bewegung erkannt!")));
Debug("tan",("Variable *AnwesenheitsCheck* auf ABWESEND geschaltet..!"));
--Debug("white",("Check angehalten..."));
--fibaro:debug("------------------------------------------------------------------------------------------");
else
-- Bei Bewegung schalte Variable auf "ANWESEND"
if (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and fibaro:getGlobalValue("AnwesenheitsCheck") == "Abwesend"
and ((delayedCheck0 == false
or delayedCheck1 == false
or delayedCheck2 == false
or delayedCheck3 == false
or delayedCheck4 == false))
then
function DT(DATETIME)
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME)))
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday = WD[tonumber(tableDT.wday)]
return ""..tableDT.wday ..', ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '..os.date " / %H:%M Uhr"
end
x= DT(os.date())
fibaro:debug (x)
Debug("tan","Bewegung erkannt!")
Debug("tan",("Variable *AnwesenheitsCheck* auf ABWESEND vorgefunden!"));
Debug("tan",("Variable auf ANWESEND geschaltet..!"));
--fibaro:debug("-------------------------------------------------------------------------------------------");
fibaro:setGlobal("AnwesenheitsCheck", "Anwesend")
end
end
end, check)
-- Ausserhalb der Zeitbegrenzung Szene stoppen
if (tonumber(os.date("%H%M")) >= ende or tonumber(os.date("%H%M")) <= start)
then
function DT(DATETIME)
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME)))
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday = WD[tonumber(tableDT.wday)]
return ""..tableDT.wday ..', ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '..os.date " / %H:%M Uhr"
end
x= DT(os.date())
fibaro:debug (x)
--fibaro:debug("------------------------------------------------------------------------------------------");
--Debug("white",(os.date("Es ist der (%d.%m.%Y) %H:%M Uhr.")));
Debug("orange",("Abwesenheit wird von 05.30 Uhr bis 21.00 Uhr überwacht...!"))
Debug("red",("Innerhalb dieser Zeitbeschränkung wird Abwesenheit NICHT aktiviert!"))
--fibaro:debug("-------------------------------------------------------------------------------------------");
--fibaro:abort();
end
end
if (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and fibaro:getGlobalValue("AnwesenheitsCheck") == "Anwesend"
then
--fibaro:debug("------------------------------------------------------------------------------------------");
Debug("green","Variable *AnwesenheitsCheck* ist momentan auf ANWESEND geschaltet!")
fibaro:debug("--------------------------------------------------------------------------------------------");
else
if (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and fibaro:getGlobalValue("AnwesenheitsCheck") == "Abwesend"
then
--fibaro:debug("------------------------------------------------------------------------------------------");
Debug("orange","Variable *AnwesenheitsCheck* ist momentan auf ABWESEND geschaltet!")
fibaro:debug("--------------------------------------------------------------------------------------------");
end
end
setTimeout(tempFunc, 60*1000)
end
tempFunc()