Türen und Fenster im gegebenen Intervall prüfen

So nun nochmal getestet nachdem ich ein wenig Advent gefeiert habe. Das Problem das die ersten Push kommen und danach keine mehr ist immer noch vorhanden. Siehe unten im Debug. Kannst du mir noch sagen was man in dem Unterschied sieht zwischen local = Interval und local = newInterval ? Was stellt man in den 2 Lokalen ein ? Und jetzt sendet er 6 Push’s obwohl bei local numPushMsg = 5 steht.

Nochmal der Debug :

[DEBUG] 22:59:49: Checking is in automatic mode.
[DEBUG] 22:59:49: Check for open doors and windows…
[DEBUG] 22:59:49: Outside temperature is 3°C
[DEBUG] 22:59:49: Current Interval is: 1
[DEBUG] 23:00:49: Alle Türen und Fenster sind geschlossen.
[DEBUG] 23:00:49: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:01:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:01:50: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 0
[DEBUG] 23:02:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:02:50: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 1
[DEBUG] 23:03:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:03:50: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 2
[DEBUG] 23:04:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:04:50: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 3
[DEBUG] 23:05:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:05:50: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 4
[DEBUG] 23:06:50: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:06:51: 17.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 5
[DEBUG] 23:07:51: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:08:51: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:09:51: 17.12.2017 ACHTUNG! Terrassentürsensor_R im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:10:51: 17.12.2017 ACHTUNG! Terrassentürsensor_R im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:11:51: 17.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3

Grüße und guten Start in die Woche

guido

Oh ja, Du hast recht, beim zweiten Pushdurchlauf wurde der Zähler falsch gesetzt, habs gefixt.
Das was Du als Problem beschreibst, dass keine Pushmeldungen mehr kommen ist so gewollt und dass
war ja gerade Dein Vorschlag (Post #84899), dass nur 2 -3 Pushmeldungen kommen. Wer mehr haben
will muss mehr einstellen.
Erst nach dem alle Fenster/Türen für 1 Minute geschlossen wurden, wird der Pushzähler wieder aktiviert.
Dass verhindert das man von Pushs geflutet wird. Für die Variablenbeschreibung bitte das ReadMe
konsultieren. Steht alles drin. Ich häng es nochmals hier an.

Changelog für 0.1.5
– Fehler bei Anzahl der Pushmeldungen behoben

--[[
%% autostart
%% properties
--]]

-- Scene File    : CheckDWinterval.lua
-- Purpose       : Check doors and windows at the given interval.
-- Version       : 0.1.5
-- Release Date  : 17 December 2017
-- Trigger       : autostart
-- License       : Copyleft {jeep} siio-forum

-- Either you enter all the door / window IDs in line 25, or you
-- let the script run in automatic mode. Save the line 25, so
-- you do not have to pick all the IDs again,
--

local sourceTrigger = fibaro:getSourceTrigger();
local Debug = function ( color, message )  
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local version  = '0.1.5' 
local manually = false

if manually then
   devices = {48, 122, 123, 127} --device IDs
   Debug('green', 'Checking is in manual mode.')
else  
   devices = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
   Debug('green', 'Checking is in automatic mode.')
end 

local interval    = 10   -- Interval after which a push message is sent.
local numPushMsg  = 5    -- number of push messages
local IDtempOut   = 243  -- IMPORTANT! ID of your outside temperatur sensor (e.g. Yahoo)
local tThreshold  = 15   -- nn° Celsius
local newInterval = 20   -- increase interval counter  
local phoneID     = {8, 20} -- mobile-IDs
local debug       = true    -- Debug messages yes/no 
local advdebug    = false   -- advanced debug

-- Don't change anything below this line.
local pushMsg = 1
local warning = 1
local counter = 0  
local prevwarning = 0

if (fibaro:countScenes()>1) then
   fibaro:debug('Only one instance!')
   fibaro:abort(); 
end

if (fibaro:getValue(IDtempOut, "Temperature")) == nil then
   Debug('red', 'No outside temperature detected!')
   Debug('red', 'Please correct. Scene is canceled!') 
   fibaro:abort() 
end    

local outsideTemp = math.floor(fibaro:getValue(IDtempOut, "Temperature"));
if outsideTemp >= tThreshold then
   interval = newInterval -- increase checking interval 
end  

function tempcheck()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, "Temperature"));
  if outsideTemp >= tThreshold then
     interval = newInterval
  end  
  return interval
end

Debug('white', "Check for open doors and windows...")
Debug('white', "Outside temperature is " .. outsideTemp.. '°C')
Debug('green', "Current Interval is: " .. interval) 
if not debug then print('Debug is disabled.') end;

function checkOpenDW()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, "Temperature"));
  local currentDate = os.date("*t");
  local datum = os.date("%d.%m.%Y")
  counter = counter + 1
  local devopen = 0
  for id = 1, #devices do
     local deviceType = fibaro:getType(devices[id] )
     if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
       if (tonumber(fibaro:getValue(devices[id], 'value')) == 1) then
          local name  = fibaro:getName(devices[id])
          local room  = fibaro:getRoomNameByDeviceID(devices[id])
          devopen = devopen + 1
          status  = " ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen! Temp. = " .. outsideTemp.."°"
          if debug then Debug('yellow',datum .. status) end;
          warning = warning + 1
       end
     end
          
     if (warning == prevwarning and warning > 0) then
         -- Tür wurde geschlossen
         warning = 1
         counter = 1
         prevwarning = 0
         pushMsg = 1; 
         if debug then Debug('green', 'Alle Türen und Fenster sind geschlossen.') end;
     end     
     -- Keine Tür geöffnet, Zähler beginnt von vorn 
     if (warning == 0) then 
         counter = 1;
         prevwarning = 0;
         pushMsg = 1; 
     end
      
     -- Tür wurde geöffnet und wieder geschlossen, Warnungen werden zurückgesetzt   
     if (counter > interval+1 and warning > 0) then 
         counter = 1;
         warning = 1;
         prevwarning = 0;
     end 
  end --for
    
  prevwarning = prevwarning +1  
  -- Tür/Fenster mehr als Interval-Min. offen. Meldung schicken 
  if counter > interval then
     if (devopen > 1) then
        status = status .. ' und '.. devopen .. 'andere.'
     end
     if pushMsg <= numPushMsg then
        Debug('red',datum .. ' Tür/Fenster seit mehr als '.. interval ..' Minuten geöffnet, sende Push Nr. '..pushMsg)
        pushMsg = pushMsg + 1
      for k=1, #phoneID do
          if phoneID[k] ~= nil then
             fibaro:call(phoneID[k], 'sendPush', status )
          end
        end --for
     end
     
     warning = 1
     counter = 1
     prevwarning = 0
     interval = tempcheck()
  end 
  
  if advdebug then Debug('withe', 'Counter: '.. counter) end;
  if advdebug then Debug('withe', 'Warning: '.. warning) end;
  if advdebug then Debug('withe', 'PreWarning: '.. prevwarning) end;
  if advdebug then Debug('withe', 'PushMsg : '.. pushMsg) end;
     
  setTimeout(checkOpenDW, 60*1000)
  
end --function

if (sourceTrigger["type"] == "autostart") then
  checkOpenDW()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  checkOpenDW()
end

abend, also ich habe jetzt nochmal getestet. Ich meinte, ich lass das Script laufen und öffne ein Fenster. So nun kommen auch 5 Push-Nachrichten auf mein Handy. Dann schliesse ich das Fenster und warte 5 Minuten ab. Lass das Script weiter laufen und öffne dann ein anderes Fenster. Allerdings kommen jetzt keine Push-Nachrichten mehr auf mein Handy.
Ich wollte die Scene im Winter immer laufen lassen und daran erinnert werden wenn ich z.B. länger das Fenster auf hab, erinnert werden. Irgendwie funktioniert nicht der neustart des Pushzählers. Vielleicht sollte man einfach ein Neustart der Scene integrieren wenn alle Fenster wieder geschlossen sind !

Aber so würde es gut in das Alarmsystem integriert werden können. Die Temperatur habe ich allerdings noch nicht getestet. Hole ich noch nach !

Grüße Guido

@Guido, da hat dass doch manchmal bis zu 6 Minuten gedauert bis sich die Zählvariablen so
eingeschauckelt hatten so das der Pushzähler wieder aktiviert wurde. Jetzt sollte es den
Pushzähler nach 2 Minuten nach dem das letzte Fenster geschlossen wurde aktivieren.
Außerdem habe ich eine neue Variable eingeführt, so dass man nicht immer gleich 4 Zeilen
mit der Temperaturabfrage ändern muss. Das erleichtert Dir das Testen. Einfach nur
local TempOutType = ‘value’ setzen. Und die ID des Sensors nicht vergessen.
Habs auch im ReadMe festgehalten.
Nochmals Danke für’s Testen.

Changelog für Version 0.1.6:
– neue Variable TempOutType hinzugefügt
– Zählvariablen optimiert
– ReadMe upgedatet

--[[
%% autostart
%% properties
--]]

-- Scene File    : CheckDWinterval.lua
-- Purpose       : Check doors and windows at the given interval.
-- Version       : 0.1.6
-- Release Date  : 18 December 2017
-- Trigger       : autostart
-- License       : Copyleft {jeep} siio-forum

-- Either you enter all the door / window IDs in line 26, or you
-- let the script run in automatic mode. Save the line 26, so
-- you do not have to pick all the IDs again,

local sourceTrigger = fibaro:getSourceTrigger();
local Debug = function ( color, message )  
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local version  = '0.1.6' 
local manually = false

if manually then
   devices = {48, 122, 123, 127} --device IDs
   Debug('green', 'Checking is in manual mode.')
else  
   devices = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
   Debug('green', 'Checking is in automatic mode.')
end 

local interval     = 10   -- Interval after which a push message is sent.
local numPushMsg   = 5    -- number of push messages
local IDtempOut    = 243  -- IMPORTANT! ID of your outside temperatur sensor (e.g. Yahoo)
local TempOutType  = 'Temperature' --IMPORTANT 'Temperature' or 'value'
local tThreshold   = 15   -- nn° Celsius
local newInterval  = 20   -- increase interval counter  
local phoneID      = {8, 20} -- mobile-IDs
local debug        = true    -- Debug messages yes/no 
local advdebug     = false   -- advanced debug

-- Don't change anything below this line.
local pushMsg = 1
local warning = 1
local counter = 0  
local prevwarning = 0

if (fibaro:countScenes()>1) then
   fibaro:debug('Only one instance!')
   fibaro:abort(); 
end

if (fibaro:getValue(IDtempOut, TempOutType)) == nil then
   Debug('red', 'No outside temperature detected!')
   Debug('red', 'Please correct. Scene is canceled!') 
   fibaro:abort() 
end    

local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
if outsideTemp >= tThreshold then
   interval = newInterval -- increase checking interval 
end  

function tempcheck()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
  if outsideTemp >= tThreshold then
     interval = newInterval
  end  
  return interval
end

Debug('white', "Check for open doors and windows...")
Debug('white', "Outside temperature is " .. outsideTemp.. '°C')
Debug('green', "Current Interval is: " .. interval) 
if not debug then print('Debug is disabled.') end;

function checkOpenDW()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
  local currentDate = os.date("*t");
  local datum = os.date("%d.%m.%Y")
  counter = counter + 1
  local devopen = 0
  for id = 1, #devices do
     local deviceType = fibaro:getType(devices[id] )
     if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
       if (tonumber(fibaro:getValue(devices[id], 'value')) == 1) then
          local name  = fibaro:getName(devices[id])
          local room  = fibaro:getRoomNameByDeviceID(devices[id])
          devopen = devopen + 1
          status  = " ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen! Temp. = " .. outsideTemp.."°"
          if debug then Debug('yellow',datum .. status) end;
          warning = warning + 1
       end
     end
          
     if (warning == prevwarning and warning > 0) then
         -- Tür wurde geschlossen
         warning = 1
         counter = 1
         prevwarning = 0
         pushMsg = 1; 
         if debug then Debug('green', 'Alle Türen und Fenster sind geschlossen.') end;
     end     
     -- Keine Tür geöffnet, Zähler beginnt von vorn 
     if (warning == 0) then 
         counter = 1;
         prevwarning = 0;
         pushMsg = 1; 
     end
      
     -- Tür wurde geöffnet und wieder geschlossen, Warnungen werden zurückgesetzt   
     if (counter > interval+1 and warning > 0) then 
         counter = 1;
         warning = 1;
         prevwarning = 0;
         pushMsg =1;
     end 
  end --for
    
  prevwarning = prevwarning +1  
  -- Tür/Fenster mehr als Interval-Min. offen. Meldung schicken 
  if counter > interval then
     if (devopen > 1) then
        status = status .. ' und '.. devopen .. 'andere.'
     end
     if pushMsg <= numPushMsg then
        Debug('red',datum .. ' Tür/Fenster seit mehr als '.. interval ..' Minuten geöffnet, sende Push Nr. '..pushMsg)
        pushMsg = pushMsg + 1
      for k=1, #phoneID do
          if phoneID[k] ~= nil then
             fibaro:call(phoneID[k], 'sendPush', status )
          end
        end --for
     end
     
     warning = 1
     counter = 1
     prevwarning = 0
     interval = tempcheck()
  end 
  
  if advdebug then Debug('withe', 'Counter: '.. counter) end;
  if advdebug then Debug('withe', 'Warning: '.. warning) end;
  if advdebug then Debug('withe', 'PreWarning: '.. prevwarning) end;
  if advdebug then Debug('withe', 'PushMsg : '.. pushMsg) end;
     
  setTimeout(checkOpenDW, 60*1000)
  
end --function

if (sourceTrigger["type"] == "autostart") then
  checkOpenDW()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  checkOpenDW()
end

Hi Jeep. Klappt immer noch nicht ganz. Mit der neuen Variable macht es mir aber einfachen mein Temp.sensor zu integrieren. Gute Idee!Aber er starten nur einmal die Push´s auf das Handy.Egal wie viel Zeit ich lasse!Schaut dir mal mein Debug an !

[DEBUG] 22:52:49: Checking is in automatic mode.
[DEBUG] 22:52:49: Check for open doors and windows…
[DEBUG] 22:52:49: Outside temperature is 3°C
[DEBUG] 22:52:49: Current Interval is: 1
[DEBUG] 22:53:49: Alle Türen und Fenster sind geschlossen.
[DEBUG] 22:54:49: Alle Türen und Fenster sind geschlossen.
[DEBUG] 22:54:49: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 22:55:49: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 22:55:49: 18.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 1
[DEBUG] 22:56:49: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 22:56:49: 18.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 2
[DEBUG] 22:57:49: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 22:57:49: 18.12.2017 Tür/Fenster seit mehr als 1 Minuten geöffnet, sende Push Nr. 3
[DEBUG] 22:58:50: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 22:59:50: 18.12.2017 ACHTUNG! Fensterkontakt im Raum Arbeitszimmer Guido ist offen! Temp. = 3°
[DEBUG] 23:05:50: 18.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:06:51: 18.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:07:51: 18.12.2017 ACHTUNG! Fenstersensor_Küche im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:17:52: 18.12.2017 ACHTUNG! Terrassentürsensor_M im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:18:52: 18.12.2017 ACHTUNG! Terrassentürsensor_M im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:19:52: 18.12.2017 ACHTUNG! Terrassentürsensor_M im Raum Wohnzimmer ist offen! Temp. = 3°
[DEBUG] 23:20:52: 18.12.2017 ACHTUNG! Terrassentürsensor_M im Raum Wohnzimmer ist offen! Temp. = 3°

Da siehst du das ich auch nach 10min keine Info auf das Handy bekomme. Vielleicht kannst du eine Info noch reinschreiben wo man merkt das alle Fenster wieder geschlossen sind.Habe auch die Fenster immer wieder komplett geschlossen.
Wenn du die Scene so hin bekommst das diese dauerhaft funktioniert und Info´s auf´s Handy gibt kann man sie auch gut als stiller Alarm benutzen!
Grüße Guido

Hi Guido,
hast Du noch Lust eine zu testen? Scheinbar haben wir beide unterschiedliche Testszenarios
und das ist auch gut so. Ich stell mal eine neue Version zur Verfügung.
Mein DEBUG sieht recht gut aus.
Wäre nett wenn Du auch noch mal diese Version testen könntest.
Ich habe mit Interval=2 und 3 Pushmessages getestet.

[DEBUG] 17:52:49: Checking is in automatic mode.
[DEBUG] 17:52:49: Check for open doors and windows…
[DEBUG] 17:52:49: Outside temperature is 0°C
[DEBUG] 17:52:49: Current Interval is: 2
[DEBUG] 17:52:49: Alle Türen und Fenster sind geschlossen.
[DEBUG] 17:53:49: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:54:49: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:55:49: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:55:49: 19.12.2017 Tür/Fenster seit mehr als 2 Minuten geöffnet, sende Push Nr. 1
[DEBUG] 17:56:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:57:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:57:50: 19.12.2017 Tür/Fenster seit mehr als 2 Minuten geöffnet, sende Push Nr. 2
[DEBUG] 17:58:50: 19.12.2017 ACHTUNG! Fenster Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:58:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:59:50: 19.12.2017 ACHTUNG! Fenster Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:59:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 17:59:50: 19.12.2017 Tür/Fenster seit mehr als 2 Minuten geöffnet, sende Push Nr. 3
[DEBUG] 18:00:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:01:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:02:50: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:03:51: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:04:51: Alle Türen und Fenster sind geschlossen.
[DEBUG] 18:05:51: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:06:51: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:07:51: 19.12.2017 ACHTUNG! Türschloss Büro im Raum Buero ist offen! Temp. = 0°
[DEBUG] 18:07:51: 19.12.2017 Tür/Fenster seit mehr als 2 Minuten geöffnet, sende Push Nr. 1
[DEBUG] 18:08:51: Alle Türen und Fenster sind geschlossen.
[DEBUG] 18:09:51: Alle Türen und Fenster sind geschlossen

Changelog für Version 0.1.7
– Neue Prüfbedingung hinzugefügt

--[[
%% autostart
%% properties
--]]

-- Scene File    : CheckDWinterval.lua
-- Purpose       : Check doors and windows at the given interval.
-- Version       : 0.1.7
-- Release Date  : 19 December 2017
-- Trigger       : autostart
-- License       : Copyleft {jeep} siio-forum

-- Either you enter all the door / window IDs in line 26, or you
-- let the script run in automatic mode. Save the line 26, so
-- you do not have to pick all the IDs again,

local sourceTrigger = fibaro:getSourceTrigger();
local Debug = function ( color, message )  
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local version  = '0.1.7' 
local manually = false

if manually then
   devices = {48, 122, 123, 127} --device IDs
   Debug('green', 'Checking is in manual mode.')
else  
   devices = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
   Debug('green', 'Checking is in automatic mode.')
end 

local interval    = 10   -- Interval after which a push message is sent.
local numPushMsg  = 5    -- number of push messages
local IDtempOut   = 243  -- IMPORTANT! ID of your outside temperatur sensor (e.g. Yahoo)
local TempOutType = 'Temperature' --IMPORTANT 'Temperature' or 'value'
local tThreshold  = 15   -- nn° Celsius
local newInterval = 20   -- increase interval counter  
local phoneID     = {8, 20} -- mobile-IDs
local debug       = true    -- Debug messages yes/no 
local advdebug    = false   -- advanced debug

-- Don't change anything below this line.
local pushMsg = 1
local warning = 1
local counter = 0  
local prevwarning = 0

if (fibaro:countScenes()>1) then
   fibaro:debug('Only one instance!')
   fibaro:abort(); 
end

if (fibaro:getValue(IDtempOut, TempOutType)) == nil then
   Debug('red', 'No outside temperature detected!')
   Debug('red', 'Please correct. Scene is canceled!') 
   fibaro:abort() 
end    

local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
if outsideTemp >= tThreshold then
   interval = newInterval -- increase checking interval 
end  

function tempcheck()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
  if outsideTemp >= tThreshold then
     interval = newInterval
  end  
  return interval
end

Debug('white', "Check for open doors and windows...")
Debug('white', "Outside temperature is " .. outsideTemp.. '°C')
Debug('green', "Current Interval is: " .. interval) 
if not debug then print('Debug is disabled.') end;

function checkOpenDW()
  local outsideTemp = math.floor(fibaro:getValue(IDtempOut, TempOutType));
  local currentDate = os.date("*t");
  local datum = os.date("%d.%m.%Y")
  counter = counter + 1
  local devopen = 0
  for id = 1, #devices do
     local deviceType = fibaro:getType(devices[id] )
     if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
        if (tonumber(fibaro:getValue(devices[id], 'value')) == 1) then
           local name  = fibaro:getName(devices[id])
           local room  = fibaro:getRoomNameByDeviceID(devices[id])
           devopen = devopen + 1
           status  = " ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen! Temp. = " .. outsideTemp.."°"
           if debug then Debug('yellow',datum .. status) end;
           warning = warning + 1
        end
             
     end
          
     if (warning == prevwarning and warning > 0) then
         -- Tür wurde geschlossen
         warning = 1
         counter = 1
         prevwarning = 0
         pushMsg = 1; 
        
     end     
     -- Keine Tür geöffnet, Zähler beginnt von vorn 
     if (warning == 0) then 
         counter = 1;
         prevwarning = 0;
         pushMsg = 1; 
     end
      
     -- Tür wurde geöffnet und wieder geschlossen, Warnungen werden zurückgesetzt   
     if (counter > interval+1 and warning > 0) then 
         counter = 1;
         warning = 1;
         prevwarning = 0;
         pushMsg =1;
     end 
  end --for
  if devopen == 0 then
        counter = 1;
        warning = 1;
        prevwarning = 0;
        pushMsg =1;
        if debug then Debug('green', 'Alle Türen und Fenster sind geschlossen.' ) end;
  end  
  prevwarning = prevwarning +1  
  -- Tür/Fenster mehr als Interval-Min. offen. Meldung schicken 
  if counter > interval then
     if (devopen > 1) then
        status = status .. ' und '.. devopen .. 'andere.'
     end
     if pushMsg <= numPushMsg then
        Debug('red',datum .. ' Tür/Fenster seit mehr als '.. interval ..' Minuten geöffnet, sende Push Nr. '..pushMsg)
        pushMsg = pushMsg + 1
      for k=1, #phoneID do
          if phoneID[k] ~= nil then
             fibaro:call(phoneID[k], 'sendPush', status )
          end
        end --for
     end
     
     warning = 1
     counter = 1
     prevwarning = 0
     interval = tempcheck()
  end 
  
  if advdebug then Debug('withe', 'Counter: '.. counter) end;
  if advdebug then Debug('withe', 'Warning: '.. warning) end;
  if advdebug then Debug('withe', 'PreWarning: '.. prevwarning) end;
  if advdebug then Debug('withe', 'PushMsg : '.. pushMsg) end;
     
  setTimeout(checkOpenDW, 60*1000)
  
end --function

if (sourceTrigger["type"] == "autostart") then
  checkOpenDW()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  checkOpenDW()
end

Hi Jepp,
war gestern keine Zeit mehr zu testen. Also, erstmal funktioniert das Script super mit den Fensterabfragen und die Push´s kommen auch bei unterschiedlichen Fenstern. Super, echt gute Arbeit. Allerdings hab ich mir nun die Temperaturbedingungen angesehen. Die Push´s kommen auch wenn die Temp.höher ist als bei tThreshold angegeben. Kannst du dir das nochmal anschauen.
Grüße Guido

Hi Guido,

das ist so beabsichtigt und wurde als Vorschlag eines anderen Users implementiert. Die höhere
Außentemperatur soll nur ein längeres Intervall aktivieren, z.B. bei +15°, kann man ein wenig
länger Lüften und muss keine Angst haben das die Bude abkühlt. Da wird dann einfach der intervall
durch newinterval ersetzt. Eine PUshmeldung muss auch hier gesendet werden, nur dauert es etwas
länger. Würde gar keine gesendet werden ist die Gefahr groß dass man das Haus verläßt und Türen
und Fenster offen bleiben.
Nochmals vielen Dank für Dein unermüdliches Testen

Hallo Jeep,
nochmal zum Abschluss, hat spass gemacht diese Projekt mit zu begleiten. Hab auch wieder einiges über Lua gelernt. Jetzt ist mir auch klar wie du die Variable newinterval gemeint hast. Mein nächste Projekt ist nun diese schöne Szene mit in mein Alarmscript zu integrieren. Gerne wieder und dir ein schönes Weihnachtsfest und guten Rutsch. Wenn nicht nochmal, bis nächstes Jahr. Grüße Guido

Hallo Guido,
nochmals Danke für die vielen Tests und auch Dir schöne Weihnachten und guten Rutsch.

Hallo zusammen,
und erstmal allen ein gesundes Neues Jahr. Es gibt ein Update für das CheckDWIntervall Script. Meine Frau war mit einigen Funktionen noch nicht ganz zufrieden, :wink: deshalb habe ich die Zeit genutzt und noch ein paar Dinge hinzugefügt.
Was wurde in dieser Version geändert? Die Temperaturausgabe wird jetzt mit 2 Nachkommastellen angezeigt. Es gibt eine neue Variable ‘pushAgain’ in der man die Pushnachrichten nach einer einstellbaren Zeit wieder aktivieren kann. So geraten offene Fesnter nicht ganz in Vergessenheit.
Außerdem wurde die Variable ‘excludedev’ eingeführt und eine Funktion hinterlegt in der man Geräte von der Prüfung ausnehmen kann.
Und damit auch diese Geräte nicht in Vergessenheit geraten, wurden noch 2 Variablen für einen Zeitraum hinzugefügt. Außerhalb des Zeitraums wird dann wieder geprüft so das nächtens keine Tür oder Fenster offen bleibt.
Und natürlich wurde das Readme für die neuen Variablen aktualisiert.

Changelog für Version 0.2.1
– Temperaturausgabe mit 2 Nachkommastellen
– Neue Variable pushAgain, aktiviert wieder die Pushmeldungen nach einstellbarer Zeit.
– Neue Variable und Function excludedev, hier kann man Geräte von der Prüfung ausnehmen.
– Neue Variablen begPeriod und endPeriod, Zeitraum in dem keine Prüfung der Geräte die in der Variablen ‚excludedev‘ hinterlegt sind erfolgt.
– Den Code an einigen Stellen optimiert.

--[[
%% autostart
%% properties
--]]

-- Scene File    : CheckDWinterval.lua
-- Purpose       : Check doors and windows at the given interval.
-- Version       : 0.2.1
-- Release Date  : 03 January 2018
-- Trigger       : autostart
-- License       : Copyleft {jeep} siio-forum

-- Either you enter all the door / window IDs in line 26, or you
-- let the script run in automatic mode. Save the line 26, so
-- you do not have to pick all the IDs again,

local sourceTrigger = fibaro:getSourceTrigger();
local Debug = function ( color, message )  
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local version  = '0.2.1' 
local manually = false

if manually then
   devices = {48, 122, 123, 127} --device IDs
   Debug('green', 'Checking is in manual mode.')
else  
   devices = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
   Debug('green', 'Checking runs in automatic mode.' )
end 
  
local interval    = 10   -- Interval after which a push message is sent.
local numPushMsg  = 3    -- number of push messages
local pushAgain   = 3600 -- Activate pushMsg again after specified time.
local IDtempOut   = 243  -- IMPORTANT! ID of your outside temperatur sensor (e.g. Yahoo)
local excludedev  = {259,360}  --This device(s) are exclcuded from check
local begPeriod   = "08:00" -- During this period, no check is performed on  
local endPeriod   = "18:30" -- the sensors contained in the variable "excludedev".
local TempOutType = 'Temperature' --IMPORTANT 'Temperature' or 'value'
local tThreshold  = 15   -- nn° Celsius
local newInterval = 15   -- increase interval counter  
local phoneID     = {8, 20} -- mobile-IDs
local debug       = true    -- Debug messages yes/no 
local advdebug    = false   -- advanced debug

-- Don't change anything below this line.
local pushMsg = 1
local warning = 1
local counter = 0  
local prevwarning = 0

if (fibaro:countScenes()>1) then
   fibaro:debug('Run only one instance!')
   fibaro:abort(); 
end

if (fibaro:getValue(IDtempOut, TempOutType)) == nil then
   Debug('red', 'No outside temperature detected!')
   Debug('red', 'Please correct. Scene is canceled!') 
   fibaro:abort() 
end    

function excludecheck(excludedev, devid)
  if (os.date("%H:%M", os.time())) > begPeriod and (os.date("%H:%M", os.time())) < endPeriod then
     for i=1,#excludedev do
        if excludedev[i] == devid then 
           return true
        end
     end --for
  end  
  return false
end  

function tempcheck()
  local outsideTemp = tonumber( fibaro:getValue(IDtempOut, TempOutType));
  stringTemp = string.format("%.2f", outsideTemp)
  if outsideTemp >= tThreshold then
     interval = newInterval
  end  
  return stringTemp
end

local outsideTemp = tempcheck()
Debug('white', "Check for open doors and windows... Version ".. version)
Debug('white', "Outside temperature is " .. stringTemp.. '°C')
Debug('green', "Current Interval is: " .. interval) 
if not debug then print('Debug is disabled.') end;

function checkOpenDW()
  local outsideTemp = tempcheck()
  local currentDate = os.date("*t");
  local datum = os.date("%d.%m.%Y")
  counter = counter + 1
  local devopen = 0
  for id = 1, #devices do
     if (tonumber(fibaro:getValue(devices[id], 'value')) == 1) then
        local name  = fibaro:getName(devices[id])
        local room  = fibaro:getRoomNameByDeviceID(devices[id])
        if excludecheck(excludedev, devices[id]) ~= true then      
           devopen = devopen + 1
           status  = " ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen! Temp. = " .. outsideTemp.."°"
           if debug then Debug('yellow',datum .. status) end;
           warning = warning + 1
        end  
     end
            
     if (warning == prevwarning and warning > 0) then
         -- Tür wurde geschlossen
         warning = 1; counter = 1; prevwarning = 0; pushMsg = 1; 
     end     
     
     if (warning == 0) then 
        -- Keine Tür geöffnet, Zähler beginnt von vorn 
         counter = 1; prevwarning = 0; pushMsg = 1; 
     end
      
     if (counter > interval+1 and warning > 0) then 
         -- Tür wurde geöffnet und wieder geschlossen, Warnungen werden zurückgesetzt   
         counter = 1; warning = 1; prevwarning = 0; pushMsg =1;
     end 
  end --for
  if devopen == 0 then
     counter = 1; warning = 1; prevwarning = 0; pushMsg =1;
     if debug then Debug('green', 'Alle Türen und Fenster geschlossen.') end;
  end  
  prevwarning = prevwarning +1  
  -- Tür/Fenster mehr als Interval-Min. offen. Meldung schicken 
  if counter > interval then
     if (devopen > 1) then
        status = status .. ' Total: '.. devopen 
     end
     if pushMsg <= numPushMsg then
        Debug('red',datum .. ' Tür/Fenster seit mehr als '.. interval ..' Minuten geöffnet, sende Push Nr. '..pushMsg)
        status = status .. ',Push-Nr.: ' .. pushMsg
        if pushMsg == numPushMsg then status = status ..' Letzte!' end 
        pushMsg = pushMsg + 1
        uxtime = os.time(dt);
        for k=1, #phoneID do
           if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', status )
           end
        end --for
     end
     warning = 1; counter = 1; prevwarning = 0
  end 
  
  if advdebug then Debug('withe', 'Counter: '.. counter) end;
  if advdebug then Debug('withe', 'Warning: '.. warning) end;
  if advdebug then Debug('withe', 'PreWarning: '.. prevwarning) end;
  if advdebug then Debug('withe', 'PushMsg : '.. pushMsg) end;
  
  if pushMsg > numPushMsg and (os.time() - uxtime) >  pushAgain and pushAgain > 0 then 
     pushMsg = 1 
  end
    
  setTimeout(checkOpenDW, 60*1000)
end --function

if (sourceTrigger["type"] == "autostart") then
   checkOpenDW()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  checkOpenDW()
end

Hallo Jeep,

vielen Dank für das überarbeitete Script. Hab es gerade mal getestet und funktioniert sehr gut. Deine Frau sollte immer mal beim Testen deiner Scripts mit helfen. :wink: Gute Idee mit dem Aussetzen einiger Module.
Hab mir übrigens aus deinem Script ein paar Zeilen raus genommen und diese für ein kurzes Script benutzt welche ich mit der Alarmscene schaltet. Damit weiß ich dann auch genau wo der Alarm losgegangen ist. Vielleicht soll ich es mal hier im Forum ablegen damit auch andere dieses benutzen können.

Grüße Guido

Hallo jeep, also alle Achtung für dein Script.
Ich würde gern dein Script verwenden, allerdings möchte ich keine Türen und Fenster überwachen sondern Fibaro Zwischenstecker.
Ich bin leider nicht wirklich fit in Lua, trotzdem habe ich versucht es anzupassen. Mit dem Erfolg, dass es nicht klappt.
Nun wollte ich fragen ob Du mir da helfen könntest. Also ich möchte beim scharfschalten der Alarmanlage in einem Zeitrahmen prüfen, ob sich der Status des Wallplugs ändert. Wenn ich dann noch eine Push Nachricht aufs Handy bekomme, wäre alles vollkommen.
Gruß secundani

Hi @secundani,
dass ist bestimmt nicht einfach, da das script schon sehr speziell auf Tür/Fenstersensoren eingestellt ist. Aber bestimmt sind einige Zeilen Code wieder verwendbar. Dann müsste man noch Dein Alarmscript kennen usw. Für etwas wie Alarmscript sollten die Wallplugs dann die Szene auch triggern. Ich häng Dir mal ein paar Zeilen Code an mit denen Du den Status des Wallplug (An/Aus) prüfen kannst. Vielleicht kannst Du darauf aubbauen. Viel Erfolg.

IDwallplug1 = 10
wpvalue = fibaro:get(IDwallplug1, 'value')	
if wpvalue == '1' then
 fibaro:call(phoneID, "sendPush", "Wallplug1 wurde eingeschaltet");
end

@Jeep

Das ist natürlich schon anspruchsvoller als dein Skript davor.

Besteht hier irgendwie die Möglichkeit Netatmo als Temperatur Sensor zu nehmen? Habe es versucht, war aber nix.

@Martin,
bis jetzt kein Netatmo im Einsatz. Mich haben die negativen Bewertungen einfach abgeschreckt. So das ich dazu gar nichts sagen kann.
Aber vielleicht kann jemand hier im Forum der Netatmo hat was dazu beitragen.

Hallo Jeep…erst mal danke für deine Skripte…habe jetzt mal Zeit gefunden dieses Programm zu testen, aber bei mir funktioniert es nicht so wie du es beschreibst. Ich nutze die manuelle Einstellung der Sensoren, da ich paar Zweckentfremdet habe. Leider scheint die Ausnahme nicht über 0:00uhr zu funktionieren also z.B. 21:40 -6:30 Uhr…aber ich habe gerne ein kleines Fenster über Nacht auf, aber auch gerne über Tag überprüft (außer für eine nochmalige Lüftung). Auch währe es schön, wenn man die automatische Funktion wählt, würde ich gerne Module raus nehmen können!? Vielleicht bekommst du ja das tagübergreifende hin.

Grüße Sven

Hallo Sven,
ich habe schon seit längerem diese Version fertig, habe aber leider vergessen sie hochzuladen. Ich denke dass Du Dein Problem mit der Variable ignoredev vorerest mal lösen kannst. Das Readme-PDF ist auch angepasst.

--[[
%% autostart
%% properties
--]]

-- Scene File    : CheckDWinterval.lua
-- Purpose       : Check doors and windows at the given interval.
-- Version       : 0.2.2
-- Release Date  : 15 February 2018
-- Trigger       : autostart
-- License       : Copyleft {jeep} siio-forum

-- Either you enter all the door / window IDs in line 26, or you
-- let the script run in automatic mode. Save the line 26, so
-- you do not have to pick all the IDs again,

local sourceTrigger = fibaro:getSourceTrigger();
local Debug = function ( color, message )  
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local version  = '0.2.2' 
local manually = false

if manually then
   devices = {48, 122, 123, 127} --device IDs
   Debug('green', 'Checking is in manual mode.')
else  
   devices = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
   Debug('green', 'Checking is in automatic mode.' )
end 
  
local interval    = 10   -- Interval after which a push message is sent.
local numPushMsg  = 3    -- number of push messages
local pushAgain   = 3600 -- Activate pushMsg again after specified time.
local IDtempOut   = 243  -- IMPORTANT! ID of your outside temperatur sensor (e.g. Yahoo)
local excludedev  = {259} --This device(s) are exclcuded temporary from check
local ignoredev   = {360}      -- This devices are never checked
local begPeriod   = "08:00" -- During this period, no check is performed on the 
local endPeriod   = "18:30" -- sensors contained in the variable "excludedev".
local TempOutType = 'Temperature' --IMPORTANT 'Temperature' or 'value'
local tThreshold  = 15   -- nn° Celsius
local newInterval = 15   -- increase interval counter  
local phoneID     = {8, 20} -- mobile-IDs
local debug       = false   -- Debug messages yes/no 
local advdebug    = false   -- advanced debug

-- Don't change anything below this line.
local pushMsg = 1
local warning = 1
local counter = 0  
local prevwarning = 0

if (fibaro:countScenes()>1) then
   fibaro:debug('Only one instance allowed!')
   fibaro:abort(); 
end

if (fibaro:getValue(IDtempOut, TempOutType)) == nil then
   Debug('red', 'No outside temperature detected!')
   Debug('red', 'Please correct. Scene is canceled!') 
   fibaro:abort() 
end    

function excludecheck(excludedev, devid)
  if (os.date("%H:%M", os.time())) > begPeriod and (os.date("%H:%M", os.time())) < endPeriod then
     for i=1,#excludedev do
        if excludedev[i] == devid then 
           return true
        end
     end --for
  end  
  return false
end  

function ignorecheck(ignoredev, devid)
  for i=1,#ignoredev do
        if ignoredev[i] == devid then 
           return true
        end
     end --for
  return false
end  

function tempcheck()
  local outsideTemp = tonumber( fibaro:getValue(IDtempOut, TempOutType));
  local stringTemp = string.format("%.2f", outsideTemp)
  if outsideTemp >= tThreshold then
     interval = newInterval
  end  
  return stringTemp
end

local outsideTemp = tempcheck()
Debug('white', "Check for open doors and windows... Version ".. version)
Debug('white', "Outside temperature is " .. tempcheck() .. '°C')
Debug('green', "Current Interval is: " .. interval) 
if not debug then print('Debug is disabled.') end;

function checkOpenDW()
  local outsideTemp = tempcheck()
  local currentDate = os.date("*t");
  local datum = os.date("%d.%m.%Y")
  counter = counter + 1
  local devopen = 0
  for id = 1, #devices do
     if (tonumber(fibaro:getValue(devices[id], 'value')) == 1) then
        local name  = fibaro:getName(devices[id])
        local room  = fibaro:getRoomNameByDeviceID(devices[id])
        if excludecheck(excludedev, devices[id]) ~= true 
           and ignorecheck(ignoredev,devices[id]) ~= true then      
           devopen = devopen + 1
           status  = " ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen! Temp. = " .. outsideTemp.."°"
           Debug('yellow',datum .. status)
           warning = warning + 1
        end  
     end
            
     if (warning == prevwarning and warning > 0) then
         -- Tür wurde geschlossen
         warning = 1; counter = 1; prevwarning = 0; pushMsg = 1; 
     end     
     
     if (warning == 0) then 
        -- Keine Tür geöffnet, Zähler beginnt von vorn 
         counter = 1; prevwarning = 0; pushMsg = 1; 
     end
      
     if (counter > interval+1 and warning > 0) then 
         -- Tür wurde geöffnet und wieder geschlossen, Warnungen werden zurückgesetzt   
         counter = 1; warning = 1; prevwarning = 0; pushMsg =1;
     end 
  end --for
  if devopen == 0 then
     counter = 1; warning = 1; prevwarning = 0; pushMsg =1;
     if debug then Debug('green', 'Alle Türen und Fenster geschlossen.') end;
  end  
  prevwarning = prevwarning +1  
  -- Tür/Fenster mehr als Interval-Min. offen. Meldung schicken 
  if counter > interval then
     if (devopen > 1) then
        status = status .. ' Total: '.. devopen 
     end
     if pushMsg <= numPushMsg then
        Debug('red',datum .. ' Tür/Fenster seit mehr als '.. interval ..' Minuten geöffnet, sende Push Nr. '..pushMsg)
        status = status .. ',Push-Nr.: ' .. pushMsg
        if pushMsg == numPushMsg then status = status ..' Letzte!' end 
        pushMsg = pushMsg + 1
        uxtime = os.time(dt);
        for k=1, #phoneID do
           if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', status )
           end
        end --for
     end
     warning = 1; counter = 1; prevwarning = 0
  end 
  
  if advdebug then Debug('withe', 'Counter: '.. counter) end;
  if advdebug then Debug('withe', 'Warning: '.. warning) end;
  if advdebug then Debug('withe', 'PreWarning: '.. prevwarning) end;
  if advdebug then Debug('withe', 'PushMsg : '.. pushMsg) end;
  
  if pushMsg > numPushMsg and (os.time() - uxtime) >  pushAgain and pushAgain > 0 then 
     pushMsg = 1 
  end
    
  setTimeout(checkOpenDW, 60*1000)
end --function

if (sourceTrigger["type"] == "autostart") then
   checkOpenDW()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  checkOpenDW()
end

Danke dir…werde es testen, aber scheint so zu funktionieren, wie ich es brauche!

Hi Jeep,

gibt es eine Möglichkeit zu sagen, ab z.B. 22° Außentemperatur, gar keine Push weil Fenster ganzen Tag offen sind? Im Sommer sind Fenster wenig zu,
so dass das noch spannend wäre.

Mit “local newInterval = 15 – increase interval counter” irgendwie ?

Grüße