Zeit nach Mitternacht wird nicht erkannt!

Hallo zusammen,
Habe eine Szene geschrieben die mir jeden Tag den Alarm automatisch scharf- bzw. unscharf schaltet (klappt sehr gut.) Sollte mal jemand früher zur Arbeit gehen müssen als 05.30 Uhr (ab dieser Zeit schaltet der Alarm auf unscharf) und vergisst den Alarm manuel zu deaktivieren, habe ich die Nachbarn am Hals. Das dies nicht passiert schrieb ich untenstehende Szene, die per Bewegungsmelder den Alarm vor 05.30 Uhr deaktiviert! Die Szene muss nur von 01:00-05:30 Uhr aktiviert sein, es gelingt mir nicht beide Zeiten nach Mitternacht einzugeben also 0100-0530 das wird vom System nicht akzeptiert. Es muss 2359-0530 eingegeben werden dann klappts. Hat mir jemand eine Lösung warum die Zeiten von/bis nicht beide nach Mitternacht sein dürfen?
Vielen Dank für euren Einsatz, Gruss fastsnake

--[[
%% properties
101 value
134 value
165 value
%% globals
--]]
 
 local scene = 310 
 local sensors = {101,134,165}
 local licht = 128
 local handy_willi = 189
 local samsung = 196
 local nachtstart = 2359 --22:00 = 2200
 local nachtende = 0530 -- 07:00 = 0700
 local currentDate = os.date("*t");
 local sourceTrigger = fibaro:getSourceTrigger();
 local startSource = fibaro:getSourceTrigger();
 -- Fenster/Tür Kontakte --     
 local FensterFreisitz = (tonumber(fibaro:getValue(28, "value")) == 0);
 local TuereFreisitz = (tonumber(fibaro:getValue(87, "value")) == 0); 
 local TuereEingang = (tonumber(fibaro:getValue(79, "value")) == 0);
 local TuereKeller = (tonumber(fibaro:getValue(118, "value")) == 0);
 local FensterWC = (tonumber(fibaro:getValue(201, "value")) == 0); 
 local FensterKueche = (tonumber(fibaro:getValue(202, "value")) == 0); 

-- Lösche doppelte Szene(n)
 if  (fibaro:countScenes()> 1) 
  
 then
     --fibaro:debug("Es läuft mehr als eine Instanz");
     fibaro:abort(); 
 end
 
     Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

   
    function getSensorStatus()  
    for i,n in ipairs(sensors) do
 if  (tonumber(fibaro:getValue(n, "value")) > 0) then
 return 1;
 end
 end
 return 0;
 end

-- Alarm ausserhalb der programmierten Zeiten aus (wenn Türen & Fenster geschlossen)

 if  (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
 then    

 if  (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) 
 then
 if not FensterFreisitz or not TuereFreisitz or not TuereEingang or not FensterKueche or not FensterWC  or not TuereKeller
 and (tonumber(fibaro:getGlobalValue("Alarm")) == tonumber("1"))
      
 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",("Mindestens ein Tür- oder Fenstersensor meldet Status OFFEN!"));
     Debug("red",("Möglicher Einbruch!!"));
     Debug("lime",("Alarm wird NICHT deaktiviert!"));
     fibaro:debug("------------------------------------------------------------------------------------------");
     fibaro:call(handy_willi, "sendPush",os.date("(%d.%m.%Y) Alarmanlage wird NICHT deaktiviert (Türe- oder Fenster offen)!"));
     fibaro:abort();
 end
 end
 end
-- Alarm ausserhalb der programmierten Zeiten aus

 if  (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
 then    

 if  (tonumber(os.date("%H%M")) >= nachtstart or tonumber(os.date("%H%M")) <= nachtende) 
 then
 if  FensterFreisitz or TuereFreisitz or TuereEingang or FensterKueche or FensterWC  or not TuereKeller
 and (tonumber(fibaro:getGlobalValue("Alarm")) == tonumber("1"))
      
 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",("Bewegung eines  Melders (Wohnzimmer) erkannt."));
     Debug("lime",("Status (Teilweise Alarm ist scharf gestellt.)"));
     Debug("orange",("Automatische Deaktivierung aktiviert..."));
     Debug("red",(os.date("Teilweise Überwachung um %H:%M Uhr DEAKTIVIERT!"))); 
     fibaro:debug("------------------------------------------------------------------------------------------");
     --fibaro:startScene(146);
 
     fibaro:call(28, "setArmed", "0");
     fibaro:call(79, "setArmed", "0");
     fibaro:call(87, "setArmed", "0");
     fibaro:call(118, "setArmed", "0");
     fibaro:call(201, "setArmed", "0");
     fibaro:call(202, "setArmed", "0");

     fibaro:setGlobal("Alarm", "0");
     fibaro:setSceneEnabled(145, false) -- Szene Alarm Beepton
     fibaro:call(handy_willi, "sendPush",os.date("(%d.%m.%Y) Alarmanlage ausser Plan um %H:%M Uhr deaktiviert!"));
     --fibaro:call(samsung, "sendPush",os.date("Alarm deaktiviert!"));
     --Sabotage Sensors
     fibaro:call(24, "setArmed", "1");
     fibaro:call(27, "setArmed", "1");
     fibaro:call(78, "setArmed", "1");
     fibaro:call(86, "setArmed", "1");
     fibaro:call(89, "setArmed", "1");
     fibaro:call(92, "setArmed", "1");
     fibaro:call(117, "setArmed", "1");
     fibaro:call(115, "turnOn");
     fibaro:call(132, "turnOn");
     fibaro:sleep(3*1000);
     fibaro:call(115, "turnOff");
     fibaro:call(132, "turnOff");
 end 
 end
 end

Hi,

Geht es um Zeile 52?
Hast du es mal mit And statt Or versucht?

Viele Grüße Hoggle

Hallo Hoggle
Nein es geht um die Zeit nach Mitternacht, also z.B. von 01:00 Uhr bis 05:30 Uhr / 0100/0530 das wird nicht erkannt. Wenn beide Uhrzeiten nach Mitternacht eingegeben werden, funktioniert es nicht. Also es muss immer die Startzeit vor Mitternacht (in meinem Fall 2359) eingegeben werden dann klappts. Die Frage ist warum das so ist und was die Lösung sein könnte. Gruss fastsnake

Ich glaube Hoggle hat schon Recht. In der besagten Zeile mal AND statt OR probieren.
Ohne das Script verstanden zu haben: evtl. Muss in Zeile 84 dies ebenfalls geändert werden?

Bis Zeile 84 war ich nicht mal.
Aber es soll ja nur zwischen 1 Uhr UND 6 Uhr auslösen.
Weil wenn die Zeit größer als 1 Uhr ist, interessiert das HC die Oder-Bedingung nicht mehr…Bedingung ist ja richtigerweise erfüllt.

Hallo zusammen, vielen Dank für die Vorschläge. Mit der AND oder der OR Bedingung hat es definitiv nichts am Hut, habe dies trotzdem mal erfolglos versucht. Das Script läuft tadellos wenn die Startzeit vor Mitternacht eingestellt wird, kann also nicht an der Programmierung liegen. Ev. hat dies etwas mit der 12 bzw.24Std Einstellung im HC2 zu tun? Bin sehr gespannt wo der Fehler sein könnte. Gruss fastsnake

Hi zusammen
Ihr hattet recht, es lag tatsächlich an der AND Bedingung! Was Anfänglich gar nicht klappte, funktionierte nach einem HC2 Neustart ohne Probleme. Eines gibt mir dennoch etwas zu denken, wann setze ich die AND Bedingung und wann die OR?
Vielen Dank für eure Unterstützung, finde es mega toll das es dieses Forum gibt!!
Grüsse fastsnake

Hallo fastsnake,

Du hättest vermutlich nur die Szene neu starten müssen.
Das mit and or liegt einfach daran dass die Uhrzeit als Zahl verarbeitet wird und nach Mitternacht ist die logischerweise wieder kleiner. Also reine Mathematik.

Vielen Dank für die Info Ändy,
Bin soeben wieder um eine Erfahrung reicher geworden :slight_smile: Wünsche bereits heute ein schönes Weekend…
Grüsse fastsnake