Abfrage Fenster auf/zu

Hallo,
ich würde gerne eine Szene programmieren, dass ich mit Start dieser eine Pushnachricht aller Fenster bekomme ob diese zu oder offen sind.
Da ich mich mit LUA leider nicht auskenne und das mit einer Block Szene nicht hinbekomme, wäre ich für Hilfe oder Tipps dankbar.

Vielen Dank
Frank

Hallo fs1997,

Szene könnte so aussehen allerdings ist diese an Variablen gekoppelt.

--[[

%% properties
%% globals
Hausstatus

--]]

-- Global Variablen --
-- Tageszeiten --
local Tagruhe = (fibaro:getGlobalValue("Hausstatus") == "Tagruhe");
local Nachtruhe = (fibaro:getGlobalValue("Hausstatus") == "Nachtruhe");

-- Fenster/Tür Kontakte --
-- Wohnzimmer --
local FensterWZ1 = (tonumber(fibaro:getValue(281, "value")) == 0);
local FensterWZ2 = (tonumber(fibaro:getValue(285, "value")) == 0);

-- Küche --
local FensterKueche = (tonumber(fibaro:getValue(343, "value")) == 0);

-- Flur --
local HaustuerFlur = (tonumber(fibaro:getValue(295, "value")) == 0);

-- Fenster Bad --
local FensterBad = (tonumber(fibaro:getValue(314, "value")) == 0);

--------------------------

-- Script --

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

-- Fenster Status überprüfen --

if Tagruhe or Nachtruhe
   then
    -- Wohnzimmer --
    if FensterWZ1 then
     fibaro:debug('Fenster Wohnzimmer 1 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 1 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 1 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    
    if FensterWZ2 then
     fibaro:debug('Fenster Wohnzimmer 2 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 2 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 2 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Küche --
    if FensterKueche then
     fibaro:debug('Fenster Küche ist geschlossen');
     else
     fibaro:debug('Fenster Küche ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Küche ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Flur --
    if HaustuerFlur then
     fibaro:debug('Fenster Haustür ist geschlossen');
     else
     fibaro:debug('Fenster Haustür ist geöffnet');
     fibaro:call(115, "sendPush", " Haustür ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Fenster Badezimmer --
    if FensterBad then
     fibaro:debug('Fenster Badezimmer ist geschlossen');
     else
     fibaro:debug('Fenster Badezimmer ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Badezimmer ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    

      
end


Cool!

Die hier benutzen globalen Variablen müssen in der HC2 auch als Variablen zusätzlich angelegt werden (es genügt nicht die Definition hier über LUA)?

Warum hast Du in Tagruhe und Nachtruhe unterschieden?

Cool, 1000 Dank. Werde ich heute Abend direkt testen.

Genau sie Variablen müßtest du anlegen.
Gehe mal davon aus das dein ganzen System anders aufgelegt ist als meins und haben das Script umgeschrieben.
Somit wird das Script aktiviert wenn die Szene gestartet wird und die Variablen fallen weg.

Bei mir hat das Haus 3 Modis (Tagruhe/Nachtruhe/Anwesend)
Die ersten beiden wenn sich niemand im Haus befindet oder wir am Schlummern sind.

  • Kamera wird scharf geschaltet, bei Nachtruhe und Auslösung wird Aussenbeleuchtung aktiviert und Bild geknipst.
  • Verschieden Heizmodis, Tagruhe Temp etwas höher als bei Nachtruhe. Anwesenheit aktiviert den Heizplan.
  • Verbraucher (Fernseher/Wlan/Hub etc) Schalten weg (Tagruhe/Nachtruhe), Anwesenheit aktiviert das ganze
  • etc

Bewegungsmelder und Uhrzeit bestimmen die Modis. Ist für mich die beste Lösung um zu unterscheiden ob jemand zu hause ist oder nicht und Tag oder Nacht.

Anbei nochmal das Script ohne Variablen.

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

-- Script läuft nur wenn die Szene gestartet wird

-- Fenster/Tür Kontakte --
-- Wohnzimmer --
local FensterWZ1 = (tonumber(fibaro:getValue(444, "value")) == 0);
local FensterWZ2 = (tonumber(fibaro:getValue(450, "value")) == 0);

-- Küche --
local FensterKueche = (tonumber(fibaro:getValue(441, "value")) == 0);

-- Flur --
local HaustuerFlur = (tonumber(fibaro:getValue(447, "value")) == 0);

-- Fenster Bad --
local FensterBad = (tonumber(fibaro:getValue(464, "value")) == 0);

--------------------------

-- Script --

local startSource = fibaro:getSourceTrigger();

-- Fenster Status überprüfen --

if startSource["type"] == "other"
   then
    -- Wohnzimmer --
    if FensterWZ1 then
     fibaro:debug('Fenster Wohnzimmer 1 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 1 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 1 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    
    if FensterWZ2 then
     fibaro:debug('Fenster Wohnzimmer 2 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 2 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 2 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Küche --
    if FensterKueche then
     fibaro:debug('Fenster Küche ist geschlossen');
     else
     fibaro:debug('Fenster Küche ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Küche ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Flur --
    if HaustuerFlur then
     fibaro:debug('Fenster Haustür ist geschlossen');
     else
     fibaro:debug('Fenster Haustür ist geöffnet');
     fibaro:call(115, "sendPush", " Haustür ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Fenster Badezimmer --
    if FensterBad then
     fibaro:debug('Fenster Badezimmer ist geschlossen');
     else
     fibaro:debug('Fenster Badezimmer ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Badezimmer ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    

      
end


Wie gehabt einfach die IDs ändern und an die Räume anpassen.

Gruß Alex

Danke schön!

Hat super geklappt. Vielen Dank dafür.

Bei mir kommen aber nur 2 der 4 Push Nachrichten auf dem Handy an, ist das von Fibaro begrenzt? (habe nur 4 Fenster/Türkontakte)

Ich habe es gestern mit drei Kontakten umgesetzt und bei mir kamen alle der an.
Hast Du geprüft, ob es ggf. bei der ID einen Zahlendreher oä gab?

Bei mir funktioniert es auch bei 4 Kontakten.
Nur zur Vorsicht, die Push Nachricht kommt nur bei geöffneten Fenster. Wenn Du eine Push Nachricht auch bei geschlossenem Fenster haben willst, musst Du eine Zeile einfügen.

LOL, klar waren auch nur zwei Fenster offen.

Derzeit erfolgt nur ein Push, wenn ein Fenster offen ist.
Wie könnte man das Script am besten erweitern, um für den Fall, dass “Alle Fenster sind zu - OK” eine Info zu bekommen?
Beim Testen habe ich mich manchmal gefragt, ob ich auch den Button korrekt erwischt habe…So hätte man dazu sogleich eine bestätigung und kann beruhigt gehen.

Versuch mal den Code einzufügen, sollte eigentlich klappen :slight_smile:

 if ((not FensterBad) and (not HaustuerKueche) and (not FensterWZ1) and (not FensterWZ2))
    then
    fibaro:debug('Alle Fenster zu');
    fibaro:call(ID, "sendPush", "Fenster sind geschlossen alles gut");
 end 

Hallo Alex, funktioniert nicht.
Wenn alle Fenster/Türen zu sind kommt keine Benachrichtigung.

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

-- Script läuft nur wenn die Szene gestartet wird

-- Fenster/Tür Kontakte --
-- Wohnzimmer --
local FensterWZ1 = (tonumber(fibaro:getValue(58, "value")) == 0);

-- Küche --
local FensterKueche = (tonumber(fibaro:getValue(33, "value")) == 0);

-- Flur --
local HaustuerFlur = (tonumber(fibaro:getValue(19, "value")) == 0);

-- Fenster Hauswirtschaftsraum --
local FensterHWR = (tonumber(fibaro:getValue(253, "value")) == 0);

--------------------------

-- Script --
PhoneAndreas = 40;       -- ID Telefon Andreas, hier ändern.

local startSource = fibaro:getSourceTrigger();

-- Fenster Status überprüfen --

if startSource["type"] == "other"
   then
    -- Wohnzimmer --
    if FensterWZ1 then
     fibaro:debug('Fenster Wohnzimmer Terrassentür ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer Terrassentür ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Wohnzimmer Terrassentür ist geöffnet");

    end
    -- Küche --
    if FensterKueche then
     fibaro:debug('Fenster Küche ist geschlossen');
     else
     fibaro:debug('Fenster Küche ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Küche ist geöffnet");

    end
    -- Flur --
    if HaustuerFlur then
     fibaro:debug('Fenster Haustür ist geschlossen');
     else
     fibaro:debug('Fenster Haustür ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", " Haustür ist geöffnet");

    end
    -- Fenster Hauswirtschaftsraum --
    if FensterHWR then
     fibaro:debug('Fenster Hauswirtschaftsraum ist geschlossen');
     else
     fibaro:debug('Fenster Hauswirtschaftsraum ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Hauswirtschaftsraum ist geöffnet");

    end
  
end

if ((not FensterWZ1) and (not FensterKueche) and (not HaustuerFlur) and (not FensterHWR))
    then
    fibaro:debug('Alle Fenster zu');
    fibaro:call(PhoneAndreas, "sendPush", "Fenster sind geschlossen alles gut");
end  

Das Hört sich gut an!
danke.
Werde ich heute Abend testen.

Hi Andreas,
muss das"end" aus Zeile 65 ans Ende? In Zeile 72?

Gehirnfurz, sorry kann auch nicht funktionieren.

Nochmal das Script wie es sein sollte :slight_smile:

@Andreas “not” löschen und “end” versetzen.

--[[

%% properties
%% globals
Hausstatus

--]]

-- Fenster/Tür Kontakte --
-- Wohnzimmer --
local FensterWZ1 = (tonumber(fibaro:getValue(444, "value")) == 0);
local FensterWZ2 = (tonumber(fibaro:getValue(450, "value")) == 0);

-- Küche --
local FensterKueche = (tonumber(fibaro:getValue(441, "value")) == 0);

-- Flur --
local HaustuerFlur = (tonumber(fibaro:getValue(447, "value")) == 0);

-- Fenster Bad --
local FensterBad = (tonumber(fibaro:getValue(464, "value")) == 0);

--------------------------

-- Script --

local startSource = fibaro:getSourceTrigger();

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

-- Fenster Status überprüfen --

if startSource["type"] == "other"
   then
    -- Wohnzimmer --
    if FensterWZ1 then
     fibaro:debug('Fenster Wohnzimmer 1 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 1 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 1 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    
    if FensterWZ2 then
     fibaro:debug('Fenster Wohnzimmer 2 ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer 2 ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Wohnzimmer 2 ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Küche --
    if FensterKueche then
     fibaro:debug('Fenster Küche ist geschlossen');
     else
     fibaro:debug('Fenster Küche ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Küche ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Flur --
    if HaustuerFlur then
     fibaro:debug('Fenster Haustür ist geschlossen');
     else
     fibaro:debug('Fenster Haustür ist geöffnet');
     fibaro:call(115, "sendPush", " Haustür ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    -- Fenster Badezimmer --
    if FensterBad then
     fibaro:debug('Fenster Badezimmer ist geschlossen');
     else
     fibaro:debug('Fenster Badezimmer ist geöffnet');
     fibaro:call(115, "sendPush", "Fenster Badezimmer ist geöffnet, Abwesendheit wird nicht gesetzt");

    end
    
 if (HaustuerFlur and FensterWZ1 and FensterWZ2 and FensterKueche and FensterBad)
    then
    fibaro:debug('Alle Fenster zu');
    fibaro:call(115, "sendPush", "Alle Fenster sind geschlossen");
 end    
      
end


Danke Alex,
so funktioniert es jetzt bei mir!

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

-- Script läuft nur wenn die Szene gestartet wird

-- Fenster/Tür Kontakte --
-- Wohnzimmer --
local FensterWZ1 = (tonumber(fibaro:getValue(58, "value")) == 0);

-- Küche --
local FensterKueche = (tonumber(fibaro:getValue(33, "value")) == 0);

-- Flur --
local HaustuerFlur = (tonumber(fibaro:getValue(19, "value")) == 0);

-- Fenster Hauswirtschaftsraum --
local FensterHWR = (tonumber(fibaro:getValue(253, "value")) == 0);

--------------------------

-- Script --
PhoneAndreas = 40;       -- ID Telefon Andreas, hier ändern.

local startSource = fibaro:getSourceTrigger();

-- Fenster Status überprüfen --

if startSource["type"] == "other"
   then
    -- Wohnzimmer --
    if FensterWZ1 then
     fibaro:debug('Fenster Wohnzimmer Terrassentür ist geschlossen');
     else
     fibaro:debug('Fenster Wohnzimmer Terrassentür ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Wohnzimmer Terrassentür ist geöffnet");

    end
    -- Küche --
    if FensterKueche then
     fibaro:debug('Fenster Küche ist geschlossen');
     else
     fibaro:debug('Fenster Küche ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Küche ist geöffnet");

    end
    -- Flur --
    if HaustuerFlur then
     fibaro:debug('Haustür ist geschlossen');
     else
     fibaro:debug('Haustür ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", " Haustür ist geöffnet");

    end
    -- Fenster Hauswirtschaftsraum --
    if FensterHWR then
     fibaro:debug('Fenster Hauswirtschaftsraum ist geschlossen');
     else
     fibaro:debug('Fenster Hauswirtschaftsraum ist geöffnet');
     fibaro:call(PhoneAndreas, "sendPush", "Fenster Hauswirtschaftsraum ist geöffnet");

    end
  if (FensterWZ1 and FensterKueche and HaustuerFlur and FensterHWR)
    then
    fibaro:debug('Alle Fenster zu');
    fibaro:call(PhoneAndreas, "sendPush", "Fenster sind geschlossen alles gut");

  end
  
end

Habe noch zwei Fensterkontakte liegen, kann ich ja gleich mal erweitern :slight_smile: