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.
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
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.
--[[
%% 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
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.
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
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
--[[
%% 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
--[[
%% 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