Zeitfunktion läuft nicht sauber durch

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()


Screenshot_2018-07-07-Home-Center-2.png

Noch ein Screenshot zum besseren Verständnis…

Screenshot_2018-07-07-Home-Center-2-1.png

Fehler gefunden, Debug an falscher Position im Script. Trotzdem vielen Dank…

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

local sourceTrigger = fibaro:getSourceTrigger();
local startSource = fibaro:getSourceTrigger();
local motion1 = 101
local motion2 = 134
local motion3 = 165
local motion4 = 182
local motion5 = 277
local timer = 1800 --Sekunden (Zeit ohne Bewegung)
local check = 1800*1000 --Gleiche Zeit wie Timer in Milisekunden 
local start = 0759
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(fibaro:getValue(motion1, "value")) == 0) 
and   (tonumber(fibaro:getValue(motion2, "value")) == 0) 
and   (tonumber(fibaro:getValue(motion3, "value")) == 0)
and   (tonumber(fibaro:getValue(motion4, "value")) == 0) 
and   (tonumber(fibaro:getValue(motion5, "value")) == 0)) 
    
then     
local currentDate = os.date("*t");
      setTimeout(function()
        
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(motion1, "value");

if    ((tonumber(fibaro:getValue(motion1, "value")) == 0) 
and   (os.time() - deviceLastModification0) >= timer) 
then
	  delayedCheck0 = true;
end
local delayedCheck1 = false;
local tempDeviceState1, deviceLastModification1 = fibaro:get(motion2, "value");

if    ((tonumber(fibaro:getValue(motion2, "value")) == 0) 
and   (os.time() - deviceLastModification1) >= timer)
then
	  delayedCheck1 = true;
end
local delayedCheck2 = false;
local tempDeviceState2, deviceLastModification2 = fibaro:get(motion3, "value");

if    ((tonumber(fibaro:getValue(motion3, "value")) == 0) 
and   (os.time() - deviceLastModification2) >= timer) 
then
	  delayedCheck2 = true;
end
local delayedCheck3 = false;
local tempDeviceState3, deviceLastModification3 = fibaro:get(motion4, "value");

if    ((tonumber(fibaro:getValue(motion4, "value")) == 0) 
and   (os.time() - deviceLastModification3) >= timer) 
then
	  delayedCheck3 = true;
end
local delayedCheck4 = false;
local tempDeviceState4, deviceLastModification4 = fibaro:get(motion5, "value");

if    ((tonumber(fibaro:getValue(motion5, "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   fibaro:getGlobalValue("TuereFreisitz") == "Geschlossen"
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 der vorgegebenen " ..timer /60 .. " Minuten keine Bewegung erkannt!")));      
      Debug("orange",("Variable *AnwesenheitsCheck* auf ABWESEND geschaltet..!"));
      --Debug("white",("Check angehalten..."));
      fibaro:debug("---------------------------------------------------------------------------------------------");         

else 
         
       -- Bei Bewegung schalte Variable auf "ANWESEND" 
          
if    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("orange",("Variable *AnwesenheitsCheck* auf ABWESEND vorgefunden!"));
      Debug("lime",("Variable auf ANWESEND geschaltet..!"));
      fibaro:debug("---------------------------------------------------------------------------------------------");         
      fibaro:setGlobal("AnwesenheitsCheck", "Anwesend")  
end  
end
end, check) 
end

  
if    (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and   fibaro:getGlobalValue("AnwesenheitsCheck") == "Abwesend"   
  
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","Abwesenheits Check läuft...")   
      Debug("tan","Variable *AnwesenheitsCheck* ist aktuell auf ABWESEND geschaltet!")
      Debug("tan","---------------------------------------------------------------------------------------------");     
  
elseif
    
      (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
and   fibaro:getGlobalValue("AnwesenheitsCheck") == "Anwesend"
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("green","Anwesenheits Check läuft...") 
      Debug("green","Variable *AnwesenheitsCheck* ist aktuell auf ANWESEND geschaltet!")
      Debug("green","---------------------------------------------------------------------------------------------");     
end

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