Hallo,
kann mir evtl jemand helfen?
Ich habe einen Fibaro Single Switch 2 an einen Busch Jäger Bewegungsmelder als Schalter angeschlossen.
Das funktioniert soweit ganz gut.
Jetzt hätte ich gerne das wenn der Single Switch an geht, weitere Lampen angehen, die bereits über 2 Motion Sensoren getrickert werden. In das Script, das ich hier aus dem Forum habe würde ich jetzt gern den Single Switch ebenfalls als tricker nutzen, habe aber keine Ahnung wie ich das genau anstellen muss, da das Script durch Bewegung getrickert wird.
Ich hatte jetzt die Idee über ein VD einen Bewegungsmelder zu Immulieren, bin aber mit Lua nur Laienhaft vertraut.
Gibt es eine Möglichkeit den Single Switch als VD zu einem Motion Sensor zu machen oder den Single Switch in das Script als tricker ein zu arbeiten?
--[[
%% properties
310 value
398 value
%% globals
--]]
local sensors = {310,398}
local delay = 0
local debug = true
function actionsMotion()
fibaro:debug('Führe Aktionen bei Bewegungserkennung aus')
if (fibaro:getGlobal('Sonnenuntergang') == 'Nacht') then
fibaro:debug('Bewegung erkannt, es ist Nacht')
fibaro:call(396,"turnOn")
fibaro:call(395,"turnOn")
fibaro:call(408,"turnOn")
fibaro:debug('Schalte Licht ein')
end
end
function actionsNoMotion()
fibaro:debug('Führe Aktionen nach Bewegungserkennung aus')
if (fibaro:getGlobal('Sonnenuntergang') == 'Nacht') then
fibaro:debug('Keine Bewegung erkannt, es ist Nacht')
fibaro:call(396,"turnOff")
fibaro:call(395,"turnOff")
fibaro:call(408,"turnOff")
fibaro:debug('Schalte Licht aus')
end
end
local instances = tonumber(fibaro:countScenes());
function getSensorStatus()
for i,n in ipairs(sensors) do
if (tonumber(fibaro:getValue(n, "value")) > 0) then
return 1;
end
end
return 0;
end
function getLastBreach()
local breach = 0;
for i,n in ipairs(sensors) do
local nBreach = tonumber(fibaro:getValue(n, "lastBreached"));
if(nBreach > breach) then
breach = nBreach;
end
end
return breach;
end
function checkMotion()
lastBreached = getLastBreach();
time = os.time();
if (debug) then fibaro:debug("Zuletzt ausgelöst: Vor "..(time-lastBreached).." Sekunden"); end
if (getSensorStatus() == 1) then
return true;
end
if ((time-lastBreached)>=delay) then
return false;
end
return true;
end
local lastBreached = getLastBreach()
if (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1) then
if (instances > 1) then fibaro:abort(); end
fibaro:debug('Bewegung erkannt - Starte Timer')
actionsMotion()
while (checkMotion()) do
fibaro:sleep(5000);
end
if (debug) then fibaro:debug("Keine Bewegung mehr erkannt."); end
actionsNoMotion()
end