ich habe das LUA Script von crissxcross für die Rauchmelder ein wenig an meine Bedarfe angepasst um folgendes zu erreichen:
Bei Auslösung (bei mir zum Test mit Fenstersensor) identifiziere Raum mit Rauch, schicke Nachricht an Handy, Schalte Lichter ein, Fahre Rolläden hoch und schalte die Sirene
--[[
%% properties
311 value
%% globals
--]]
if fibaro:countScenes() > 1 then
fibaro:debug("stop scene");
fibaro:abort();
end
local sireneID = 321 -- ID der Sirene
local handyID = 51 -- ID des Handys
local trigger = fibaro:getSourceTrigger()
local smokeID = tonumber(trigger['deviceID'])
local smoke = tonumber(fibaro:getValue(smokeID, "value"))
if (smoke == 1) then
local room = fibaro:getRoomNameByDeviceID(smokeID)
fibaro:debug('Rauch im Raum: ' .. room .. ' erkannt.')
fibaro:call(handyID, 'sendPush', 'ACHTUNG! Rauch im Raum: ' .. room .. ' erkannt!', 'smoke')
-- Licht AN
fibaro:call(302, "turnOn");
fibaro:call(307, "turnOn");
fibaro:call(328, "turnOn");
fibaro:call(410, "turnOn");
fibaro:call(310, "turnOn");
fibaro:call(317, "turnOn");
fibaro:call(303, "turnOn");
-- Rollläden UP
fibaro:call(423, "open");
fibaro:call(425, "open");
fibaro:call(458, "open");
fibaro:call(406, "open");
fibaro:call(408, "open");
-- Sirene AN
fibaro:call(sireneID, 'turnOn');
else
fibaro:debug('Kein Rauch erkannt. Fehlalarm');
end
Starte ich die Szene erhalte ich als erstes
[DEBUG] 12:56:11: line 91: attempt to concatenate local ‘deviceId’ (a nil value)
Nach auslösen der Szene ist es vom Zufall abhängig wie weit sie läuft. In der Regel immer bis “fibaro:call(302, “turnOn”);”. Der Rest ist Glücksache ob es durchläuft.
Sorry für das Format. Weiss nicht wie man formatierten Code einfügt! Cut and Paste sah dann doch sehr unübersichtlich aus
hab es mal formatiert. Beim Posten hast du oben den Button “code”. Damit kannst du Quellcode posten.
So wie ich das sehe, versuchst du die Szene manuell zu starten. Dies funktioniert mit dem Skript nicht, sondern nur, wenn es durch ein Sensor ausgelöst wurde. Zum Testen kannst du auch einfach einen Türsensor nehmen. Geht auch… Oder einfach lang auf den Knopf von dem Rauchmelder drücken. Dann löst dieser auch aus.
Nein, bin auf 4.080. Auch umstellen und Syntaxänderungen bringen das gleiche Ergebnis. Mal läuft die Szene durch, mal stoppt sie mit Einschalten des ersten Lichtes (Zeile 23). Echt strange…
Die Debugs laufen sauber durch und die IDs sind alle korrekt. Die Aktoren schalten aber nicht zuverlässig! Wenn es grundsätzlich nicht funktioniert ist das ja OK. Aber so weiß ich echt nicht wo ich ansetzen soll.
Scheint so als wenn sich die HC2 an den Befehlen “verschluckt”. Habe jetzt mit fibaro:sleep(60); zwischen den Anweisungen gearbeitet. Siehe da es funktioniert!!
--[[
%% properties
311 value
%% globals
--]]
if fibaro:countScenes() > 1 then
fibaro:debug("stop scene");
fibaro:abort();
end
local sireneID = 321 -- ID der Sirene
local handyID = 51 -- ID des Handys
local trigger = fibaro:getSourceTrigger()
local smokeID = tonumber(trigger['deviceID'])
local smoke = tonumber(fibaro:getValue(smokeID, "value"))
if (smoke == 1) then
local room = fibaro:getRoomNameByDeviceID(smokeID)
fibaro:debug('smoke: '.. smoke .. ' erkannt.')
fibaro:debug('Rauch im Raum: ' .. room .. ' .')
fibaro:call(handyID, 'sendPush', 'ACHTUNG! Rauch im Raum: ' .. room .. ' erkannt!', 'smoke')
-- Licht AN
fibaro:call(302, "turnOn");
fibaro:sleep(60);
fibaro:call(307, "turnOn");
fibaro:sleep(60);
fibaro:call(328, "turnOn");
fibaro:sleep(60);
fibaro:call(410, "turnOn");
fibaro:sleep(60);
fibaro:call(310, "turnOn");
fibaro:sleep(60);
fibaro:call(317, "turnOn");
fibaro:sleep(60);
fibaro:call(303, "turnOn");
fibaro:sleep(60);
-- Rollläden UP
fibaro:call(423, "open");
fibaro:sleep(60);
fibaro:call(425, "open");
fibaro:sleep(60);
fibaro:call(458, "open");
fibaro:sleep(60);
fibaro:call(406, "open");
fibaro:sleep(60);
fibaro:call(408, "open");
fibaro:sleep(60);
-- Sirene AN
-- fibaro:call(sireneID, 'turnOn');
fibaro:debug('Sirene: '.. sireneID ..'.')
else
fibaro:debug('Kein Rauch erkannt. Fehlalarm. smoke: ' .. smoke .. ' .');
end