Prüfung offene Fenster nach Uhrzeit

Habe vorher bei meinem Mac in eine Textdatei und zurück kopiert, war kein Problem, der Fehler muss beim Hochladen passiert sein und zwar reproduzierbar, denn ich habe ja das Script zweimal hochgeladen. Beim zweiten Mal habe ich das Script dann von der siio Seite in meine HC2 kopiert und erhielt dann selber die beschriebene Fehlermeldung.

Jedenfalls haben wir es nicht nur einmal geschafft, dass nachts die Haustür offen geblieben ist, unsere Kinder haben da nur ein geringes Verständnis für solche Sachen. Das war dann das Motiv für dieses Script ? Gruss, Norbert

Hallo zusammen,

ich nutze das Script jetzt auch, geht gut.

Wie könnte ich jetzt anstelle der Fibaro Push Nachricht eine Pushovernachricht erhalten mit dem selben Inhalt.

Pushover verschicke ich so: fibaro:setGlobal(“pushover”,“Alarm wurde aktiviert;82;1;siren”)

wie ich hier beschrieben hatte: http://www.siio.de/board/thema/pushover-nachrichten-vd/

Gruß Sascha

Ohne Änderung im Code gar nicht. Hier wird ein Array durchlaufen, welche die IDs einzeln durchgeht.

Du müsstest also die for-Schleife entfernen, dort die globale Variable setzen und den Knopf des VDs drücken.

Gruß

Moin!

Nach dem Anlegen der Variablen und dem Einfügen des Codes in eine Szene, lief es von Anfang an. Vielen Dank dafür! ???

Grüße

Christian

@Chriss 1873 kannst du den Code mal hier posten.

Aber klar doch! :slight_smile:

--[[
%% autostart
%% properties
%% events
%% globals
--]]
local phoneID = {1022, 1023, 1199} -- Handy-IDs
local maxID = 1000
local timeCheck = "22:00"
local warning = 0
 
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
 
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
  local currentDate = os.date("*t");
  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 string.format("%02d:%02d", currentDate.hour, currentDate.min) == timeCheck ))
    )
    then
    Debug('white', "Prüfe offene Fenster")
    for id = 1, maxID do
      local deviceType = fibaro:getType(id)
      if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
        if (tonumber(fibaro:getValue(id, 'value')) == 1) then
          local name = fibaro:getName(id)
          local room = fibaro:getRoomNameByDeviceID(id)
          Debug('red', "ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen!")
		  warning = warning + 1
          for k=1, maxID do
            if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' ..name.. ' im Raum ' ..room.. ' ist offen!')
            end
          end
        end
      end
    end
	if warning == 0 then
      for k=1, maxID do
        if phoneID[k] ~= nil then
          fibaro:call(phoneID[k], 'sendPush', 'alle Fenster und Türen geschlossen')
        end
       end
          Debug('green', "alle Fenster und Türen geschlossen!")
	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
    fibaro:call(195, "turnOff");
  end
end
 

Hi, was muss ich weglassen damit ich den Status der Fenster jederzeit manuell abfragen kann? Zeile 9 reicht nicht hab ich festgestellt :slight_smile:

Hallo Christian,
du kannst in Zeile 9 folgendes eintragen, dann nimmt er immer die aktuelle Zeit:

local timeCheck = os.date("%H:%M")

Gruß

Danke Jeff.

Hallo chriss1873

ich habe Dein Script genauso übernommen.

Bei mir passiert leider überhaupt nichts.

Ich habe es mal angehängt.

Bin echt am verzweifeln!!

Habe es auf manuell / automatisch eingestellt, keine Funktion bei beiden.

Gruß

Christian

Moin Christian!

Zu allererst: es ist nicht mein Script. Ich bin viel zu unfähig dafür. :wink:

Bei mir funktioniert es aber nach wie vor und auch regelmäßig. Hast Du die richtigen IDs Deiner Handys genommen?

Viele Grüße

Christian

Was steht den bei Dir im Debug?

Hallo
danke für die Rückmeldung.
Bei mir steht schon drin, dass die entsprechenden Fenster geschlossen sind.
Wenn ich direkt im hc2 die Szene auslöse, dann erscheint im Debug Fenster die richtige Meldung und ich erhalte eine Push aufs Handy.

Wenn ich aber von unterwegs prüfe und die Szene starte, kommt keine Push.

Gruß

Christian

Hallo
ich habe auch das Problem, das ich die Szene nicht manuell starten kann, dann passiert im Debug Modus auch nichts?
Habe die Zeile 9 durch “local timeCheck = os.date(”%H:%M")" ersetzt. Verstehe nicht was ich falsch mache, wenn ich im HC 2 die Szene auf off und anschhließend auf on stellen
funktioniert alles, aber auf dem Handy nicht???

Danke für eure Unterstützung

Marcel

Habe das Script von hier auch im Einsatz. Läuft seit 1 Jahr tadellos. Habe jetzt nur geringfügige Änderungen in der Abfrage der Sensoren gemacht, die “for” Schleife optimiert (dass das Script nicht immer bis maxID 1000 zählen muss) und ein wenig entschlackt.

--[[
%% autostart
%% properties
--]]
-- check if doors or windows are open at a given time
-- altered by Jeep
local sourceTrigger = fibaro:getSourceTrigger();
local phoneID = {8, 20}   -- mobile IDs
local timeCheck = "21:50" -- perform check at this time
local warning = 0 
local version = "0.1.1"
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end

local function checkDoors()
  local dwSensors =  fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
  Debug('white', "Prüfe offene Fenster und Türen ".. os.date('%c'))
  for id = 1, #dwSensors do
      if (tonumber(fibaro:getValue(dwSensors[id], 'value')) == 1) then
        local name = fibaro:getName(dwSensors[id])
        local room = fibaro:getRoomNameByDeviceID(dwSensors[id])
         Debug('red', "ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen!")
         warning = warning + 1
         for k=1, #dwSensors do
            if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' ..name.. ' im Raum ' ..room.. ' ist offen!')
            end
         end
     end
  end --for
  
  if warning == 0 then
     for k=1, #phoneID do
         if phoneID[k] ~= nil then
            fibaro:call(phoneID[k], 'sendPush', 'alle Fenster und Türen geschlossen')
         end
     end
     Debug('green', "alle Fenster und Türen geschlossen! ".. os.date('%c') )
  end 
end --function

function main()
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if ( (string.format("%02d:%02d", currentDate.hour, currentDate.min) == timeCheck )) then
      checkDoors()
  end
  setTimeout(main, 60*1000)
end
  
if (sourceTrigger["type"] == "autostart") then  
   main()
else  
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if ( startSource["type"] == "other" ) then
     checkDoors()
  end
end

@Jeep

Danke für deine Mühe!

Geht auch statt einer bestimmten Zeit, eine variable? Wie variable Nacht prüfe Türen?

@Martin
dieses script ist zu einfach gestrickt und prüft nur zu einer bestimmten Uhrzeit. Aber ich denke das Du dieses :
Script

für solche Zwecke gut nutzen kannst, da man sehr viele Parameter einstellen kann. Schau Dir auch das beiliegende PDF an, da sind die Parameter ausführlich beschrieben.
Viel Erfolg.

Danke! Ich schaue es mir mal an.

Hallo
ich habe versucht die Scene von Jeep so umbauen, damit ich die Push Nachricht bekommen kann wenn die Lichter AN sind… Leider ohne Erfolg :frowning:
Kann mir jemand helfen :wink:

Danke!

Hallo,

verstehe ich das richtig, das ich das Skript nur rüber kopieren muss und alles andere (Sensoren, Mitteilung) selbst eingetragen wird?
Handy ID´s muss ich noch selbst eintragen und die gewünschte Uhrzeit abändern.