Prüfung offener Fenster

Hallo,

habe mir euer Script genommen und probiert anzupassen.
Ich möchte, dass wenn alle Fenster geschlossen sind, eine Meldung: “Alle Fenster sind geschlossen.” kommt.

Leider kommt diese Meldung auch, wenn ein Fenster offen ist. Woran kann es liegen? DAnke

`–[[
%% properties
%% globals
–]]

– Script läuft nur wenn die Szene gestartet wird

– Fenster/Tür Kontakte –
– Wohnzimmer –
local FensterWZ1 = (tonumber(fibaro:getValue(221, “value”)) == 0);
local FensterWZ2 = (tonumber(fibaro:getValue(214, “value”)) == 0);
local FensterWZ3 = (tonumber(fibaro:getValue(228, “value”)) == 0);

– Küche –
local FensterKueche1 = (tonumber(fibaro:getValue(251, “value”)) == 0);
local FensterKueche2 = (tonumber(fibaro:getValue(184, “value”)) == 0);

– Flur –
local HaustuerFlur = (tonumber(fibaro:getValue(258, “value”)) == 0);

– Schlafzimmer –
local FensterSchlaf1 = (tonumber(fibaro:getValue(237, “value”)) == 0);
local FensterSchlaf2 = (tonumber(fibaro:getValue(244, “value”)) == 0);


– Script –

local startSource = fibaro:getSourceTrigger();

– Fenster Status überprüfen –

if startSource[“type”] == “other”
then
– Wohnzimmer –
if FensterWZ1 then
fibaro:debug(‘Fenster Wohnzimmer Couch ist geschlossen’);
else
fibaro:debug(‘Fenster Wohnzimmer Couch ist geöffnet’);
fibaro:call(4, “sendPush”, “Fenster Wohnzimmer Couch ist geöffnet.”);

end

if FensterWZ2 then
 fibaro:debug('Tür Wohnzimmer ist geschlossen');
 else
 fibaro:debug('Tür Wohnzimmer ist geöffnet');
 fibaro:call(4, "sendPush", "Tür Wohnzimmer ist geöffnet.");

end

 if FensterWZ3 then
 fibaro:debug('Fenster Wohnzimmer Essbereich ist geschlossen');
 else
 fibaro:debug('Fenster Wohnzimmer Essbereich ist geöffnet');
 fibaro:call(4, "sendPush", "Fenster Wohnzimmer Essbereich ist geöffnet.");

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

end

  if FensterKueche2 then
 fibaro:debug('Fenster Küche Strasse ist geschlossen');
 else
 fibaro:debug('Fenster Küche Strasse ist geöffnet');
 fibaro:call(4, "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(4, "sendPush", "Haustür ist geöffnet.");

end

-- Schlafzimmer --
if FensterSchlaf1 then
 fibaro:debug('Fenster Schlafzimmer links ist geschlossen');
 else
 fibaro:debug('Fenster Schlafzimmer links ist geöffnet');
 fibaro:call(4, "sendPush", "Fenster Schlafzimmer links ist geöffnet.");

end

  if FensterSchlaf2 then
 fibaro:debug('Fenster Schlafzimmer rechts ist geschlossen');
 else
 fibaro:debug('Fenster Schlafzimmer rechts ist geöffnet');
 fibaro:call(4, "sendPush", "Fenster Schlafzimmer rechts ist geöffnet.");

end

if (HaustuerKueche and FensterWZ1 and FensterWZ2 and FensterWZ3 and FensterKueche1 and FensterKueche2 and HaustuerFlur and FensterSchlaf1 and FensterSchlaf2)
then
fibaro:debug(‘Fenster oder/und Tür offen’);

  else
fibaro:debug('Alle Fenster und Türen sind geschlossen');
fibaro:call(4, "sendPush", "Alle Fenster und Türen sind geschlossen");

end

end

Hi,

deine if-else-Abfrage ist nicht korrekt. Am besten lädst du dir mal ZeroBraneStudio und kopierst das Skript da rein. Dann wird es dir schon auffallen :wink:

Gruß

danke, habe ich :wink: allerdings kann ich es dort auch nicht erkennen… :frowning:

magst du mir die Lösung verraten? :wink:

Vielleicht fällt es dir jetzt auf :wink:

--[[
%% properties

%% globals
--]]

local FensterWZ1 = (tonumber(fibaro:getValue(327, 'value')) == 0)

if FensterWZ1 then
 fibaro:debug('Fenster Wohnzimmer Couch ist geschlossen')
else
 fibaro:debug('Fenster Wohnzimmer Couch ist geöffnet')
end

if FensterWZ1 then
 fibaro:debug('Alle Fenster und Türen sind geschlossen')
else
 fibaro:debug('Fenster oder/und Tür offen');
end

PS: Bitte poste dein Code beim nächsten Mal mit den Code-Tags, damit es besser lesbar ist. Danke

hmm… ich stehe voll auf dem schlauch :wink:

meinst du, dass ein “not” fehlt? - geht auch nicht :slight_smile:

if not FensterWZ1 then
fibaro:debug(‘Alle Fenster und Türen sind geschlossen’)
else
fibaro:debug(‘Fenster oder/und Tür offen’);
end

Der Code von mir funktioniert. Du hast unten in der if-Else-Abfrage die Ausgabe vertauscht :wink:

ich muss boomt recht geben. Setzte das Script bei mir selber ein. Pünktlich zur definierten Uhrzeit bekomme ich eine verlässliche Statusmeldung.

Danke noch mal fürs Script.

nee… du meinst so? auch dies geht nicht… jetzt habe ich nur noch fehlermeldung… :frowning:

if (HaustuerKueche and FensterWZ1 and FensterWZ2 and FensterWZ3 and FensterKueche1 and FensterKueche2 and HaustuerFlur and FensterSchlaf1 and FensterSchlaf2) then fibaro:debug(‚Alle Fenster und Türen sind geschlossen‘); fibaro:call(4, „sendPush“, „Alle Fenster und Türen sind geschlossen“);

else
fibaro:debug(‚Fenster oder/und Tür offen‘);
end

end

Doch, so ist es richtig. Du musst allerdings die Zeichen ersetzen, wenn du die so kopiert hast.

Gruß

ich habe hier leider gerade völlig den faden verloren… also so (danke für eure bemühungen!!! aber so klappt es auch nicht…:

`–[[ %% properties %% globals –]]

— Script läuft nur wenn die Szene gestartet wird

— Fenster/Tür Kontakte —
— Wohnzimmer —
local FensterWZ1 = (tonumber(fibaro:getValue(221, „value“)) == 0);
local FensterWZ2 = (tonumber(fibaro:getValue(214, „value“)) == 0);
local FensterWZ3 = (tonumber(fibaro:getValue(228, „value“)) == 0);

— Küche —
local FensterKueche1 = (tonumber(fibaro:getValue(251, „value“)) == 0);
local FensterKueche2 = (tonumber(fibaro:getValue(184, „value“)) == 0);

— Flur —
local HaustuerFlur = (tonumber(fibaro:getValue(258, „value“)) == 0);

— Schlafzimmer —
local FensterSchlaf1 = (tonumber(fibaro:getValue(237, „value“)) == 0);
local FensterSchlaf2 = (tonumber(fibaro:getValue(244, „value“)) == 0);

————————–

— Script —

local startSource = fibaro:getSourceTrigger();

— Fenster Status überprüfen —

if startSource[„type“] == „other“
then
— Wohnzimmer —
if FensterWZ1 then
fibaro:debug(‚Fenster Wohnzimmer Couch ist geschlossen‘);
else
fibaro:debug(‚Fenster Wohnzimmer Couch ist geöffnet‘);
fibaro:call(4, „sendPush“, „Fenster Wohnzimmer Couch ist geöffnet.“);

end

if FensterWZ2 then
fibaro:debug(‚Tür Wohnzimmer ist geschlossen‘);
else
fibaro:debug(‚Tür Wohnzimmer ist geöffnet‘);
fibaro:call(4, „sendPush“, „Tür Wohnzimmer ist geöffnet.“);

end

if FensterWZ3 then
fibaro:debug(‚Fenster Wohnzimmer Essbereich ist geschlossen‘);
else
fibaro:debug(‚Fenster Wohnzimmer Essbereich ist geöffnet‘);
fibaro:call(4, „sendPush“, „Fenster Wohnzimmer Essbereich ist geöffnet.“);

end
— Küche —
if FensterKueche1 then
fibaro:debug(‚Fenster Küche Terrasse ist geschlossen‘);
else
fibaro:debug(‚Fenster Küche Terrasse ist geöffnet‘);
fibaro:call(4, „sendPush“, „Fenster Küche Terrasse ist geöffnet.“);

end

if FensterKueche2 then
fibaro:debug(‚Fenster Küche Strasse ist geschlossen‘);
else
fibaro:debug(‚Fenster Küche Strasse ist geöffnet‘);
fibaro:call(4, „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(4, „sendPush“, „Haustür ist geöffnet.“);

end

— Schlafzimmer —
if FensterSchlaf1 then
fibaro:debug(‚Fenster Schlafzimmer links ist geschlossen‘);
else
fibaro:debug(‚Fenster Schlafzimmer links ist geöffnet‘);
fibaro:call(4, „sendPush“, „Fenster Schlafzimmer links ist geöffnet.“);

end

if FensterSchlaf2 then
fibaro:debug(‚Fenster Schlafzimmer rechts ist geschlossen‘);
else
fibaro:debug(‚Fenster Schlafzimmer rechts ist geöffnet‘);
fibaro:call(4, „sendPush“, „Fenster Schlafzimmer rechts ist geöffnet.“);

end

if (HaustuerKueche and FensterWZ1 and FensterWZ2 and FensterWZ3 and FensterKueche1 and FensterKueche2 and HaustuerFlur and FensterSchlaf1 and FensterSchlaf2)
then
fibaro:debug(‚Alle Fenster und Türen sind geschlossen‘);
fibaro:call(4, „sendPush“, „Alle Fenster und Türen sind geschlossen“);
end

end

Was erscheint denn im Debug?

[DEBUG] 09:00:38: Fenster Wohnzimmer Couch ist geschlossen
[DEBUG] 09:00:38: Tür Wohnzimmer ist geöffnet
[DEBUG] 09:00:38: Fenster Wohnzimmer Essbereich ist geöffnet
[DEBUG] 09:00:38: Fenster Küche Terrasse ist geschlossen
[DEBUG] 09:00:38: Fenster Küche Strasse ist geöffnet
[DEBUG] 09:00:38: Haustür ist geschlossen
[DEBUG] 09:00:38: Fenster Schlafzimmer links ist geschlossen
[DEBUG] 09:00:38: Fenster Schlafzimmer rechts ist geschlossen
[DEBUG] 09:00:38: Alle Fenster und Türen sind geschlossen

also die Meldung, dass alle geschlossen sind, ist falsch…

oder anders:

[DEBUG] 09:27:06: Fenster Wohnzimmer Couch ist geschlossen
[DEBUG] 09:27:06: Tür Wohnzimmer ist geschlossen
[DEBUG] 09:27:06: Fenster Wohnzimmer Essbereich ist geschlossen
[DEBUG] 09:27:06: Fenster Küche Terrasse ist geschlossen
[DEBUG] 09:27:06: Fenster Küche Strasse ist geschlossen
[DEBUG] 09:27:06: Haustür ist geschlossen
[DEBUG] 09:27:06: Fenster Schlafzimmer links ist geschlossen
[DEBUG] 09:27:06: Fenster Schlafzimmer rechts ist geschlossen

nun sollte eine Nachricht kommen, dass alle Fenster und Türen zu sind mit:

if ((not HaustuerKueche) and (not FensterWZ1) and (not FensterWZ2) and (not FensterWZ3) and (not FensterKueche1) and (not FensterKueche2) and (not HaustuerFlur) and (not FensterSchlaf1) and (not FensterSchlaf2))
then

fibaro:debug(‘Alle Fenster und Türen sind geschlossen’);
fibaro:call(4, “sendPush”, “Alle Fenster und Türen sind geschlossen”);
end

so, fehler gefunden… es muss heißen:

if (FensterWZ1 and FensterWZ2 and FensterWZ3 and FensterKueche1 and FensterKueche2 and HaustuerFlur and FensterSchlaf1 and FensterSchlaf2)
then

fibaro:debug(‘Alle Fenster und Türen sind geschlossen’);
fibaro:call(4, “sendPush”, “Alle Fenster und Türen sind geschlossen”);
end
end

unter “if (FensterWZ1 and …)” war eine Prüfung zuviel drin…

Danke an alle!