Parallele Szenen bei Steuerung über Fernbedienung

Hallo zusammen,

ich versuche in unserem 3 Generationen Haus eine Alarmanlage über HC2 zu realisieren.
Hierfür habe ich mehrere Fensterkontakte und Bewegungsmelder (alle von Fibaro) inkludiert.
Ich habe mehrere LUA Szene zusammenkopiert, in der die Fernbedienungen verschiedene Variablen steuern und dementsprechend der Alarm scharf/unscharf geschaltet wird und am Ende wird eine Push Nachricht mit den verschiedenen Ausprägungen an mehrere Iphones gesendet.

Soweit funktiniert auch alles, jedoch bekomme ich immer mehrere Push Nachrichten, weil die Szene mehrfach läuft.
fibaro:killScenes bzw. fibaro:abort am Ende des Codes löst das Problem auch nicht. Eine If … then Abfrage am Anfang des Codes kann ich nicht einbauen, da ansonsten die neueste Szene immer wieder abgebrochen und die Variable nicht geändert wird.

–[[
%% properties
109 sceneActivation
%% globals
Alarm_Wohnung1
Alarm_Wohnung2
–]]
local id = 109;
local name = fibaro:getName(id);

–Const
local But1Single = 11;
local But1Double = 31;
local But1Hold = 13;
local But1Release = 15;

local But2Single = 21;
local But2Double = 41;
local But2Hold = 23;
local But2Release = 25;

local But3Single = 12;
local But3Double = 32;
local But3Hold = 14;
local But3Release = 16;

local But4Single = 22;
local But4Double = 42;
local But4Hold = 24;
local But4Release = 26;

MySceneId = tonumber(fibaro:getValue(id, “sceneActivation”));

if(MySceneId == But1Single) then
fibaro:setGlobal(“Alarm_Wohnung1”, “scharf”);
elseif(MySceneId == But1Double) then
fibaro:setGlobal(“Alarm_Wohnung1”, “scharf”);
elseif(MySceneId == But1Hold) then
fibaro:setGlobal(“Alarm_Wohnung1”, “scharf”);
elseif(MySceneId == But1Release) then
fibaro:setGlobal(“Alarm_Wohnung1”, “scharf”);

elseif(MySceneId == But3Single) then
fibaro:setGlobal(“Alarm_Wohnung1”, “unscharf”);
elseif(MySceneId == But3Double) then
fibaro:setGlobal(“Alarm_Wohnung1”, “unscharf”);
elseif(MySceneId == But3Hold) then
fibaro:setGlobal(“Alarm_Wohnung1”, “unscharf”);
elseif(MySceneId == But3Release) then
fibaro:setGlobal(“Alarm_Wohnung1”, “unscharf”);

elseif(MySceneId == But2Single) then
fibaro:setGlobal(“Alarm_Wohnung2”, “scharf”);
elseif(MySceneId == But2Double) then
fibaro:setGlobal(“Alarm_Wohnung2”, “scharf”);
elseif(MySceneId == But2Hold) then
fibaro:setGlobal(“Alarm_Wohnung2”, “scharf”);
elseif(MySceneId == But2Release) then
fibaro:setGlobal(“Alarm_Wohnung2”, “scharf”);

elseif(MySceneId == But4Single) then
fibaro:setGlobal(“Alarm_Wohnung2”, “unscharf”);
elseif(MySceneId == But4Double) then
fibaro:setGlobal(“Alarm_Wohnung2”, “unscharf”);
elseif(MySceneId == But4Hold) then
fibaro:setGlobal(“Alarm_Wohnung2”, “unscharf”);
elseif(MySceneId == But4Release) then
fibaro:setGlobal(“Alarm_Wohnung2”, “unscharf”);
else
fibaro:debug(MySceneId);
end
fibaro:debug(MySceneId);
fibaro:debug(fibaro:countScenes());

local Alarm_Status_text =
“Alarm Status:”
… "\n Wohnung 1: " … fibaro:getGlobalValue(“Alarm_Wohnung1”)
… "\n Wohnung 2: " … fibaro:getGlobalValue(“Alarm_Wohnung2”)
… "\n Wohnung 3: " … fibaro:getGlobalValue(“Alarm_Wohnung3”);

fibaro:debug(Alarm_Status_text);

– Push Iphone 1
fibaro:call(110, “sendPush”, Alarm_Status_text );

fibaro:killScenes();

Hi,

warum soll die Szene denn gestartet werden, wenn sich der Zustand von Alarm_Wohnung1/Alarm_Wohnung2 ändert?

Gruß

Hi boomx,

danke für den Hinweis, das macht natürlich keinen Sinn.

Da ich vermute, dass durch das loslassen des Buttons die Szene zusätzlich aktiviert wird, habe ich die “if But*Release”-Bedingungen entfernt, jedoch bekomme ich weiterhin 2 Push-Nachrichten.

Gruß