Abfrage Fenster auf/zu

Schönes Script AlexM!
Diese Szene habe ich jetzt in meine Abwesenheitsschaltung integriert.
Sprich, wenn ich auf “Abwesend” schalte, wird auch geprüft, ob alle Fenster zu sind.
Benachrichtigung erfolgt per Push, wollte ich aber noch um den PopUp-Service ergänzen.

Hi,

basierend auf dem Script zur Strumwarnung könnte die Abfrage auch so aussehen:
Das Script triggere ich bei Bedarf bzw. wenn ich Abwesenheit setze.

--[[
%% properties
%% events
%% globals
--]]

local phoneID = {223} -- Handy-IDs
local maxID = 1000

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

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!")
        	for k=1, maxID do
            	if phoneID[k] ~= nil then
			        fibaro:call(tonumber(phoneID[k]), 'sendPush', 'ACHTUNG: ' ..name.. ' im Raum  ' ..room.. '  ist offen!')
		        end
            end
      		--PopUp-Text; Ruft sep Szene auf und setzt zuvor eine GV mit dem TExt
      		--fibaro:setGlobal("PopUpText", 'ACHTUNG: ' ..name.. ' im Raum  ' ..room.. '  ist noch offen!');
			--fibaro:startScene(215);
          	--end
        end
    end
Debug('green', "Überprüfung abgeschlossen. ")

for k=1, maxID do
	if phoneID[k] ~= nil then
    	fibaro:call(tonumber(phoneID[k]), 'sendPush', 'Überprüfung abgeschlossen.')
	end
end

Hallo zusammen,

ich kapere mal diesen Thread, weil ich auch eine Frage zur Fensterabfrage habe.
Ich habe eine Szene, die meldet mir per Push, wenn in der Nacht ein Fenster aufgeht.
Wenn zwischen 00:00 und 05:00 Uhr das Fenster aufgeht, bekomme ich eine Push. Das funktioniert gut.

Jetzt möchte ich zusätzlich die Bedingung umdrehen.
Wenn das Fenster auf ist und die Uhrzeit in den Bereich von 00:00 bis 05:00 Uhr geht, dann möchte ich auch eine Push bekommen.

Dies ist mein Skript bisher.
Könnt ihr mir einen Tipp geben, wie ich das Auslösen zusätzlich umdrehe?

--[[
%% autostart
%% properties
9 value
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger()

local nachtstart = 0000
local nachtende = 0500

if
	tonumber(fibaro:getValue(9, "value")) > 0
and 
     tonumber(os.date("%H%M")) >= nachtstart and tonumber(os.date("%H%M")) <= nachtende    

then
	fibaro:call(25, "sendPush", "Fenster-Alarm Gäste-WC!")
end

Ich bin mir jetzt nicht sicher, ob ich meine Frage richtig formuliert habe.
Das Skript hier in diesem Thread löst ja auf Starten der Szene eine allgemeine Fensterabfrage aus.
Das ist genau das, was ich brauche.
Ich möchte aber, dass meine HC2 dies zu einer bestimmten Uhrzeit automatisch macht.

Also um 22:00 Uhr (zum Beispiel) löse die Szene aus, mit der dann alle Fenster abgefragt werden und zurück gemeldet wird, dass ein Fenster offen ist.
Das Abfrageskript hier aus dem Thread funktioniert ja gut. Aber wie bekomme ich das automatisch zeitgesteuert hin, ohne dass ich einen zusätzlichen Aktoren habe (wie z.B. einen Bewegungsmelder) der die Szene auslöst? Also rein nach Uhrzeit?

Hi,

Entweder Du programmierst eine IF-Schleife darum oder
Du legst eine zeitgesteuerte Block-Szene an. Bei DANN wählst du Deine Fensterszene aus.

Viele Grüße Hoggle

Leider funktioniert das nicht.
Mich beschleicht das Gefühl, dass die HC2 die Szene nicht startet zu der angegebenen Uhrzeit.
Habe es jetzt wie folgt geschrieben:

--[[
%% autostart
%% properties
9 value
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger()

local nachtstart = 2120

if (fibaro:countScenes() > 2)
    then
    fibaro:abort();   
end

if
     tonumber(os.date("%H%M")) == nachtstart    
then
	if
    	tonumber(fibaro:getValue(9, "value")) > 0
    then
		fibaro:call(25, "sendPush", "Fenster noch offen")
    end
end

Die Idee ist ja, um 21:20 Uhr die Szene zu starten und wenn dann das Fenster auf ist die Benachrichtigung zu verschicken.
Sinnigerweise müsste ich ja ganz oben in den Optionen der Szene die Uhrzeit als auslösende Bedingung angeben. Dort wo ich jetzt noch das Fenster eingetragen habe.
Nur wie mache ich das? Geht das überhaupt?

Hi,
könnte an der Art der Prüfung von “nachtstart” liegen…

Schau mal hier, da hat boomx ein Script gepsotet:
http://www.siio.de/board/thema/pruefung-offene-fenster-nach-uhrzeit/

VG Hoggle

Hoggle, Du schreibst, dass Du das Script gerne um PopUp Notification ergänzen wolltest. Kannst Du das vielleicht dann nochmal einstellen? Ich scheitere nämlich gerade genau daran, da ich mit der IPhone App die Szene nicht gestartet bekomme, so dass ich PushNotifications bekomme - sie startet zwar, aber die Push´s kommen nicht an. Das klappt nur wenn ich die Szene über den Desktop starte. Angeblich soll das mittels der App nur über einen Delay-Zusatz oder über PopUp funktionieren, was ich aber beides nicht hinbekomme (oder gibt es sonst noch eine Alternative?). Wenn ich es vom Desktop starte läuft es wie gesagt super durch.

Hallo Hoggle,

könnte man dein Skript vom 24. Mai so verändern/erweitern, dass anstatt (oder zusätzlich) zur abschließenden “Überprüfung abgeschlossen” Mitteilung, noch eine Nachricht rausgeht, wenn auch wirklich alle Fenster/Türen geschlossen sind?

Grüße

Ok, mit folgender Erweiterung des Skripts klappt es schonmal:

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')) == 0) then
            Debug('green', "ALLES ZU!")
        	for k=1, maxID do
            	if phoneID[k] ~= nil then
			        fibaro:call(tonumber(phoneID[k]), 'sendPush', 'Alle Fenster und Türen sind geschlossen. :)')
		        end
            end
        end
    end
  end

Oder gibt es eine besser/elegantere Lösung? :slight_smile:

Hi,

@ horni, sofern ein Fenster offen ist, teilt das Script mir welches Fenster das ist und die abschließende Prüfung kommt immer hinterher, so dass weiß, das Script ist durchgelaufen. Wenn alle Fenster zu wären, würde nur die abschließende Meldung kommen.
Aber klar kann man das auch anders programmieren.

@jojo1967: das Thema hatte ich noch nicht weiter verfolgt. Hast Du die PopUp-Sequenz in einem separaten Script laufen oder in Deinem Prüfungs-Script implementiert?

VG Hoggle

Ich habe es jetzt hinbekommen mit diesem LUA-Script

------------------------------------- POPUP MESSAGE
HomeCenter.PopupService.publish({
– title (required)
title = “Door/Window status”,
– subtitle(optional), e.g. time and date of the pop-up call
subtitle = os.date("%I:%M:%S %p | %B %d, %Y"),
– content header (optional)
contentTitle = titleInfo,
– content (required)
contentBody = OpenWinDoor,
– notification image (assigned from the variable)
img = “”,
– type of the pop-up
type = typeInfo,
– buttons definition
buttons = { { caption = ‘OK’, sceneId = 0 } }
})
end

Moin,

ich bräuchte da nochmal Hilfe, wie ich das von Hoogle am 24.5. gepostete Script so erweitern kann, dass es mir zusätzlich zur abschließenden „Überprüfung abgeschlossen“ Mitteilung, noch eine Nachricht schickt, wenn auch wirklich alle Fenster/Türen geschlossen sind?

Meine bisherige “Lösung” war mumpitz, da für jeden einzelnen sicheren Sensor eine Nachricht verschickt wurde.

Kann mir jemand helfen?
Danke.

Hi,

Die „Überprüfung abgeschlossen“-Mitteilung sagte eigentlich genau das aus.
Wenn alle Fenster zu sind, gibt es nur die „Überprüfung abgeschlossen“-Mitteilung.

VG Hoggle

Bezüglcih der PopUps: Aus dem o.g. Scipt rufe ich eine zweite POPUP MESSAGE Szene auf.
Nur mit den auskommentierten Code geht es nicht.
Ursprünglich wollte ich mal eine einzige POPUP MESSAGE Szene (insbesondere da dieser Code nicht im VD läuft) und die relevanten Parameter über Globale Variablen weitrgeben…

Hier findest Du auch eine Lösung, die eine Push sendet, das alle Fesnter zu sind:
http://www.siio.de/board/thema/pruefung-offene-fenster-nach-uhrzeit/#post-38208

Super, danke! Damit hat es geklappt.

Am Anfang des Skripts eine Variable setzen:
local warning = 0

Innerhalb des Skripts, dann je offenem Fenster diese Variable um eins erhöhen:
warning = warning + 1

Wenn alle Fenster/Türen überprüft wurden, dann checken ob die Variable noch NULL ist, wenn ja, dann Push verschicken:

if warning == 0 then
      for k=1, maxID do
        if phoneID[k] ~= nil then
          fibaro:call(tonumber(phoneID[k]), 'sendPush', 'Alle Fenster und Türen sind geschlossen.')
        end
       end
      Debug('green', "Alle Fenster und Türen sind geschlossen.")
 end

Ich habe das Script bei mir wie oben eingefügt. Allerdings wenn ich das Script starte, erhalte ich Meldungen/Meldung (2 Sensoren sind eingebunden)
das z.B. das Fenster im Bad offen wäre, was aber definitiv zu ist :slight_smile: Was mache ich falsch?
Danke für die Hilfe

Ja hat gut geklappt bei mir auch, AlexM.
ich habe jetzt eine Fenstercheck Szene, die mir auf Knopfdruck in der App ein Pop-UP präsentiert. Ok oder Offen.
Das finde ich praktischer als ein Push, da ich ja eh die App offen habe, wenn ich die Szene starte.

Was ich jetzt noch gerne hätte wäre ein Auflistung der Fenster, die geschlossen werden müssen.

So stelle ich mir das vor.
Im Content Body der Push-Nachricht soll stehen.

Bitte schliessen: Schlaf, Wohn, Balkon, Büro
Oder z.B. nur “Schlaf”. Abhängig davon, was alles offen ist.

D.h. eine If then Schleife müsste die lokalen Variablen durchprüfen und einen String erzeugen.

Kann mir das bitte jemand scripten?

Danke
Andreas

@avichr : Schau dir das mal hier an :

http://forum.fibaro.com/index.php?/topic/22131-check-status-of-doors-and-windows-scene/#entry95979